<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/tests/bugs, branch v3.13.2</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>cluster/ec: OpenFD heal implementation for EC</title>
<updated>2018-01-18T18:18:53+00:00</updated>
<author>
<name>Sunil Kumar Acharya</name>
<email>sheggodu@redhat.com</email>
</author>
<published>2017-03-23T07:20:41+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=8d8f7b7056773f4ea2c3f0f1b766a21b91a6fcc7'/>
<id>8d8f7b7056773f4ea2c3f0f1b766a21b91a6fcc7</id>
<content type='text'>
Existing EC code doesn't try to heal the OpenFD to
avoid unnecessary healing of the data later.

Fix implements the healing of open FDs before
carrying out file operations on them by making an
attempt to open the FDs on required up nodes.

&gt;BUG: 1431955
&gt;Change-Id: Ib696f59c41ffd8d5678a484b23a00bb02764ed15
&gt;Signed-off-by: Sunil Kumar Acharya &lt;sheggodu@redhat.com&gt;

Upstream Patch: https://review.gluster.org/#/c/17077/

BUG: 1533023
Change-Id: Ib696f59c41ffd8d5678a484b23a00bb02764ed15
Signed-off-by: Sunil Kumar Acharya &lt;sheggodu@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Existing EC code doesn't try to heal the OpenFD to
avoid unnecessary healing of the data later.

Fix implements the healing of open FDs before
carrying out file operations on them by making an
attempt to open the FDs on required up nodes.

&gt;BUG: 1431955
&gt;Change-Id: Ib696f59c41ffd8d5678a484b23a00bb02764ed15
&gt;Signed-off-by: Sunil Kumar Acharya &lt;sheggodu@redhat.com&gt;

Upstream Patch: https://review.gluster.org/#/c/17077/

BUG: 1533023
Change-Id: Ib696f59c41ffd8d5678a484b23a00bb02764ed15
Signed-off-by: Sunil Kumar Acharya &lt;sheggodu@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>posix: delete stale gfid handles in nameless lookup</title>
<updated>2018-01-16T20:18:35+00:00</updated>
<author>
<name>Ravishankar N</name>
<email>ravishankar@redhat.com</email>
</author>
<published>2018-01-16T04:46:41+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=d06de8e3428c2312eff74b42dafc8aab93636e2e'/>
<id>d06de8e3428c2312eff74b42dafc8aab93636e2e</id>
<content type='text'>
..in order for self-heal of symlinks to work properly (see BZ for
details).

Backport of https://review.gluster.org/#/c/19070/
Signed-off-by: Ravishankar N &lt;ravishankar@redhat.com&gt;

Change-Id: I9a011d00b07a690446f7fd3589e96f840e8b7501
BUG: 1534842
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
..in order for self-heal of symlinks to work properly (see BZ for
details).

Backport of https://review.gluster.org/#/c/19070/
Signed-off-by: Ravishankar N &lt;ravishankar@redhat.com&gt;

Change-Id: I9a011d00b07a690446f7fd3589e96f840e8b7501
BUG: 1534842
</pre>
</div>
</content>
</entry>
<entry>
<title>mount/fuse: use fstat in getattr implementation if any opened fd is available</title>
<updated>2018-01-09T14:00:08+00:00</updated>
<author>
<name>Raghavendra G</name>
<email>rgowdapp@redhat.com</email>
</author>
<published>2017-11-07T10:39:37+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=19aa7d711f52c5c7e690b2ff12815e9a0f56acdb'/>
<id>19aa7d711f52c5c7e690b2ff12815e9a0f56acdb</id>
<content type='text'>
The restriction of using fds opened by the same Pid means fds cannot
be shared across threads of multithreaded application. Note that fops
from kernel have different Pid for different threads. Imagine
following sequence of operations:

* Turn off performance.open-behind
* Thread t1 opens an fd - fd1 - on file "file". Let's assume nodeid of
  "file" is "nodeid-file".
* Thread t2 does RENAME ("newfile", "file"). Let's assume nodeid of
  "newfile" as "nodeid-newfile".
* t2 proceeds to do fstat (fd1)

The above set of operations can sometimes result in ESTALE/ENOENT
errors. RENAME overwrites "file" with "newfile" changing its nodeid
from "nodeid-file" to "nodeid-newfile" and post RENAME, "nodeid-file" is
removed from the backend. If fstat carries nodeid-file as argument,
which can happen if lookup has not refreshed the nodeid of "file" and
since t2 doesn't have an fd opened, fuse_getattr_resume uses STAT
which will fail as "nodeid-file" no longer exists.

Since the above set of operations and sharing of fds across
multiple threads are valid, this is a bug.

The fix is to use any fd opened on the inode. In this specific example
fuse_getattr_resume will find fd1 and winds down the call as fstat
(fd1) which won't fail.

Cross-checked with "Miklos Szeredi" &lt;mszeredi.at.redhat.dot.com&gt; for
any security issues with this solution and he approves the solution.

Thanks to "Miklos Szeredi" &lt;mszeredi.at.redhat.dot.com&gt; for all the
pointers and discussions.

&gt;Change-Id: I88dd29b3607cd2594eee9d72a1637b5346c8d49c
&gt;BUG: 1510401
&gt;Signed-off-by: Raghavendra G &lt;rgowdapp@redhat.com&gt;

(cherry picked from commit 8b57378e5596f287a7b9d106dd6fb56a624b42ee)
Change-Id: I88dd29b3607cd2594eee9d72a1637b5346c8d49c
BUG: 1529084
Signed-off-by: Raghavendra G &lt;rgowdapp@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The restriction of using fds opened by the same Pid means fds cannot
be shared across threads of multithreaded application. Note that fops
from kernel have different Pid for different threads. Imagine
following sequence of operations:

* Turn off performance.open-behind
* Thread t1 opens an fd - fd1 - on file "file". Let's assume nodeid of
  "file" is "nodeid-file".
* Thread t2 does RENAME ("newfile", "file"). Let's assume nodeid of
  "newfile" as "nodeid-newfile".
* t2 proceeds to do fstat (fd1)

The above set of operations can sometimes result in ESTALE/ENOENT
errors. RENAME overwrites "file" with "newfile" changing its nodeid
from "nodeid-file" to "nodeid-newfile" and post RENAME, "nodeid-file" is
removed from the backend. If fstat carries nodeid-file as argument,
which can happen if lookup has not refreshed the nodeid of "file" and
since t2 doesn't have an fd opened, fuse_getattr_resume uses STAT
which will fail as "nodeid-file" no longer exists.

Since the above set of operations and sharing of fds across
multiple threads are valid, this is a bug.

The fix is to use any fd opened on the inode. In this specific example
fuse_getattr_resume will find fd1 and winds down the call as fstat
(fd1) which won't fail.

Cross-checked with "Miklos Szeredi" &lt;mszeredi.at.redhat.dot.com&gt; for
any security issues with this solution and he approves the solution.

Thanks to "Miklos Szeredi" &lt;mszeredi.at.redhat.dot.com&gt; for all the
pointers and discussions.

&gt;Change-Id: I88dd29b3607cd2594eee9d72a1637b5346c8d49c
&gt;BUG: 1510401
&gt;Signed-off-by: Raghavendra G &lt;rgowdapp@redhat.com&gt;

(cherry picked from commit 8b57378e5596f287a7b9d106dd6fb56a624b42ee)
Change-Id: I88dd29b3607cd2594eee9d72a1637b5346c8d49c
BUG: 1529084
Signed-off-by: Raghavendra G &lt;rgowdapp@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/dht: Serialize mds update code path with lookup unwind in selfheal</title>
<updated>2018-01-02T18:41:54+00:00</updated>
<author>
<name>Mohit Agrawal</name>
<email>moagrawa@redhat.com</email>
</author>
<published>2017-10-06T09:43:02+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=fe1008455ddaa4e3f95a5fe3180e6947afdb6c75'/>
<id>fe1008455ddaa4e3f95a5fe3180e6947afdb6c75</id>
<content type='text'>
Problem: Sometime test case ./tests/bugs/bug-1371806_1.t is failing on
         centos due to race condition between fresh lookup and setxattr fop.

Solution: In selfheal code path we do save mds on inode_ctx, it was not
          serialize with lookup unwind. Due to this behavior after lookup
          unwind if mds is not saved on inode_ctx and if any subsequent
          setxattr fop call it has failed with ENOENT because
          no mds has found on inode ctx.To resolve it save mds on
          inode ctx has been serialize with lookup unwind.

&gt; BUG: 1498966
&gt; Signed-off-by: Mohit Agrawal &lt;moagrawa@redhat.com&gt;
Change-Id: I8d4bb40a6cbf0cec35d181ec0095cc7142b02e29
BUG: 1529055
Signed-off-by: Mohit Agrawal &lt;moagrawa@redhat.com&gt;
Signed-off-by: N Balachandran &lt;nbalacha@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: Sometime test case ./tests/bugs/bug-1371806_1.t is failing on
         centos due to race condition between fresh lookup and setxattr fop.

Solution: In selfheal code path we do save mds on inode_ctx, it was not
          serialize with lookup unwind. Due to this behavior after lookup
          unwind if mds is not saved on inode_ctx and if any subsequent
          setxattr fop call it has failed with ENOENT because
          no mds has found on inode ctx.To resolve it save mds on
          inode ctx has been serialize with lookup unwind.

&gt; BUG: 1498966
&gt; Signed-off-by: Mohit Agrawal &lt;moagrawa@redhat.com&gt;
Change-Id: I8d4bb40a6cbf0cec35d181ec0095cc7142b02e29
BUG: 1529055
Signed-off-by: Mohit Agrawal &lt;moagrawa@redhat.com&gt;
Signed-off-by: N Balachandran &lt;nbalacha@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>afr: add checks for allowing lookups</title>
<updated>2017-11-21T18:00:33+00:00</updated>
<author>
<name>Ravishankar N</name>
<email>ravishankar@redhat.com</email>
</author>
<published>2017-08-16T12:31:17+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=fa13ff2f94e16532014f5a6744f494478870e47a'/>
<id>fa13ff2f94e16532014f5a6744f494478870e47a</id>
<content type='text'>
Problem:
In an arbiter volume, lookup was being served from one of the sink
bricks (source brick was down). shard uses the iatt values from lookup cbk
to calculate the size and block count, which in this case were incorrect
values. shard_local_t-&gt;last_block was thus initialised to -1, resulting
in an infinite while loop in shard_common_resolve_shards().

Fix:
Use client quorum logic to allow or fail the lookups from afr if there
are no readable subvolumes. So in replica-3 or arbiter vols, if there is
no good copy or if quorum is not met, fail lookup with ENOTCONN.

With this fix, we are also removing support for quorum-reads xlator
option. So if quorum is not met, neither read nor write txns are allowed
and we fail the fop with ENOTCONN.

Change-Id: Ic65c00c24f77ece007328b421494eee62a505fa0
BUG: 1515572
Signed-off-by: Ravishankar N &lt;ravishankar@redhat.com&gt;
(cherry picked from commit bd44d59741bb8c0f5d7a62c5b1094179dd0ce8a4)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
In an arbiter volume, lookup was being served from one of the sink
bricks (source brick was down). shard uses the iatt values from lookup cbk
to calculate the size and block count, which in this case were incorrect
values. shard_local_t-&gt;last_block was thus initialised to -1, resulting
in an infinite while loop in shard_common_resolve_shards().

Fix:
Use client quorum logic to allow or fail the lookups from afr if there
are no readable subvolumes. So in replica-3 or arbiter vols, if there is
no good copy or if quorum is not met, fail lookup with ENOTCONN.

With this fix, we are also removing support for quorum-reads xlator
option. So if quorum is not met, neither read nor write txns are allowed
and we fail the fop with ENOTCONN.

Change-Id: Ic65c00c24f77ece007328b421494eee62a505fa0
BUG: 1515572
Signed-off-by: Ravishankar N &lt;ravishankar@redhat.com&gt;
(cherry picked from commit bd44d59741bb8c0f5d7a62c5b1094179dd0ce8a4)
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/ec: create eager-lock option for non-regular files</title>
<updated>2017-11-16T14:48:45+00:00</updated>
<author>
<name>Xavier Hernandez</name>
<email>jahernan@redhat.com</email>
</author>
<published>2017-10-16T11:57:59+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=b4684468c19e0fb447ba3762750044452a452a32'/>
<id>b4684468c19e0fb447ba3762750044452a452a32</id>
<content type='text'>
A new option is added to allow independent configuration of eager
locking for regular files and non-regular files.

&gt;Change-Id: I8f80e46d36d8551011132b15c0fac549b7fb1c60
&gt;BUG: 1502610
&gt;Signed-off-by: Xavier Hernandez &lt;jahernan@redhat.com&gt;

Change-Id: I8f80e46d36d8551011132b15c0fac549b7fb1c60
BUG: 1512460
Signed-off-by: Ashish Pandey &lt;aspandey@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A new option is added to allow independent configuration of eager
locking for regular files and non-regular files.

&gt;Change-Id: I8f80e46d36d8551011132b15c0fac549b7fb1c60
&gt;BUG: 1502610
&gt;Signed-off-by: Xavier Hernandez &lt;jahernan@redhat.com&gt;

Change-Id: I8f80e46d36d8551011132b15c0fac549b7fb1c60
BUG: 1512460
Signed-off-by: Ashish Pandey &lt;aspandey@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: fix bug-1483058-replace-brick-quorum-validation.t spurious failure</title>
<updated>2017-11-14T15:40:52+00:00</updated>
<author>
<name>Atin Mukherjee</name>
<email>amukherj@redhat.com</email>
</author>
<published>2017-11-09T17:12:22+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=e1f780ca8f17b8b9615356796093dc7a75f5ff8a'/>
<id>e1f780ca8f17b8b9615356796093dc7a75f5ff8a</id>
<content type='text'>
&gt;mainline patch : https://review.gluster.org/#/c/18710/

Change-Id: I04c35305bfb663eabbf715eee78695adfd4a2d20
BUG: 1512435
Signed-off-by: Atin Mukherjee &lt;amukherj@redhat.com&gt;
(cherry picked from commit 76a83f98b78a0bdf29bbb0f8e4c9ab74dae52be4)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
&gt;mainline patch : https://review.gluster.org/#/c/18710/

Change-Id: I04c35305bfb663eabbf715eee78695adfd4a2d20
BUG: 1512435
Signed-off-by: Atin Mukherjee &lt;amukherj@redhat.com&gt;
(cherry picked from commit 76a83f98b78a0bdf29bbb0f8e4c9ab74dae52be4)
</pre>
</div>
</content>
</entry>
<entry>
<title>glusterd: delete source brick only once in reset-brick commit force</title>
<updated>2017-10-31T11:14:18+00:00</updated>
<author>
<name>Atin Mukherjee</name>
<email>amukherj@redhat.com</email>
</author>
<published>2017-10-30T10:25:32+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=0fb8acaa6ff80c43e46deac0ce66b29ae0df0ca4'/>
<id>0fb8acaa6ff80c43e46deac0ce66b29ae0df0ca4</id>
<content type='text'>
While stopping the brick which is to be reset and replaced delete_brick
flag was passed as true which resulted glusterd to free up to source
brick before the actual operation. This results commit force to fail
failing to find the source brickinfo.

Change-Id: I1aa7508eff7cc9c9b5d6f5163f3bb92736d6df44
BUG: 1507466
Signed-off-by: Atin Mukherjee &lt;amukherj@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While stopping the brick which is to be reset and replaced delete_brick
flag was passed as true which resulted glusterd to free up to source
brick before the actual operation. This results commit force to fail
failing to find the source brickinfo.

Change-Id: I1aa7508eff7cc9c9b5d6f5163f3bb92736d6df44
BUG: 1507466
Signed-off-by: Atin Mukherjee &lt;amukherj@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: Update tier CLI in .t files</title>
<updated>2017-10-30T15:50:44+00:00</updated>
<author>
<name>N Balachandran</name>
<email>nbalacha@redhat.com</email>
</author>
<published>2017-10-23T07:12:32+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=62dbefde4bc5c8d9dcfb10f3be5d349db341bb30'/>
<id>62dbefde4bc5c8d9dcfb10f3be5d349db341bb30</id>
<content type='text'>
Update .t tier tests to use the new tier CLI.

Change-Id: I0e7f1769071108d8266fc86378c4466bcaf96e7d
BUG: 1505253
Signed-off-by: N Balachandran &lt;nbalacha@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update .t tier tests to use the new tier CLI.

Change-Id: I0e7f1769071108d8266fc86378c4466bcaf96e7d
BUG: 1505253
Signed-off-by: N Balachandran &lt;nbalacha@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: Fail open on split-brain</title>
<updated>2017-10-26T18:23:35+00:00</updated>
<author>
<name>Pranith Kumar K</name>
<email>pkarampu@redhat.com</email>
</author>
<published>2017-09-04T11:27:25+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=786343abca3474ff01aa1017210112d97cbc4843'/>
<id>786343abca3474ff01aa1017210112d97cbc4843</id>
<content type='text'>
Problem:
Append on a file with split-brain succeeds. Open is intercepted by open-behind,
when write comes on the file, open-behind does open+write. Open succeeds
because afr doesn't fail it. Then write succeeds because write-behind
intercepts it. Flush is also intercepted by write-behind, so the application
never gets to know that the write failed.

Fix:
Fail open on split-brain, so that when open-behind does open+write open fails
which leads to write failure. Application will know about this failure.

Change-Id: I4bff1c747c97bb2925d6987f4ced5f1ce75dbc15
BUG: 1294051
Signed-off-by: Pranith Kumar K &lt;pkarampu@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Append on a file with split-brain succeeds. Open is intercepted by open-behind,
when write comes on the file, open-behind does open+write. Open succeeds
because afr doesn't fail it. Then write succeeds because write-behind
intercepts it. Flush is also intercepted by write-behind, so the application
never gets to know that the write failed.

Fix:
Fail open on split-brain, so that when open-behind does open+write open fails
which leads to write failure. Application will know about this failure.

Change-Id: I4bff1c747c97bb2925d6987f4ced5f1ce75dbc15
BUG: 1294051
Signed-off-by: Pranith Kumar K &lt;pkarampu@redhat.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
