d1681e
From 4eef56dc01a9ab11d56f30dd29e2eb65c82cc01d Mon Sep 17 00:00:00 2001
d1681e
From: Raghavendra G <rgowdapp@redhat.com>
d1681e
Date: Wed, 4 Apr 2018 10:03:18 +0530
d1681e
Subject: [PATCH 250/260] cluster/dht: act as passthrough for renames on single
d1681e
 child DHT
d1681e
d1681e
Various synchronization present in dht_rename while handling
d1681e
directories and files is necessary only if we have more than only one
d1681e
child.
d1681e
d1681e
> Change-Id: Ie21ad419125504ca2f391b1ae2e5c1d166fee247
d1681e
> fixes: bz#1563511
d1681e
> Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
d1681e
d1681e
upstream patch: https://review.gluster.org/19817/
d1681e
Change-Id: Ie21ad419125504ca2f391b1ae2e5c1d166fee247
d1681e
BUG: 1572087
d1681e
fixes: bz#1572087
d1681e
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
d1681e
Reviewed-on: https://code.engineering.redhat.com/gerrit/137257
d1681e
Tested-by: RHGS Build Bot <nigelb@redhat.com>
d1681e
Reviewed-by: Nithya Balachandran <nbalacha@redhat.com>
d1681e
---
d1681e
 xlators/cluster/dht/src/dht-rename.c | 22 +++++++++++++++-------
d1681e
 1 file changed, 15 insertions(+), 7 deletions(-)
d1681e
d1681e
diff --git a/xlators/cluster/dht/src/dht-rename.c b/xlators/cluster/dht/src/dht-rename.c
d1681e
index ca6b5f4..5a72c1f 100644
d1681e
--- a/xlators/cluster/dht/src/dht-rename.c
d1681e
+++ b/xlators/cluster/dht/src/dht-rename.c
d1681e
@@ -1690,13 +1690,14 @@ int
d1681e
 dht_rename (call_frame_t *frame, xlator_t *this,
d1681e
             loc_t *oldloc, loc_t *newloc, dict_t *xdata)
d1681e
 {
d1681e
-        xlator_t    *src_cached = NULL;
d1681e
-        xlator_t    *src_hashed = NULL;
d1681e
-        xlator_t    *dst_cached = NULL;
d1681e
-        xlator_t    *dst_hashed = NULL;
d1681e
-        int          op_errno = -1;
d1681e
-        int          ret = -1;
d1681e
-        dht_local_t *local = NULL;
d1681e
+        xlator_t    *src_cached             = NULL;
d1681e
+        xlator_t    *src_hashed             = NULL;
d1681e
+        xlator_t    *dst_cached             = NULL;
d1681e
+        xlator_t    *dst_hashed             = NULL;
d1681e
+        int          op_errno               = -1;
d1681e
+        int          ret                    = -1;
d1681e
+        dht_local_t *local                  = NULL;
d1681e
+        dht_conf_t  *conf                   = NULL;
d1681e
         char         gfid[GF_UUID_BUF_SIZE] = {0};
d1681e
 
d1681e
         VALIDATE_OR_GOTO (frame, err);
d1681e
@@ -1704,6 +1705,13 @@ dht_rename (call_frame_t *frame, xlator_t *this,
d1681e
         VALIDATE_OR_GOTO (oldloc, err);
d1681e
         VALIDATE_OR_GOTO (newloc, err);
d1681e
 
d1681e
+        conf = this->private;
d1681e
+
d1681e
+        if (conf->subvolume_cnt == 1) {
d1681e
+                default_rename (frame, this, oldloc, newloc, xdata);
d1681e
+                return 0;
d1681e
+        }
d1681e
+
d1681e
         gf_uuid_unparse(oldloc->inode->gfid, gfid);
d1681e
 
d1681e
         src_hashed = dht_subvol_get_hashed (this, oldloc);
d1681e
-- 
d1681e
1.8.3.1
d1681e