diff mbox series

[v2] common/fuzzy: try to clear blocking flags first in _scratch_fuzz_modify

Message ID 20200612014018.13807-1-hsiangkao@redhat.com (mailing list archive)
State New, archived
Headers show
Series [v2] common/fuzzy: try to clear blocking flags first in _scratch_fuzz_modify | expand

Commit Message

Gao Xiang June 12, 2020, 1:40 a.m. UTC
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 <hsiangkao@redhat.com>
---
changes since v1:
 - also clear append-only flag (I think that's better than just
   skip since maybe some potential errors exist on these files.)

 common/fuzzy | 2 ++
 1 file changed, 2 insertions(+)
diff mbox series

Patch

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"