3604df
From 91e0dfb0aec0a2812f3396fe796050f21ee7722a Mon Sep 17 00:00:00 2001
3604df
From: Nithya Balachandran <nbalacha@dhcp35-62.lab.eng.blr.redhat.com>
3604df
Date: Wed, 11 Jan 2017 16:03:08 +0530
3604df
Subject: [PATCH 268/270] cluster/dht: Incorrect migration checks in fsync
3604df
3604df
Fixed the order of the migration phase checks
3604df
in dht_fsync_cbk. Phase1 should never be hit if op_ret
3604df
is non zero.
3604df
3604df
Upstream patches:
3604df
master: http://review.gluster.org/16350
3604df
release-3.8: http://review.gluster.org/#/c/16374/
3604df
3604df
Change-Id: Ie0179abcd70bd72cfc785fc87d9aef7293576f8d
3604df
BUG: 1410406
3604df
Signed-off-by: N Balachandran <nbalacha@redhat.com>
3604df
Reviewed-on: https://code.engineering.redhat.com/gerrit/94726
3604df
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
3604df
---
3604df
 xlators/cluster/dht/src/dht-inode-read.c | 11 ++++++-----
3604df
 1 file changed, 6 insertions(+), 5 deletions(-)
3604df
3604df
diff --git a/xlators/cluster/dht/src/dht-inode-read.c b/xlators/cluster/dht/src/dht-inode-read.c
3604df
index 549f1b9..8abf0d5 100644
3604df
--- a/xlators/cluster/dht/src/dht-inode-read.c
3604df
+++ b/xlators/cluster/dht/src/dht-inode-read.c
3604df
@@ -839,6 +839,12 @@ dht_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret,
3604df
         dht_set_local_rebalance (this, local, NULL, prebuf,
3604df
                                  postbuf, xdata);
3604df
 
3604df
+        if ((op_ret == -1) || IS_DHT_MIGRATION_PHASE2 (postbuf)) {
3604df
+                ret = dht_rebalance_complete_check (this, frame);
3604df
+                if (!ret)
3604df
+                        return 0;
3604df
+        }
3604df
+
3604df
         /* Check if the rebalance phase1 is true */
3604df
         if (IS_DHT_MIGRATION_PHASE1 (postbuf)) {
3604df
 
3604df
@@ -860,11 +866,6 @@ dht_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret,
3604df
                 }
3604df
         }
3604df
 
3604df
-        if (IS_DHT_MIGRATION_PHASE2 (postbuf)) {
3604df
-                ret = dht_rebalance_complete_check (this, frame);
3604df
-                if (!ret)
3604df
-                        return 0;
3604df
-        }
3604df
 
3604df
 out:
3604df
         DHT_STRIP_PHASE1_FLAGS (postbuf);
3604df
-- 
3604df
2.9.3
3604df