summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src/afr.h
diff options
context:
space:
mode:
authorRavishankar N <ravishankar@redhat.com>2018-07-06 15:26:59 +0530
committerRavishankar N <ravishankar@redhat.com>2018-07-09 15:33:07 +0530
commit83076bc29535810dd596595198e260970847cff6 (patch)
tree07d228958cbeb7511a7f69a6bdb3e8e7885f9609 /xlators/cluster/afr/src/afr.h
parenta4d67a1e0572a3bdb353c03eb3cff9646c6e2a5d (diff)
afr: fix bug-1363721.t failure
Backport of https://review.gluster.org/#/c/20036/ Note: We need to update inode context's write_subvol even in case of compound fops. This is not there in master and 4.1 since compound FOPS was removed in it. Problem: In the .t, when the only good brick was brought down, writes on the fd were still succeeding on the bad bricks. The inflight split-brain check was marking the write as failure but since the write succeeded on all the bad bricks, afr_txn_nothing_failed() was set to true and we were unwinding writev with success to DHT and then catching the failure in post-op in the background. Fix: Don't wind the FOP phase if the write_subvol (which is populated with readable subvols obtained in pre-op cbk) does not have at least 1 good brick which was up when the transaction started. Change-Id: I4a1fef4569609c31cffeaef591a64c10870e8d0b BUG: 1598720 Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr.h')
-rw-r--r--xlators/cluster/afr/src/afr.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h
index 53791b0cafd..91825aa94ea 100644
--- a/xlators/cluster/afr/src/afr.h
+++ b/xlators/cluster/afr/src/afr.h
@@ -1273,6 +1273,9 @@ afr_is_symmetric_error (call_frame_t *frame, xlator_t *this);
int
__afr_inode_ctx_get (xlator_t *this, inode_t *inode, afr_inode_ctx_t **ctx);
+uint64_t
+afr_write_subvol_get (call_frame_t *frame, xlator_t *this);
+
int
afr_write_subvol_set (call_frame_t *frame, xlator_t *this);