diff options
| author | Ravishankar N <ravishankar@redhat.com> | 2017-06-05 09:40:51 +0530 |
|---|---|---|
| committer | Raghavendra Talur <rtalur@redhat.com> | 2017-06-16 21:54:56 +0000 |
| commit | 5bd806f1cdb3a975fe8f2272d47b741c05155ca1 (patch) | |
| tree | 98ef1f45c94b9764e1a33af45b6d6abf50c38fb6 /xlators/storage | |
| parent | e1ce2c6616f0466352a92fa400afe2af360139ad (diff) | |
afr: add errno to afr_inode_refresh_done()
Backport of https://review.gluster.org/17413 and
https://review.gluster.org/17436
Problem:
When parellel `rm -rf`s were being done from cifs clients, opendir might
fail on some replicas with ENOENT. DHT ignores partial opendir failures
in dht_fd_cbk() and winds readdirs on those replicas. Afr inode refresh
(as a part of readdirp read_txn) sees in its fd context that the state
of the fds is *not* AFR_FD_OPENED and bails out to
afr_inode_refresh_done() without doing a refresh. When this happens, the
errno is set as EIO due to lack of readable subvols, logging split-brain
messages in the logs.
Fix:
Introduce an errno argument to afr_inode_refresh_do() to bail out with
the right error value when inode refresh is not performed.
Change-Id: Id88e604278abb8df47750d45258d9e6dde710600
BUG: 1457732
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Reviewed-on: https://review.gluster.org/17516
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Diffstat (limited to 'xlators/storage')
0 files changed, 0 insertions, 0 deletions
