summaryrefslogtreecommitdiffstats
path: root/xlators/features/marker/src/marker.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/features/marker/src/marker.c')
-rw-r--r--xlators/features/marker/src/marker.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/xlators/features/marker/src/marker.c b/xlators/features/marker/src/marker.c
index b4cf5080071..3edbd7da058 100644
--- a/xlators/features/marker/src/marker.c
+++ b/xlators/features/marker/src/marker.c
@@ -1018,6 +1018,9 @@ marker_rename_release_oldp_lock (call_frame_t *frame, void *cookie,
local->err = op_errno;
}
+ //Reset frame uid and gid if reset.
+ MARKER_SET_UID_GID (frame->root, local);
+
lock.l_type = F_UNLCK;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
@@ -1085,6 +1088,13 @@ marker_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
goto quota_err;
}
+ /* Removexattr requires uid and gid to be 0,
+ * reset them in the callback.
+ */
+ MARKER_SET_UID_GID (local, frame->root);
+ frame->root->uid = 0;
+ frame->root->gid = 0;
+
STACK_WIND (frame, marker_rename_release_oldp_lock,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->removexattr, &local->loc,