From 57eba17be8f840b9d642194bddb22c5d099fb09c Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Fri, 12 Jun 2020 09:40:18 +0800 Subject: [PATCH] common/fuzzy: try to clear blocking flags first in _scratch_fuzz_modify 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 append, immutable flag first before modification. Note that it clears dax flag as well since it prevents immutable flag from clearing. Signed-off-by: Gao Xiang Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- common/fuzzy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/fuzzy b/common/fuzzy index 988203b1..bd08af1c 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 append, immutable (and even dax) flag if exists + $XFS_IO_PROG -rc 'chattr -x -i -a' "$f" > /dev/null 2>&1 setfattr -n "user.date" -v "${date}" "$f" cat "/tmp/afile" >> "$f" mv "$f" "$f.longer"