diff options
-rw-r--r-- | tests/bugs/geo-replication/bug-1111490.t | 1 | ||||
-rw-r--r-- | xlators/features/gfid-access/src/gfid-access.c | 47 |
2 files changed, 3 insertions, 45 deletions
diff --git a/tests/bugs/geo-replication/bug-1111490.t b/tests/bugs/geo-replication/bug-1111490.t index 28291f25b9b..9686fb5a0ef 100644 --- a/tests/bugs/geo-replication/bug-1111490.t +++ b/tests/bugs/geo-replication/bug-1111490.t @@ -16,6 +16,7 @@ TEST $GFS --volfile-id=/$V0 --volfile-server=$H0 $M0 --aux-gfid-mount # create file with specific gfid uuid=`uuidgen` +TEST chown 10:10 $M0 EXPECT "File creation OK" $PYTHON $(dirname $0)/../../utils/gfid-access.py \ $M0 ROOT file0 $uuid file 10 10 0644 diff --git a/xlators/features/gfid-access/src/gfid-access.c b/xlators/features/gfid-access/src/gfid-access.c index 1c3ff849ebc..a714b66a34d 100644 --- a/xlators/features/gfid-access/src/gfid-access.c +++ b/xlators/features/gfid-access/src/gfid-access.c @@ -392,33 +392,6 @@ ga_heal_cbk (call_frame_t *frame, void *cookie, xlator_t *this, return 0; } -static int32_t -ga_newentry_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *statpre, - struct iatt *statpost, - dict_t *xdata) -{ - ga_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - - /* don't worry about inode linking and other stuff. They'll happen on - * the next lookup. - */ - STACK_DESTROY (frame->root); - - STACK_UNWIND_STRICT (setxattr, local->orig_frame, op_ret, - op_errno, xdata); - - if (local->xdata) - dict_unref (local->xdata); - loc_wipe (&local->loc); - mem_put (local); - - return 0; -} - static int ga_newentry_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, @@ -427,24 +400,9 @@ ga_newentry_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dict_t *xdata) { ga_local_t *local = NULL; - struct iatt temp_stat = {0,}; local = frame->local; - /* no need to proceed if things don't look good here */ - if (op_ret == -1) - goto done; - - temp_stat.ia_uid = local->uid; - temp_stat.ia_gid = local->gid; - - STACK_WIND (frame, ga_newentry_setattr_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->setattr, &local->loc, &temp_stat, - (GF_SET_ATTR_UID | GF_SET_ATTR_GID), xdata); - - return 0; - -done: /* don't worry about inode linking and other stuff. They'll happen on * the next lookup. */ @@ -536,12 +494,11 @@ ga_new_entry (call_frame_t *frame, xlator_t *this, loc_t *loc, data_t *data, local = mem_get0 (this->local_pool); local->orig_frame = frame; - local->uid = args->uid; - local->gid = args->gid; - loc_copy (&local->loc, &tmp_loc); new_frame->local = local; + new_frame->root->uid = args->uid; + new_frame->root->gid = args->gid; if (S_ISDIR (args->st_mode)) { STACK_WIND (new_frame, ga_newentry_cbk, |