summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/dht
diff options
context:
space:
mode:
authorShyam <srangana@redhat.com>2014-11-06 10:43:37 -0500
committerVijay Bellur <vbellur@redhat.com>2014-11-17 00:25:42 -0800
commitdfc49143841fe84f846346a30dadce797940eebc (patch)
tree1d594ddf2748dc4031fc089ae268c101ced1e5d4 /xlators/cluster/dht
parent73be0be8149398b68213cb158cf94313169b5006 (diff)
cluster/dht: Fix subvol check, to correctly determine cached file rename
The check to treat rename as a critical failure ignored when the cached file is being renamed to new name, as the new name falls on the same subvol as the cached file. This is in addition to when the target of the rename does not exist. The current change is simpler, as the rename logic, renames the cached file in case the target exists and falls on the same subvol as source name, OR the target does not exist and the hash of target falls on the same subvol as source cached. These conditions mean we are renaming the source, other conditions mean we are renaming the source linkto file which we do not want to treat as a critical failure (and we also instruct marker that it is an internal FOP and to not account for the same). Change-Id: I4414e61a0d2b28a429fa747e545ef953e48cfb5b BUG: 1161156 Signed-off-by: Shyam <srangana@redhat.com> Reviewed-on: http://review.gluster.org/9063 Reviewed-by: N Balachandran <nbalacha@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: susant palai <spalai@redhat.com> Reviewed-by: venkatesh somyajulu <vsomyaju@redhat.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/cluster/dht')
-rw-r--r--xlators/cluster/dht/src/dht-rename.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-rename.c b/xlators/cluster/dht/src/dht-rename.c
index eac3975ccbe..c8a05a3939d 100644
--- a/xlators/cluster/dht/src/dht-rename.c
+++ b/xlators/cluster/dht/src/dht-rename.c
@@ -642,7 +642,7 @@ dht_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
if (op_ret == -1) {
/* Critical failure: unable to rename the cached file */
- if (src_cached == dst_cached) {
+ if (prev->this == src_cached) {
gf_msg (this->name, GF_LOG_WARNING, op_errno,
DHT_MSG_RENAME_FAILED,
"%s: Rename on %s failed, (gfid = %s) ",