diff options
| author | Pranith Kumar K <pkarampu@redhat.com> | 2016-09-23 21:06:37 +0530 |
|---|---|---|
| committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2016-10-25 03:19:16 -0700 |
| commit | 10f2cbdfe6b375dbe602ba2c1da09008057f52c8 (patch) | |
| tree | be641f78329730bbc8d642df8209ef8f8ebeb086 /cli/src/cli-cmd-volume.c | |
| parent | f1a0da5bfd7dfb6122fe92e45542960775904391 (diff) | |
storage/posix: Fix race in posix_pstat
Problem:
When one thread is in the process of creating a file/directory
and the other thread is doing readdirp, there is a chance that
posix_pstat, creation fops race in the following manner which
will lead to wrong stat values to be read by parent xlators
like posix-acl.
Creation fops posix_pstat() as part of readdirp
1) file is created with uid/gid 0/0 1) does stat of the path that
is created just now.
2) Does chown to set the correct
uid/gid
3) Sets the acl/user/internal xattrs
4) Sets the gfid on the entry and
completes the creation of the file/dir
2) fills the gfid in the iatt
If unwind of readdirp hits server xlator before creation fop, then
posix-acl remembers uid/gid of the file to be root/root and fails
fops like open etc on it.
Fix:
Reverse the order of filling gfid and filling lstat() values in
posix_pstat() so that if there is gfid in iatt buffer uid/gid
are valid.
>Change-Id: I46caa7f6da7abfa40a0b1d70e35b88de9c64959c
>Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
>Reviewed-on: http://review.gluster.org/15564
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
>CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
>Smoke: Gluster Build System <jenkins@build.gluster.org>
>Reviewed-by: Shyamsundar Ranganathan <srangana@redhat.com>
BUG: 1386072
Change-Id: Ida2bd7297de8e7f51bcb7deda8936ce64ea8ec2b
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/15664
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Smoke: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'cli/src/cli-cmd-volume.c')
0 files changed, 0 insertions, 0 deletions
