[Bugs] [Bug 1599247] New: afr: don' t update readables if inode refresh failed on all children

bugzilla at redhat.com bugzilla at redhat.com
Mon Jul 9 10:01:35 UTC 2018


https://bugzilla.redhat.com/show_bug.cgi?id=1599247

            Bug ID: 1599247
           Summary: afr: don't update readables if inode refresh failed on
                    all children
           Product: GlusterFS
           Version: 3.12
         Component: replicate
          Keywords: Triaged
          Assignee: bugs at gluster.org
          Reporter: ravishankar at redhat.com
                CC: bugs at gluster.org
        Depends On: 1584483
            Blocks: 1597116



+++ This bug was initially created as a clone of Bug #1584483 +++

Description of problem:

To see if BZ 1329505 can be solved since the stop gap fix for it is being
reverted at https://review.gluster.org/#/c/20028 . */ 

Problem: If inode refresh failed on all children of afr due to ENOENT (say file
migrated by dht), it resets the readables to zero. Any inflight txn which then
later comes on the inode fails with EIO because no readable children present
for the inode.

Fix: Don't update readables when inode refresh fails on *all* children of afr.
In that way any inflight txns will either proceed with its own inode refresh if
needed and fail it with the right errno or use the old value of readables and
continue with the txn.

--- Additional comment from Worker Ant on 2018-05-30 23:17:37 EDT ---

REVIEW: https://review.gluster.org/20029 (afr: don't update readables if inode
refresh failed on all children) posted (#2) for review on master by Ravishankar
N

--- Additional comment from Worker Ant on 2018-06-18 11:30:06 EDT ---

COMMIT: https://review.gluster.org/20029 committed in master by "Ravishankar N"
<ravishankar at redhat.com> with a commit message- afr: don't update readables if
inode refresh failed on all children

Problem:
If inode refresh failed on all children of afr due to ENOENT (say file
migrated by dht), it resets the readables to zero. Any inflight txn which
then later comes on the inode fails with EIO because no readable
children present for the inode.

Fix:
Don't update readables when inode refresh fails on *all* children of
afr. In that way any inflight txns will either proceed with its own inode
refresh if needed and fail it with the right errno or use the old value
of readables and continue with the txn.

Also, add quorum checks to the beginning of afr_transaction(). Otherwise, we
seem to be winding the lock and checking for quorum only in pre-op pahse.

Note: This should ideally fix BZ 1329505 since the stop gap fix for
it is has been reverted at https://review.gluster.org/#/c/20028.

Change-Id: Ia638c092d8d12dc27afb3cdad133394845061319
updates: bz#1584483
Signed-off-by: Ravishankar N <ravishankar at redhat.com>


Referenced Bugs:

https://bugzilla.redhat.com/show_bug.cgi?id=1584483
[Bug 1584483] afr: don't update readables if inode refresh failed on all
children
https://bugzilla.redhat.com/show_bug.cgi?id=1597116
[Bug 1597116] afr: don't update readables if inode refresh failed on all
children
-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are the assignee for the bug.


More information about the Bugs mailing list