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