233933
From 92aadb6a5eeec75edf7f5a11a0ebd861dd85ca6b Mon Sep 17 00:00:00 2001
233933
From: N Balachandran <nbalacha@redhat.com>
233933
Date: Mon, 20 May 2019 15:23:42 +0530
233933
Subject: [PATCH 148/169] cluster/dht: Lookup all files when processing
233933
 directory
233933
233933
A rebalance process currently only looks up files
233933
that it is supposed to migrate. This could cause issues
233933
when lookup-optimize is enabled as the dir layout can be
233933
updated with the commit hash before all files are looked up.
233933
This is expecially problematic if one of the rebalance processes
233933
fails to complete as clients will try to access files whose
233933
linkto files might not have been created.
233933
Each process will now lookup every file in the directory it is
233933
processing.
233933
Pros: Less likely that files will be inaccessible.
233933
Cons: More lookup requests sent to the bricks and a potential
233933
performance hit.
233933
Note: this does not handle races such as when a layout is updated on disk
233933
just as the create fop is sent by the client.
233933
233933
upstream : https://review.gluster.org/#/c/glusterfs/+/22746/
233933
233933
>Change-Id: I22b55846effc08d3b827c3af9335229335f67fb8
233933
>fixes: bz#1711764
233933
233933
BUG#1714124
233933
233933
Change-Id: Ica6a9459befe53957f080001a2dda525b3b14d1c
233933
Signed-off-by: N Balachandran <nbalacha@redhat.com>
233933
Reviewed-on: https://code.engineering.redhat.com/gerrit/172080
233933
Tested-by: RHGS Build Bot <nigelb@redhat.com>
233933
Reviewed-by: Mohit Agrawal <moagrawa@redhat.com>
233933
---
233933
 xlators/cluster/dht/src/dht-rebalance.c | 12 ++++++------
233933
 1 file changed, 6 insertions(+), 6 deletions(-)
233933
233933
diff --git a/xlators/cluster/dht/src/dht-rebalance.c b/xlators/cluster/dht/src/dht-rebalance.c
233933
index efbe8a4..559f046 100644
233933
--- a/xlators/cluster/dht/src/dht-rebalance.c
233933
+++ b/xlators/cluster/dht/src/dht-rebalance.c
233933
@@ -2741,12 +2741,6 @@ gf_defrag_migrate_single_file(void *opaque)
233933
         goto out;
233933
     }
233933
 
233933
-    if (!gf_defrag_should_i_migrate(this, rebal_entry->local_subvol_index,
233933
-                                    entry->d_stat.ia_gfid)) {
233933
-        gf_msg_debug(this->name, 0, "Don't migrate %s ", entry_loc.path);
233933
-        goto out;
233933
-    }
233933
-
233933
     gf_uuid_copy(entry_loc.gfid, entry->d_stat.ia_gfid);
233933
 
233933
     gf_uuid_copy(entry_loc.pargfid, loc->gfid);
233933
@@ -2772,6 +2766,12 @@ gf_defrag_migrate_single_file(void *opaque)
233933
         goto out;
233933
     }
233933
 
233933
+    if (!gf_defrag_should_i_migrate(this, rebal_entry->local_subvol_index,
233933
+                                    entry->d_stat.ia_gfid)) {
233933
+        gf_msg_debug(this->name, 0, "Don't migrate %s ", entry_loc.path);
233933
+        goto out;
233933
+    }
233933
+
233933
     iatt_ptr = &iat;;
233933
 
233933
     hashed_subvol = dht_subvol_get_hashed(this, &entry_loc);
233933
-- 
233933
1.8.3.1
233933