Red Hat Bugzilla – Bug 1309342
Wrong permissions set on previous copy of truncated files inside trash directory
Last modified: 2016-05-28 01:56:59 EDT
Description of problem:
Enabling trash feature for a volume is resulting in wrong permissions being set on previous copy of a truncated file for which a corresponding path does not exists under trash directory. This only happens for the first truncation of file under same directory hierarchy. Subsequent truncations creates previous copies with correct permissions.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Create, start and mount a simple distributed volume.
2. Enable trash for the volume and change to mount point.
# gluster volume set <VOLNAME> features.trash on
3. Create a temporary directory under root.
# mkdir tmp
4. Create a file inside tmp/ with some content.
# echo 'Hello, World' > tmp/foo
5. Change permissions on tmp/foo
# chmod 0777 tmp/foo
5. truncate tmp/foo
# truncate -s 3 tmp/foo
6. Check the permissions of the previous copy of foo created inside .trashcan/tmp/
# ls -l .trashcan/tmp
.trashcan/tmp/foo_xxxx has different permissions than that of tmp/foo
.trashcan/tmp/foo_xxxx and tmp/foo should match their permission bits.
REVIEW: http://review.gluster.org/13461 (features/trash: Retain file permissions during truncate) posted (#1) for review on master by Anoop C S (email@example.com)
COMMIT: http://review.gluster.org/13461 committed in master by Jeff Darcy (firstname.lastname@example.org)
Author: Anoop C S <email@example.com>
Date: Wed Feb 17 15:50:05 2016 +0530
features/trash: Retain file permissions during truncate
Consider the situation where directory path for a truncated
file does not exists under trash directory. In this scenario
after creating the required path we failed to create the
orginal file with proper permissions. Eventhough we try to
fetch permissions from local->origpath, it was never filled
with required value in truncate and ftruncate call paths.
This change will copy original location to local->origpath
inside both fop handling functions.
Signed-off-by: Anoop C S <firstname.lastname@example.org>
Smoke: Gluster Build System <email@example.com>
CentOS-regression: Gluster Build System <firstname.lastname@example.org>
NetBSD-regression: NetBSD Build System <email@example.com>
Reviewed-by: jiffin tony Thottan <firstname.lastname@example.org>
Reviewed-by: Jeff Darcy <email@example.com>