diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2017-01-03 12:50:54 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2017-01-17 20:03:30 -0800 |
commit | 5ff6af5c5955bc885925c15e34c9bc0862168c02 (patch) | |
tree | 682d7b7f8546095e4a3bf2972a57795689dbc7cb | |
parent | 2cfb7bc2419bbd38eaec070fbd2c874dd748f16b (diff) |
cluster/dht: Do rename cleanup as root
Problem:
Rename linkfile cleanup is done as non-root which may not have priviliges to do
the rename so it fails with EACCESS. MKDIR on that name in future will start to
hole on this subvolume. It is not easy to hit on fuse mounts because vfs takes
care of the permission checks even before rename fop is wound. But with
nfs-ganesha mounts it happens.
Fix:
Do rename cleanup as root
>BUG: 1409727
>Change-Id: I414c1eb6dce76b4516a6c940557b249e6c3f22f4
>Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
>Reviewed-on: http://review.gluster.org/16317
>Smoke: Gluster Build System <jenkins@build.gluster.org>
>CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
>Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
>Reviewed-by: N Balachandran <nbalacha@redhat.com>
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
BUG: 1412913
Change-Id: I7f891034150d7a0e3210202fb0788040c91e1c09
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/16390
Smoke: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: N Balachandran <nbalacha@redhat.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
-rw-r--r-- | xlators/cluster/dht/src/dht-rename.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/xlators/cluster/dht/src/dht-rename.c b/xlators/cluster/dht/src/dht-rename.c index a9ffd1d9fb5..d955ee411eb 100644 --- a/xlators/cluster/dht/src/dht-rename.c +++ b/xlators/cluster/dht/src/dht-rename.c @@ -724,6 +724,7 @@ dht_rename_cleanup (call_frame_t *frame) DHT_MARKER_DONT_ACCOUNT(xattr_new); + FRAME_SU_DO (frame, dht_local_t); STACK_WIND (frame, dht_rename_unlink_cbk, dst_hashed, dst_hashed->fops->unlink, &local->loc, 0, xattr_new); |