<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git, branch v4.1.1</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>doc: Added release notes for 4.1.1 release</title>
<updated>2018-06-25T15:33:40+00:00</updated>
<author>
<name>ShyamsundarR</name>
<email>srangana@redhat.com</email>
</author>
<published>2018-06-25T15:23:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=b17acca6d00b31a72bf8bcb81ab3bbb5787313c1'/>
<id>b17acca6d00b31a72bf8bcb81ab3bbb5787313c1</id>
<content type='text'>
fixes: bz#1590442

Change-Id: I4144e79314a1ee927751946f26e7d79d337c819c
Signed-off-by: ShyamsundarR &lt;srangana@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fixes: bz#1590442

Change-Id: I4144e79314a1ee927751946f26e7d79d337c819c
Signed-off-by: ShyamsundarR &lt;srangana@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>glusterfs: access trusted peer group via remote-host command</title>
<updated>2018-06-25T13:39:52+00:00</updated>
<author>
<name>Mohit Agrawal</name>
<email>moagrawa@redhat.com</email>
</author>
<published>2018-06-20T10:43:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=17f9843a9a355b3d72422dd979b1491233aede34'/>
<id>17f9843a9a355b3d72422dd979b1491233aede34</id>
<content type='text'>
Problem: In SSL environment the user is able to access volume
         via remote-host command without adding node in a trusted pool

Solution: Change the list of rpc program in glusterd.c at the
          time of initialization while SSL is enabled

&gt; Change-Id: I987e433b639e68ad17b77b6452df1e22dbe0f199
&gt; cherry picked from commit 234d611160840899bcfd5ab1c17a6253673d38ed

BUG: 1593525
fixes: bz#1593525
Change-Id: Ice4eda3d8104a4d5641de3cffd7249e46080d48f
Signed-off-by: Mohit Agrawal &lt;moagrawa@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: In SSL environment the user is able to access volume
         via remote-host command without adding node in a trusted pool

Solution: Change the list of rpc program in glusterd.c at the
          time of initialization while SSL is enabled

&gt; Change-Id: I987e433b639e68ad17b77b6452df1e22dbe0f199
&gt; cherry picked from commit 234d611160840899bcfd5ab1c17a6253673d38ed

BUG: 1593525
fixes: bz#1593525
Change-Id: Ice4eda3d8104a4d5641de3cffd7249e46080d48f
Signed-off-by: Mohit Agrawal &lt;moagrawa@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gcron: create the lockfile if it is missing</title>
<updated>2018-06-20T17:38:45+00:00</updated>
<author>
<name>Niels de Vos</name>
<email>ndevos@redhat.com</email>
</author>
<published>2018-06-12T07:51:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=acf0481bbf34e28d9aa850bd6c317b22bacae9bb'/>
<id>acf0481bbf34e28d9aa850bd6c317b22bacae9bb</id>
<content type='text'>
The lockfile for the job may not exist yet. If that is the case, it
should be created upon the first time it is accessed.

Change-Id: I4da2b3ecdb79cc63ed82cc7bfa026c8f08d4d043
Fixes: bz#1590195
Signed-off-by: Niels de Vos &lt;ndevos@redhat.com&gt;
(cherry picked from commit 7005b1a336e483ec150c2f924a618dcfe197db0b)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The lockfile for the job may not exist yet. If that is the case, it
should be created upon the first time it is accessed.

Change-Id: I4da2b3ecdb79cc63ed82cc7bfa026c8f08d4d043
Fixes: bz#1590195
Signed-off-by: Niels de Vos &lt;ndevos@redhat.com&gt;
(cherry picked from commit 7005b1a336e483ec150c2f924a618dcfe197db0b)
</pre>
</div>
</content>
</entry>
<entry>
<title>gcron: catch OSError as well as IOError</title>
<updated>2018-06-18T13:19:34+00:00</updated>
<author>
<name>Niels de Vos</name>
<email>ndevos@redhat.com</email>
</author>
<published>2018-06-12T07:49:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=45edc547a827c4e38b7ec82de6d96e77ca5e593f'/>
<id>45edc547a827c4e38b7ec82de6d96e77ca5e593f</id>
<content type='text'>
In case os.open() fails because the file does not exist, an OSError is
raised. To prevent the script to abort uncleanly, catch the OSError in
addition to the IOError.

Change-Id: I48e5b23e17d63639cc33db51b4229249a9887880
Fixes: bz#1590195
Signed-off-by: Niels de Vos &lt;ndevos@redhat.com&gt;
(cherry picked from commit 26b52694feb04c98e6c9436bcd4e23e1687f0237)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In case os.open() fails because the file does not exist, an OSError is
raised. To prevent the script to abort uncleanly, catch the OSError in
addition to the IOError.

Change-Id: I48e5b23e17d63639cc33db51b4229249a9887880
Fixes: bz#1590195
Signed-off-by: Niels de Vos &lt;ndevos@redhat.com&gt;
(cherry picked from commit 26b52694feb04c98e6c9436bcd4e23e1687f0237)
</pre>
</div>
</content>
</entry>
<entry>
<title>storage/posix: Handle ENOSPC correctly in zero_fill</title>
<updated>2018-06-14T08:39:42+00:00</updated>
<author>
<name>Pranith Kumar K</name>
<email>pkarampu@redhat.com</email>
</author>
<published>2018-06-13T06:47:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=67b2233055091fad6ad7d14c65e3bc12871bab82'/>
<id>67b2233055091fad6ad7d14c65e3bc12871bab82</id>
<content type='text'>
Change-Id: Icc521d86cc510f88b67d334b346095713899087a
fixes: bz#1591185
Signed-off-by: Pranith Kumar K &lt;pkarampu@redhat.com&gt;
(cherry picked from commit 6ef91480f9e75f63100585bfd19694deb0c2457b)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Icc521d86cc510f88b67d334b346095713899087a
fixes: bz#1591185
Signed-off-by: Pranith Kumar K &lt;pkarampu@redhat.com&gt;
(cherry picked from commit 6ef91480f9e75f63100585bfd19694deb0c2457b)
</pre>
</div>
</content>
</entry>
<entry>
<title>doc: Updated final release notes for 4.1.0</title>
<updated>2018-06-12T14:52:10+00:00</updated>
<author>
<name>ShyamsundarR</name>
<email>srangana@redhat.com</email>
</author>
<published>2018-06-12T14:50:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=b4f4480094b7c3ebda3319df0c3f96efd08b2176'/>
<id>b4f4480094b7c3ebda3319df0c3f96efd08b2176</id>
<content type='text'>
Fixes: bz#1575386

Change-Id: Iad79e16d76a55a2c3fc46629f79fec677bad597f
Signed-off-by: ShyamsundarR &lt;srangana@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes: bz#1575386

Change-Id: Iad79e16d76a55a2c3fc46629f79fec677bad597f
Signed-off-by: ShyamsundarR &lt;srangana@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>protocol/server: Fix xdata leak in seek fop</title>
<updated>2018-06-12T07:08:02+00:00</updated>
<author>
<name>Pranith Kumar K</name>
<email>pkarampu@redhat.com</email>
</author>
<published>2018-06-11T07:33:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=2cca9b4f1ca853c20be43213400f9a8803a71a7d'/>
<id>2cca9b4f1ca853c20be43213400f9a8803a71a7d</id>
<content type='text'>
Change-Id: I6125283ed22c04564f0b77bb7a50579a83e02eb0
fixes: bz#1590128
Signed-off-by: Pranith Kumar K &lt;pkarampu@redhat.com&gt;
(cherry picked from commit fd5b48ea0afd907deb08604415bee14ab65f378b)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I6125283ed22c04564f0b77bb7a50579a83e02eb0
fixes: bz#1590128
Signed-off-by: Pranith Kumar K &lt;pkarampu@redhat.com&gt;
(cherry picked from commit fd5b48ea0afd907deb08604415bee14ab65f378b)
</pre>
</div>
</content>
</entry>
<entry>
<title>posix/ctime: Fix fops racing in updating mtime/atime</title>
<updated>2018-06-08T12:56:57+00:00</updated>
<author>
<name>Kotresh HR</name>
<email>khiremat@redhat.com</email>
</author>
<published>2018-06-01T05:48:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=acd9a863e80a7f56e25b3ed151a4711126de3208'/>
<id>acd9a863e80a7f56e25b3ed151a4711126de3208</id>
<content type='text'>
In distributed systems, there could be races with fops
updating mtime/atime which could result in different
mtime/atime for same file. So updating them only if
time is greater than the existing makes sure, only
the highest time is retained. If the mtime/atime
update comes from the explicit utime syscall, it is
allowed to set to previous time.

Thanks Xavi for helping in rooting the issue.

Backport of:
&gt; Patch: https://review.gluster.org/#/c/20120/
&gt; BUG: 1584981
&gt; Change-Id: If1230a75b96d7f9a828795189fcc699049e7826e
&gt; Signed-off-by: Kotresh HR &lt;khiremat@redhat.com&gt;
(cherry picked from commit a6f0e7a4f1ca203762cae2ed5e426b52124c74dc)


fixes: bz#1585894
Change-Id: If1230a75b96d7f9a828795189fcc699049e7826e
Signed-off-by: Kotresh HR &lt;khiremat@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In distributed systems, there could be races with fops
updating mtime/atime which could result in different
mtime/atime for same file. So updating them only if
time is greater than the existing makes sure, only
the highest time is retained. If the mtime/atime
update comes from the explicit utime syscall, it is
allowed to set to previous time.

Thanks Xavi for helping in rooting the issue.

Backport of:
&gt; Patch: https://review.gluster.org/#/c/20120/
&gt; BUG: 1584981
&gt; Change-Id: If1230a75b96d7f9a828795189fcc699049e7826e
&gt; Signed-off-by: Kotresh HR &lt;khiremat@redhat.com&gt;
(cherry picked from commit a6f0e7a4f1ca203762cae2ed5e426b52124c74dc)


fixes: bz#1585894
Change-Id: If1230a75b96d7f9a828795189fcc699049e7826e
Signed-off-by: Kotresh HR &lt;khiremat@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>features/shard: Fix missing unlock in shard_fsync_shards_cbk()</title>
<updated>2018-06-06T14:00:52+00:00</updated>
<author>
<name>Vijay Bellur</name>
<email>vbellur@redhat.com</email>
</author>
<published>2018-06-01T00:11:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=9757ee891cf45abd6380fd693639f5c4cd199c2f'/>
<id>9757ee891cf45abd6380fd693639f5c4cd199c2f</id>
<content type='text'>
Backport of:
&gt; Change-Id: I745a98e957cf3c6ba69247fcf6b58dd05cf59c3c
&gt; Signed-off-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
&gt; (cherry picked from commit b21f742f96d46b4adfa87281dd9a2e48fea8d031)
&gt; BUG: 789278

Change-Id: I745a98e957cf3c6ba69247fcf6b58dd05cf59c3c
fixes: bz#1587908
Signed-off-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
(cherry picked from commit b21f742f96d46b4adfa87281dd9a2e48fea8d031)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Backport of:
&gt; Change-Id: I745a98e957cf3c6ba69247fcf6b58dd05cf59c3c
&gt; Signed-off-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
&gt; (cherry picked from commit b21f742f96d46b4adfa87281dd9a2e48fea8d031)
&gt; BUG: 789278

Change-Id: I745a98e957cf3c6ba69247fcf6b58dd05cf59c3c
fixes: bz#1587908
Signed-off-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
(cherry picked from commit b21f742f96d46b4adfa87281dd9a2e48fea8d031)
</pre>
</div>
</content>
</entry>
<entry>
<title>protocol/client: Don't send fops till SETVOLUME is complete</title>
<updated>2018-05-31T20:29:45+00:00</updated>
<author>
<name>Raghavendra G</name>
<email>rgowdapp@redhat.com</email>
</author>
<published>2018-05-30T04:04:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=4f591e873c0a38b662910f8e8a5768fd3e9bbeaa'/>
<id>4f591e873c0a38b662910f8e8a5768fd3e9bbeaa</id>
<content type='text'>
An earlier commit set conf-&gt;connected just after rpc layer sends
RPC_CLNT_CONNECT event. However, success of socket level connection
connection doesn't indicate brick stack is ready to receive fops, as
an handshake has to be done b/w client and server after
RPC_CLNT_CONNECT event. Any fop sent to brick in the window between,
* protocol/client receiving RPC_CLNT_CONNECT event
* protocol/client receiving a successful setvolume response

can end up accessing an uninitialized brick stack. So, set
conf-&gt;connected only after a successful SETVOLUME.

Change-Id: I139a03d2da6b0d95a0d68391fcf54b00e749decf
fixes: bz#1584633
Signed-off-by: Raghavendra G &lt;rgowdapp@redhat.com&gt;
(cherry picked from commit 430e4872db43447c8a15b638760d23c188257139)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
An earlier commit set conf-&gt;connected just after rpc layer sends
RPC_CLNT_CONNECT event. However, success of socket level connection
connection doesn't indicate brick stack is ready to receive fops, as
an handshake has to be done b/w client and server after
RPC_CLNT_CONNECT event. Any fop sent to brick in the window between,
* protocol/client receiving RPC_CLNT_CONNECT event
* protocol/client receiving a successful setvolume response

can end up accessing an uninitialized brick stack. So, set
conf-&gt;connected only after a successful SETVOLUME.

Change-Id: I139a03d2da6b0d95a0d68391fcf54b00e749decf
fixes: bz#1584633
Signed-off-by: Raghavendra G &lt;rgowdapp@redhat.com&gt;
(cherry picked from commit 430e4872db43447c8a15b638760d23c188257139)
</pre>
</div>
</content>
</entry>
</feed>
del'>-int32_t</div><div class='del'>-afr_getdents (call_frame_t *frame, xlator_t *this,</div><div class='del'>-	      fd_t *fd, size_t size, off_t offset, int32_t flag)</div><div class='del'>-{</div><div class='del'>-	afr_private_t * priv       = NULL;</div><div class='del'>-	xlator_t **     children   = NULL;</div><div class='del'>-	int             call_child = 0;</div><div class='del'>-	afr_local_t     *local     = NULL;</div><div class='del'>-</div><div class='del'>-	int32_t op_ret   = -1;</div><div class='del'>-	int32_t op_errno = 0;</div><div class='del'>-</div><div class='del'>-	VALIDATE_OR_GOTO (frame, out);</div><div class='del'>-	VALIDATE_OR_GOTO (this, out);</div><div class='del'>-	VALIDATE_OR_GOTO (this-&gt;private, out);</div><div class='del'>-</div><div class='del'>-	priv     = this-&gt;private;</div><div class='del'>-	children = priv-&gt;children;</div><div class='del'>-</div><div class='del'>-	ALLOC_OR_GOTO (local, afr_local_t, out);</div><div class='del'>-</div><div class='del'>-	call_child = afr_first_up_child (priv);</div><div class='del'>-	if (call_child == -1) {</div><div class='del'>-		op_errno = ENOTCONN;</div><div class='del'>-		gf_log (this-&gt;name, GF_LOG_DEBUG,</div><div class='del'>-			"no child is up.");</div><div class='del'>-		goto out;</div><div class='del'>-	}</div><div class='del'>-</div><div class='del'>-	local-&gt;cont.getdents.last_tried = call_child;</div><div class='del'>-</div><div class='del'>-	local-&gt;fd                   = fd_ref (fd);</div><div class='del'>-</div><div class='del'>-	local-&gt;cont.getdents.size   = size;</div><div class='del'>-	local-&gt;cont.getdents.offset = offset;</div><div class='del'>-	local-&gt;cont.getdents.flag   = flag;</div><div class='del'>-	</div><div class='del'>-	frame-&gt;local = local;</div><div class='del'>-</div><div class='del'>-	STACK_WIND (frame, afr_getdents_cbk,</div><div class='del'>-		    children[call_child], children[call_child]-&gt;fops-&gt;getdents,</div><div class='del'>-		    fd, size, offset, flag);</div><div class='del'>-</div><div class='del'>-	op_ret = 0;</div><div class='del'>-out:</div><div class='del'>-	if (op_ret == -1) {</div><div class='del'>-		AFR_STACK_UNWIND (getdents, frame, op_ret, op_errno,</div><div class='del'>-                                  NULL, 0);</div><div class='del'>-	}</div><div class='del'>-</div><div class='del'>-	return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-</div><div class='head'>diff --git a/xlators/cluster/afr/src/afr-dir-write.c b/xlators/cluster/afr/src/afr-dir-write.c<br/>index 14d3e28c451..9d7e74e7871 100644<br/>--- a/<a href='/cgit/glusterfs.git/tree/xlators/cluster/afr/src/afr-dir-write.c?h=v3.6.9&amp;id=a79d50fc723ffa4d93fa8f567676b18591fac5fe'>xlators/cluster/afr/src/afr-dir-write.c</a><br/>+++ b/<a href='/cgit/glusterfs.git/tree/xlators/cluster/afr/src/afr-dir-write.c?h=v3.6.9&amp;id=31e69430140538f5fee3e8dc89bd2971917820d1'>xlators/cluster/afr/src/afr-dir-write.c</a></div><div class='hunk'>@@ -2007,144 +2007,3 @@ out:</div><div class='ctx'> </div><div class='ctx'> /* }}} */</div><div class='ctx'> </div><div class='del'>-/* {{{ setdents */</div><div class='del'>-</div><div class='del'>-int32_t</div><div class='del'>-afr_setdents_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, </div><div class='del'>-		       int32_t op_ret, int32_t op_errno)</div><div class='del'>-{</div><div class='del'>-	afr_local_t *   local = NULL;</div><div class='del'>-	afr_private_t * priv  = NULL;</div><div class='del'>-</div><div class='del'>-	int call_count  = -1;</div><div class='del'>-	int child_index = (long) cookie;</div><div class='del'>-</div><div class='del'>-	local = frame-&gt;local;</div><div class='del'>-	priv = this-&gt;private;</div><div class='del'>-</div><div class='del'>-	LOCK (&amp;frame-&gt;lock);</div><div class='del'>-	{</div><div class='del'>-		if (afr_fop_failed (op_ret, op_errno))</div><div class='del'>-			afr_transaction_fop_failed (frame, this, child_index);</div><div class='del'>-</div><div class='del'>-		if ((op_ret != -1) &amp;&amp; (local-&gt;success_count == 0)) {</div><div class='del'>-			local-&gt;op_ret = op_ret;</div><div class='del'>-			local-&gt;success_count++;</div><div class='del'>-		}</div><div class='del'>-</div><div class='del'>-		local-&gt;op_errno = op_errno;</div><div class='del'>-	}</div><div class='del'>-	UNLOCK (&amp;frame-&gt;lock);</div><div class='del'>-</div><div class='del'>-	call_count = afr_frame_return (frame);</div><div class='del'>-</div><div class='del'>-	if (call_count == 0) {</div><div class='del'>-		local-&gt;transaction.resume (frame, this);</div><div class='del'>-	}</div><div class='del'>-	</div><div class='del'>-	return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-int32_t</div><div class='del'>-afr_setdents_wind (call_frame_t *frame, xlator_t *this)</div><div class='del'>-{</div><div class='del'>-	afr_local_t *local = NULL;</div><div class='del'>-	afr_private_t *priv = NULL;</div><div class='del'>-</div><div class='del'>-	int call_count = -1;</div><div class='del'>-	int i = 0;</div><div class='del'>-</div><div class='del'>-	local = frame-&gt;local;</div><div class='del'>-	priv  = this-&gt;private;</div><div class='del'>-</div><div class='del'>-	call_count = afr_up_children_count (priv-&gt;child_count, local-&gt;child_up);</div><div class='del'>-</div><div class='del'>-	if (call_count == 0) {</div><div class='del'>-		local-&gt;transaction.resume (frame, this);</div><div class='del'>-		return 0;</div><div class='del'>-	}</div><div class='del'>-</div><div class='del'>-	local-&gt;call_count = call_count;</div><div class='del'>-</div><div class='del'>-	for (i = 0; i &lt; priv-&gt;child_count; i++) {				</div><div class='del'>-		if (local-&gt;child_up[i]) {</div><div class='del'>-			STACK_WIND_COOKIE (frame, afr_setdents_wind_cbk,	</div><div class='del'>-					   (void *) (long) i,</div><div class='del'>-					   priv-&gt;children[i], </div><div class='del'>-					   priv-&gt;children[i]-&gt;fops-&gt;setdents,</div><div class='del'>-					   local-&gt;fd, local-&gt;cont.setdents.flags,</div><div class='del'>-					   local-&gt;cont.setdents.entries, </div><div class='del'>-					   local-&gt;cont.setdents.count);</div><div class='del'>-			</div><div class='del'>-			if (!--call_count)</div><div class='del'>-				break;</div><div class='del'>-		}</div><div class='del'>-	}</div><div class='del'>-	</div><div class='del'>-	return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-int32_t</div><div class='del'>-afr_setdents_done (call_frame_t *frame, xlator_t *this)</div><div class='del'>-{</div><div class='del'>-	afr_local_t * local = frame-&gt;local;</div><div class='del'>-</div><div class='del'>-	AFR_STACK_UNWIND (setdents, frame, local-&gt;op_ret, local-&gt;op_errno);</div><div class='del'>-	</div><div class='del'>-	return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-int32_t</div><div class='del'>-afr_setdents (call_frame_t *frame, xlator_t *this,</div><div class='del'>-	      fd_t *fd, int32_t flags, dir_entry_t *entries, int32_t count)</div><div class='del'>-{</div><div class='del'>-	afr_private_t * priv  = NULL;</div><div class='del'>-	afr_local_t   * local = NULL;</div><div class='del'>-	</div><div class='del'>-	int ret = -1;</div><div class='del'>-</div><div class='del'>-	int op_ret   = -1;</div><div class='del'>-	int op_errno = 0;</div><div class='del'>-</div><div class='del'>-	VALIDATE_OR_GOTO (frame, out);</div><div class='del'>-	VALIDATE_OR_GOTO (this, out);</div><div class='del'>-	VALIDATE_OR_GOTO (this-&gt;private, out);</div><div class='del'>-</div><div class='del'>-	priv = this-&gt;private;</div><div class='del'>-</div><div class='del'>-	ALLOC_OR_GOTO (local, afr_local_t, out);</div><div class='del'>-</div><div class='del'>-	ret = AFR_LOCAL_INIT (local, priv);</div><div class='del'>-	if (ret &lt; 0) {</div><div class='del'>-		op_errno = -ret;</div><div class='del'>-		goto out;</div><div class='del'>-	}</div><div class='del'>-</div><div class='del'>-	frame-&gt;local = local;</div><div class='del'>-</div><div class='del'>-	local-&gt;fd = fd_ref (fd);</div><div class='del'>-</div><div class='del'>-	local-&gt;cont.setdents.flags   = flags;</div><div class='del'>-	local-&gt;cont.setdents.entries = entries;</div><div class='del'>-	local-&gt;cont.setdents.count   = count;</div><div class='del'>-</div><div class='del'>-	local-&gt;transaction.fop  = afr_setdents_wind;</div><div class='del'>-	local-&gt;transaction.done = afr_setdents_done;</div><div class='del'>-</div><div class='del'>-	local-&gt;transaction.basename = NULL;</div><div class='del'>-</div><div class='del'>-	afr_transaction (frame, this, AFR_ENTRY_TRANSACTION);</div><div class='del'>-</div><div class='del'>-	op_ret = 0;</div><div class='del'>-out:</div><div class='del'>-	if (op_ret == -1) {</div><div class='del'>-		AFR_STACK_UNWIND (setdents, frame, op_ret, op_errno);</div><div class='del'>-	}</div><div class='del'>-</div><div class='del'>-	return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-/* }}} */</div><div class='head'>diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c<br/>index b7fbbd09c50..18cff07663c 100644<br/>--- a/<a href='/cgit/glusterfs.git/tree/xlators/cluster/afr/src/afr.c?h=v3.6.9&amp;id=a79d50fc723ffa4d93fa8f567676b18591fac5fe'>xlators/cluster/afr/src/afr.c</a><br/>+++ b/<a href='/cgit/glusterfs.git/tree/xlators/cluster/afr/src/afr.c?h=v3.6.9&amp;id=31e69430140538f5fee3e8dc89bd2971917820d1'>xlators/cluster/afr/src/afr.c</a></div><div class='hunk'>@@ -3033,7 +3033,6 @@ struct xlator_fops fops = {</div><div class='ctx'> 	.opendir     = afr_opendir,</div><div class='ctx'> 	.readdir     = afr_readdir,</div><div class='ctx'> 	.readdirp    = afr_readdirp,</div><div class='del'>-	.getdents    = afr_getdents,</div><div class='ctx'> </div><div class='ctx'> 	/* dir write */</div><div class='ctx'> 	.create      = afr_create,</div><div class='hunk'>@@ -3044,7 +3043,6 @@ struct xlator_fops fops = {</div><div class='ctx'> 	.link        = afr_link,</div><div class='ctx'> 	.symlink     = afr_symlink,</div><div class='ctx'> 	.rename      = afr_rename,</div><div class='del'>-	.setdents    = afr_setdents,</div><div class='ctx'> };</div><div class='ctx'> </div><div class='ctx'> </div><div class='head'>diff --git a/xlators/cluster/map/src/map.c b/xlators/cluster/map/src/map.c<br/>index 17de0c0954f..09d22b5d690 100644<br/>--- a/<a href='/cgit/glusterfs.git/tree/xlators/cluster/map/src/map.c?h=v3.6.9&amp;id=a79d50fc723ffa4d93fa8f567676b18591fac5fe'>xlators/cluster/map/src/map.c</a><br/>+++ b/<a href='/cgit/glusterfs.git/tree/xlators/cluster/map/src/map.c?h=v3.6.9&amp;id=31e69430140538f5fee3e8dc89bd2971917820d1'>xlators/cluster/map/src/map.c</a></div><div class='hunk'>@@ -905,23 +905,6 @@ map_checksum_cbk (call_frame_t *frame,</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> </div><div class='del'>-int32_t</div><div class='del'>-map_lock_notify_cbk (call_frame_t *frame, void *cookie, xlator_t *this,</div><div class='del'>-			 int32_t op_ret, int32_t op_errno)</div><div class='del'>-{</div><div class='del'>-	STACK_UNWIND (frame, op_ret, op_errno);</div><div class='del'>-	return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-int32_t</div><div class='del'>-map_lock_fnotify_cbk (call_frame_t *frame, void *cookie, xlator_t *this,</div><div class='del'>-			  int32_t op_ret, int32_t op_errno)</div><div class='del'>-{</div><div class='del'>-	STACK_UNWIND (frame, op_ret, op_errno);</div><div class='del'>-	return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='ctx'> /* Fops starts here */</div><div class='ctx'> </div><div class='ctx'> int32_t</div><div class='head'>diff --git a/xlators/cluster/stripe/src/stripe.c b/xlators/cluster/stripe/src/stripe.c<br/>index a7fad23da81..eb5a154d5ee 100644<br/>--- a/<a href='/cgit/glusterfs.git/tree/xlators/cluster/stripe/src/stripe.c?h=v3.6.9&amp;id=a79d50fc723ffa4d93fa8f567676b18591fac5fe'>xlators/cluster/stripe/src/stripe.c</a><br/>+++ b/<a href='/cgit/glusterfs.git/tree/xlators/cluster/stripe/src/stripe.c?h=v3.6.9&amp;id=31e69430140538f5fee3e8dc89bd2971917820d1'>xlators/cluster/stripe/src/stripe.c</a></div><div class='hunk'>@@ -2559,50 +2559,6 @@ stripe_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /**</div><div class='del'>- * stripe_writedir -</div><div class='del'>- */</div><div class='del'>-int32_t</div><div class='del'>-stripe_setdents (call_frame_t *frame, xlator_t *this, fd_t *fd,</div><div class='del'>-                 int32_t flags, dir_entry_t *entries, int32_t count)</div><div class='del'>-{</div><div class='del'>-        stripe_local_t   *local = NULL;</div><div class='del'>-        stripe_private_t *priv = NULL;</div><div class='del'>-        xlator_list_t    *trav = NULL;</div><div class='del'>-        int32_t           op_errno = 1;</div><div class='del'>-</div><div class='del'>-        VALIDATE_OR_GOTO (frame, err);</div><div class='del'>-        VALIDATE_OR_GOTO (this, err);</div><div class='del'>-        VALIDATE_OR_GOTO (fd, err);</div><div class='del'>-        VALIDATE_OR_GOTO (fd-&gt;inode, err);</div><div class='del'>-</div><div class='del'>-        priv = this-&gt;private;</div><div class='del'>-        trav = this-&gt;children;</div><div class='del'>-</div><div class='del'>-        /* Initialization */</div><div class='del'>-        local = CALLOC (1, sizeof (stripe_local_t));</div><div class='del'>-        if (!local) {</div><div class='del'>-                op_errno = ENOMEM;</div><div class='del'>-                goto err;</div><div class='del'>-        }</div><div class='del'>-        local-&gt;op_ret = -1;</div><div class='del'>-        frame-&gt;local = local;</div><div class='del'>-        local-&gt;call_count = priv-&gt;child_count;</div><div class='del'>-</div><div class='del'>-        while (trav) {</div><div class='del'>-                STACK_WIND (frame, stripe_common_cbk, trav-&gt;xlator,</div><div class='del'>-                            trav-&gt;xlator-&gt;fops-&gt;setdents, fd, flags, entries,</div><div class='del'>-                            count);</div><div class='del'>-                trav = trav-&gt;next;</div><div class='del'>-        }</div><div class='del'>-</div><div class='del'>-        return 0;</div><div class='del'>- err:</div><div class='del'>-        STACK_UNWIND (frame, -1, op_errno);</div><div class='del'>-        return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-/**</div><div class='ctx'>  * stripe_flush -</div><div class='ctx'>  */</div><div class='ctx'> int32_t</div><div class='hunk'>@@ -3273,91 +3229,6 @@ stripe_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,</div><div class='ctx'> </div><div class='ctx'> /* Management operations */</div><div class='ctx'> </div><div class='del'>-/**</div><div class='del'>- * stripe_stats_cbk - Add all the fields received from different clients.</div><div class='del'>- *    Once all the clients return, send stats to above layer.</div><div class='del'>- *</div><div class='del'>- */</div><div class='del'>-int32_t</div><div class='del'>-stripe_stats_cbk (call_frame_t *frame, void *cookie, xlator_t *this,</div><div class='del'>-                  int32_t op_ret, int32_t op_errno, struct xlator_stats *stats)</div><div class='del'>-{</div><div class='del'>-        int32_t         callcnt = 0;</div><div class='del'>-        stripe_local_t *local = NULL;</div><div class='del'>-        call_frame_t   *prev = NULL;</div><div class='del'>-</div><div class='del'>-        prev  = cookie;</div><div class='del'>-        local = frame-&gt;local;</div><div class='del'>-</div><div class='del'>-        LOCK(&amp;frame-&gt;lock);</div><div class='del'>-        {</div><div class='del'>-                callcnt = --local-&gt;call_count;</div><div class='del'>-</div><div class='del'>-                if (op_ret == -1) {</div><div class='del'>-                        gf_log (this-&gt;name, GF_LOG_DEBUG,</div><div class='del'>-                                "%s returned error %s",</div><div class='del'>-                                prev-&gt;this-&gt;name, strerror (op_errno));</div><div class='del'>-                        local-&gt;op_ret = -1;</div><div class='del'>-                        local-&gt;op_errno = op_errno;</div><div class='del'>-                }</div><div class='del'>-                if (op_ret == 0) {</div><div class='del'>-                        if (local-&gt;op_ret == -2) {</div><div class='del'>-                                /* This is to make sure this is the</div><div class='del'>-                                   first time */</div><div class='del'>-                                local-&gt;stats = *stats;</div><div class='del'>-                                local-&gt;op_ret = 0;</div><div class='del'>-                        } else {</div><div class='del'>-                                local-&gt;stats.nr_files += stats-&gt;nr_files;</div><div class='del'>-                                local-&gt;stats.free_disk += stats-&gt;free_disk;</div><div class='del'>-                                local-&gt;stats.disk_usage += stats-&gt;disk_usage;</div><div class='del'>-                                local-&gt;stats.nr_clients += stats-&gt;nr_clients;</div><div class='del'>-                        }</div><div class='del'>-                }</div><div class='del'>-        }</div><div class='del'>-        UNLOCK (&amp;frame-&gt;lock);</div><div class='del'>-</div><div class='del'>-        if (!callcnt) {</div><div class='del'>-                STACK_UNWIND (frame, local-&gt;op_ret, local-&gt;op_errno,</div><div class='del'>-                              &amp;local-&gt;stats);</div><div class='del'>-        }</div><div class='del'>-</div><div class='del'>-        return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-/**</div><div class='del'>- * stripe_stats -</div><div class='del'>- */</div><div class='del'>-int32_t</div><div class='del'>-stripe_stats (call_frame_t *frame, xlator_t *this, int32_t flags)</div><div class='del'>-{</div><div class='del'>-        stripe_local_t   *local = NULL;</div><div class='del'>-        xlator_list_t    *trav = NULL;</div><div class='del'>-        stripe_private_t *priv = NULL;</div><div class='del'>-        int32_t           op_errno = 1;</div><div class='del'>-</div><div class='del'>-        priv = this-&gt;private;</div><div class='del'>-        trav = this-&gt;children;</div><div class='del'>-</div><div class='del'>-        local = CALLOC (1, sizeof (stripe_local_t));</div><div class='del'>-        if (!local) {</div><div class='del'>-                op_errno = ENOMEM;</div><div class='del'>-                goto err;</div><div class='del'>-        }</div><div class='del'>-        frame-&gt;local = local;</div><div class='del'>-        local-&gt;op_ret = -2; /* to be used as a flag in _cbk */</div><div class='del'>-        local-&gt;call_count = priv-&gt;child_count;</div><div class='del'>-</div><div class='del'>-        while (trav) {</div><div class='del'>-                STACK_WIND (frame, stripe_stats_cbk, trav-&gt;xlator,</div><div class='del'>-                            trav-&gt;xlator-&gt;mops-&gt;stats, flags);</div><div class='del'>-                trav = trav-&gt;next;</div><div class='del'>-        }</div><div class='del'>-        return 0;</div><div class='del'>- err:</div><div class='del'>-        STACK_UNWIND (frame, -1, op_errno, NULL);</div><div class='del'>-        return 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='ctx'> int32_t</div><div class='ctx'> stripe_release (xlator_t *this, fd_t *fd)</div><div class='ctx'> {</div><div class='hunk'>@@ -3674,12 +3545,10 @@ struct xlator_fops fops = {</div><div class='ctx'>         .setattr     = stripe_setattr,</div><div class='ctx'>         .fsetattr    = stripe_fsetattr,</div><div class='ctx'>         .lookup      = stripe_lookup,</div><div class='del'>-        .setdents    = stripe_setdents,</div><div class='ctx'>         .mknod       = stripe_mknod,</div><div class='ctx'> };</div><div class='ctx'> </div><div class='ctx'> struct xlator_mops mops = {</div><div class='del'>-        .stats  = stripe_stats,</div><div class='ctx'> };</div><div class='ctx'> </div><div class='ctx'> struct xlator_cbks cbks = {</div><div class='head'>diff --git a/xlators/cluster/stripe/src/stripe.h b/xlators/cluster/stripe/src/stripe.h<br/>index 738727e9586..23ee4546d60 100644<br/>--- a/<a href='/cgit/glusterfs.git/tree/xlators/cluster/stripe/src/stripe.h?h=v3.6.9&amp;id=a79d50fc723ffa4d93fa8f567676b18591fac5fe'>xlators/cluster/stripe/src/stripe.h</a><br/>+++ b/<a href='/cgit/glusterfs.git/tree/xlators/cluster/stripe/src/stripe.h?h=v3.6.9&amp;id=31e69430140538f5fee3e8dc89bd2971917820d1'>xlators/cluster/stripe/src/stripe.h</a></div><div class='hunk'>@@ -114,7 +114,6 @@ struct stripe_local {</div><div class='ctx'>         struct readv_replies *replies;</div><div class='ctx'>         struct statvfs       statvfs_buf;</div><div class='ctx'>         dir_entry_t         *entry;</div><div class='del'>-        struct xlator_stats  stats;</div><div class='ctx'> </div><div class='ctx'>         int8_t               revalidate;</div><div class='ctx'>         int8_t               failed;</div></td></tr></table></div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit </a> (<a href='https://git-scm.com/'>git 2.34.1</a>) at 2026-04-06 15:05:39 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
