[PATCH] common/fuzzy: try to clear immutable flag first in _scratch_fuzz_modify

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



When stressing xfs/083, I found it sometimes fails as the following:

+++ touch 50000 files
setfattr: /home/fsgqa/scratchmnt/INOBT/20627: Operation not permitted
./common/fuzzy: line 18: /home/fsgqa/scratchmnt/INOBT/20627: Operation not permitted
mv: cannot move '/home/fsgqa/scratchmnt/INOBT/20627' to '/home/fsgqa/scratchmnt/INOBT/20627.longer': Operation not permitted
...
xfs_repair did not fix everything

It's simply that INOBT/20627 was an immutable file generated from
fuzzing. Therefore, this patch tries to clear the flag first before
modification. Note that it clears dax flag as well since it prevents
immutable flag from clearing.

Signed-off-by: Gao Xiang <hsiangkao@xxxxxxxxxx>
---
 common/fuzzy | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/common/fuzzy b/common/fuzzy
index 988203b1..3e4f750b 100644
--- a/common/fuzzy
+++ b/common/fuzzy
@@ -14,6 +14,8 @@ _scratch_fuzz_modify() {
 	$XFS_IO_PROG -f -c "pwrite -S 0x63 0 ${blk_sz}" "/tmp/afile" > /dev/null
 	date="$(date)"
 	find "${SCRATCH_MNT}/" -type f 2> /dev/null | head -n "${nr}" | while read f; do
+		# try to remove immutable (and even dax) flag if exists
+		$XFS_IO_PROG -rc 'chattr -x -i' "$f" > /dev/null 2>&1
 		setfattr -n "user.date" -v "${date}" "$f"
 		cat "/tmp/afile" >> "$f"
 		mv "$f" "$f.longer"
-- 
2.18.1




[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux