summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmar Tumballi <amar@kadalu.io>2020-03-04 00:46:08 +0530
committerRinku Kothiya <rkothiya@redhat.com>2020-04-07 11:14:40 +0000
commit0a67613d683cd07aea8d91243db7ef2298f25921 (patch)
tree466ce72a038f16f367a182b64e338e37f9ede00c
parent6909b249139679acc2ffb04486b5743b7bef8a10 (diff)
utime: resolve an issue of permission denied logs
In case where uid is not set to be 0, there are possible errors from acl xlator. So, set `uid = 0;` with pid indicating this is set from UTIME activity. The message "E [MSGID: 148002] [utime.c:146:gf_utime_set_mdata_setxattr_cbk] 0-dev_SNIP_data-utime: dict set of key for set-ctime-mdata failed [Permission denied]" repeated 2 times between [2019-12-19 21:27:55.042634] and [2019-12-19 21:27:55.047887] Change-Id: Ieadf329835a40a13ac0bf908dac776e66954466c Updates: #832 Signed-off-by: Amar Tumballi <amar@kadalu.io> (cherry picked from commit eb916c057036db8289b41265797e5dce066d1512)
-rw-r--r--libglusterfs/src/glusterfs/common-utils.h3
-rw-r--r--xlators/features/utime/src/utime.c10
2 files changed, 12 insertions, 1 deletions
diff --git a/libglusterfs/src/glusterfs/common-utils.h b/libglusterfs/src/glusterfs/common-utils.h
index d52904021e1..e6f565cb783 100644
--- a/libglusterfs/src/glusterfs/common-utils.h
+++ b/libglusterfs/src/glusterfs/common-utils.h
@@ -165,7 +165,8 @@ enum _gf_special_pid {
GF_CLIENT_PID_SCRUB = -9,
GF_CLIENT_PID_TIER_DEFRAG = -10,
GF_SERVER_PID_TRASH = -11,
- GF_CLIENT_PID_ADD_REPLICA_MOUNT = -12
+ GF_CLIENT_PID_ADD_REPLICA_MOUNT = -12,
+ GF_CLIENT_PID_SET_UTIME = -13,
};
enum _gf_xlator_ipc_targets {
diff --git a/xlators/features/utime/src/utime.c b/xlators/features/utime/src/utime.c
index e3a80b6ed48..c9dfec51a7e 100644
--- a/xlators/features/utime/src/utime.c
+++ b/xlators/features/utime/src/utime.c
@@ -192,8 +192,18 @@ gf_utime_set_mdata_lookup_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
loc.inode = inode_ref(inode);
gf_uuid_copy(loc.gfid, stbuf->ia_gfid);
+
+ pid_t pid = frame->root->pid;
+ uid_t uid = frame->root->uid;
+ gid_t gid = frame->root->gid;
+ frame->root->uid = 0;
+ frame->root->gid = 0;
+ frame->root->pid = GF_CLIENT_PID_SET_UTIME;
STACK_WIND(frame, gf_utime_set_mdata_setxattr_cbk, FIRST_CHILD(this),
FIRST_CHILD(this)->fops->setxattr, &loc, dict, 0, NULL);
+ frame->root->uid = uid;
+ frame->root->gid = gid;
+ frame->root->pid = pid;
dict_unref(dict);
inode_unref(loc.inode);