summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2014-01-13 16:13:30 +0530
committerVijay Bellur <vbellur@redhat.com>2014-01-13 04:58:45 -0800
commit8eda793ed6762ca71521698eb80e2262b5b63092 (patch)
tree7638378705c66d0ec14fa78f2a1e4226ce430d78
parent14f79a0b9e7a758b17e3c951bfa0150b3db0494a (diff)
cluster/dht: Make sure loc has gfid
Problem: In some code paths neither loc->gfid nor loc->inode->gfid is populated which leads to EINVAL for linkfile setattr in dht_linkfile_attr_heal. Fix: Populate loc->gfid before dht_linkfile_attr_heal. BUG: 971805 Change-Id: I8e4b7510ee5c38aa9ccf5283c7165c7df25ec62b Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/6691 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rwxr-xr-xtests/bugs/bug-884597.t1
-rw-r--r--xlators/cluster/dht/src/dht-linkfile.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/tests/bugs/bug-884597.t b/tests/bugs/bug-884597.t
index 0d3495a..c49f533 100755
--- a/tests/bugs/bug-884597.t
+++ b/tests/bugs/bug-884597.t
@@ -107,3 +107,4 @@ BACKEND_UID=`stat --printf=%u $B0/${V0}$cached/link$i`;
BACKEND_GID=`stat --printf=%g $B0/${V0}$cached/link$i`;
EXPECT "0" uid_gid_compare $NEW_UID $NEW_GID $BACKEND_UID $BACKEND_GID
+cleanup;
diff --git a/xlators/cluster/dht/src/dht-linkfile.c b/xlators/cluster/dht/src/dht-linkfile.c
index 67d6ce5..d64e91e 100644
--- a/xlators/cluster/dht/src/dht-linkfile.c
+++ b/xlators/cluster/dht/src/dht-linkfile.c
@@ -237,6 +237,8 @@ dht_linkfile_attr_heal (call_frame_t *frame, xlator_t *this)
is_equal (frame->root->gid, local->stbuf.ia_gid)))
return 0;
+ uuid_copy (local->loc.gfid, local->stbuf.ia_gfid);
+
copy = copy_frame (frame);
if (!copy)