@@ -226,6 +226,13 @@ _filter_xfs_io()
sed -e "s/[0-9/.]* [GMKiBbytes]*, [0-9]* ops\; [0-9/:. sec]* ([infa0-9/.]* [EPGMKiBbytes]*\/sec and [infa0-9/.]* ops\/sec)/XXX Bytes, X ops\; XX:XX:XX.X (XXX YYY\/sec and XXX ops\/sec)/"
}
+# stderr filter for xfs_io to handle change of error output format (e.g.
+# pwrite64 -> pwrite).
+_filter_xfs_io_error()
+{
+ sed -e "s/^\(.*\)64\(: .*$\)/\1\2/"
+}
+
_filter_xfs_io_unique()
{
common_line_filter | _filter_xfs_io
@@ -62,8 +62,8 @@ _run_btrfs_util_prog qgroup limit 512K 0/5 $SCRATCH_MNT
# so redirect stdout to seqres.full.
# Also, EDQUOTA is expected, which can't be redirected due to the limitation
# of _filter_xfs_io, so golden output will include EDQUOTA error message
-_pwrite_byte 0xcdcdcdcd 0 1M $SCRATCH_MNT/test_file | _filter_xfs_io \
- >> $seqres.full
+_pwrite_byte 0xcdcdcdcd 0 1M $SCRATCH_MNT/test_file 2>&1 >> $seqres.full | \
+ _filter_xfs_io_error
# Fstests will umount the fs, and at umount time, kernel warning will be
# triggered
@@ -1,2 +1,2 @@
QA output created by 126
-pwrite64: Disk quota exceeded
+pwrite: Disk quota exceeded
@@ -57,7 +57,8 @@ $XFS_IO_PROG -f $SCRATCH_MNT/testfile1 -c "pwrite 0 1m" | _filter_xfs_io
# Create a large non-extent-based file filling the fs; this will run out & fail
echo "Create testfile2 to fill the fs"
-$XFS_IO_PROG -f $SCRATCH_MNT/testfile2 -c "pwrite 0 512m" | _filter_xfs_io
+$XFS_IO_PROG -f $SCRATCH_MNT/testfile2 -c "pwrite 0 512m" 2>&1 | \
+ _filter_xfs_io_error
df -h $SCRATCH_MNT >> $seqres.full
# Grow fs by 512m
@@ -3,7 +3,7 @@ Create 1m testfile1
wrote 1048576/1048576 bytes at offset 0
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Create testfile2 to fill the fs
-pwrite64: No space left on device
+pwrite: No space left on device
Resize to 1g
append 2m to testfile1
wrote 2097152/2097152 bytes at offset 1048576
@@ -69,10 +69,8 @@ $XFS_IO_PROG -t -f -c "falloc 0 5g" $dummyfile | _filter_xfs_io
# -ENOSPC should be triggered without any panic
echo "==== change i_size & write data ===="
-$XFS_IO_PROG \
- -c "truncate 96" \
- -c "pwrite -S 0x58 8192 4096" \
-$testfile | _filter_xfs_io
+$XFS_IO_PROG -c "truncate 96" -c "pwrite -S 0x58 8192 4096" $testfile 2>&1 \
+ | _filter_xfs_io_error
echo "==== check data contents ===="
hexdump -C $testfile
@@ -5,7 +5,7 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
==== Fullfill the partition ====
fallocate: No space left on device
==== change i_size & write data ====
-pwrite64: No space left on device
+pwrite: No space left on device
==== check data contents ====
00000000 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 |XXXXXXXXXXXXXXXX|
*
@@ -81,7 +81,8 @@ _pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2
sync
echo "CoW the big file"
-out="$(_pwrite_byte 0x62 0 $((blksz * nr_blks)) $testdir/bigfile 2>&1)"
+out="$(_pwrite_byte 0x62 0 $((blksz * nr_blks)) $testdir/bigfile 2>&1 | \
+ _filter_xfs_io_error)"
echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC"
echo ${out} >> $seqres.full 2>&1
echo ${out}
@@ -89,7 +90,8 @@ echo ${out}
echo "Remount and try CoW again"
_scratch_cycle_mount
-out="$(_pwrite_byte 0x62 0 $((blksz * nr_blks)) $testdir/bigfile 2>&1)"
+out="$(_pwrite_byte 0x62 0 $((blksz * nr_blks)) $testdir/bigfile 2>&1 | \
+ _filter_xfs_io_error)"
echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC"
echo ${out} >> $seqres.full 2>&1
echo ${out}
@@ -4,6 +4,6 @@ Reformat with appropriate size
Create a big file and reflink it
Allocate the rest of the space
CoW the big file
-pwrite64: No space left on device
+pwrite: No space left on device
Remount and try CoW again
-pwrite64: No space left on device
+pwrite: No space left on device
@@ -77,7 +77,8 @@ _pwrite_byte 0x61 0 $fs_size $testdir/eat_my_space >> $seqres.full 2>&1
sync
echo "CoW the big file"
-out="$(_pwrite_byte 0x62 0 $file_size $testdir/bigfile 2>&1)"
+out="$(_pwrite_byte 0x62 0 $file_size $testdir/bigfile 2>&1 | \
+ _filter_xfs_io_error)"
echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC"
echo ${out} >> $seqres.full 2>&1
echo ${out}
@@ -85,7 +86,8 @@ echo ${out}
echo "Remount and try CoW again"
_scratch_cycle_mount
-out="$(_pwrite_byte 0x62 0 $file_size $testdir/bigfile 2>&1)"
+out="$(_pwrite_byte 0x62 0 $file_size $testdir/bigfile 2>&1 | \
+ _filter_xfs_io_error)"
echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC"
echo ${out} >> $seqres.full 2>&1
echo ${out}
@@ -4,6 +4,6 @@ Reformat with appropriate size
Create a big file and reflink it
Allocate the rest of the space
CoW the big file
-pwrite64: No space left on device
+pwrite: No space left on device
Remount and try CoW again
-pwrite64: No space left on device
+pwrite: No space left on device
@@ -82,7 +82,8 @@ _pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2
sync
echo "CoW the big file"
-out="$(_pwrite_byte 0x62 0 $((blksz * nr_blks)) $testdir/bigfile -d 2>&1)"
+out="$(_pwrite_byte 0x62 0 $((blksz * nr_blks)) $testdir/bigfile -d 2>&1 | \
+ _filter_xfs_io_error)"
echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC"
echo ${out} >> $seqres.full 2>&1
echo ${out}
@@ -90,7 +91,8 @@ echo ${out}
echo "Remount and try CoW again"
_scratch_cycle_mount
-out="$(_pwrite_byte 0x62 0 $((blksz * nr_blks)) $testdir/bigfile -d 2>&1)"
+out="$(_pwrite_byte 0x62 0 $((blksz * nr_blks)) $testdir/bigfile -d 2>&1 | \
+ _filter_xfs_io_error)"
echo ${out} | grep -q "No space left on device" || echo "CoW should have failed with ENOSPC"
echo ${out} >> $seqres.full 2>&1
echo ${out}
@@ -4,6 +4,6 @@ Reformat with appropriate size
Create a big file and reflink it
Allocate the rest of the space
CoW the big file
-pwrite64: No space left on device
+pwrite: No space left on device
Remount and try CoW again
-pwrite64: No space left on device
+pwrite: No space left on device
@@ -62,23 +62,27 @@ test_enforcement()
# Firstly fit below block soft limit
echo "Write 900k..."
su $qa_user -c "$XFS_IO_PROG -c 'pwrite 0 900k' -c fsync \
- $SCRATCH_MNT/file1" 2>&1 >>$seqres.full | tee -a $seqres.full
+ $SCRATCH_MNT/file1" 2>&1 >>$seqres.full | \
+ _filter_xfs_io_error | tee -a $seqres.full
repquota -$type $SCRATCH_MNT | grep -v "^root" >>$seqres.full 2>&1
# Secondly overcome block soft limit
echo "Rewrite 1001k..."
su $qa_user -c "$XFS_IO_PROG -c 'pwrite 0 1001k' -c fsync \
- $SCRATCH_MNT/file1" 2>&1 >>$seqres.full | tee -a $seqres.full
+ $SCRATCH_MNT/file1" 2>&1 >>$seqres.full | \
+ _filter_xfs_io_error | tee -a $seqres.full
repquota -$type $SCRATCH_MNT | grep -v "^root" >>$seqres.full 2>&1
# Now try to overcome block hardlimit
echo "Write 1000k..."
su $qa_user -c "$XFS_IO_PROG -c 'pwrite 0 1000k' -c fsync \
- $SCRATCH_MNT/file2" 2>&1 >>$seqres.full | tee -a $seqres.full
+ $SCRATCH_MNT/file2" 2>&1 >>$seqres.full | \
+ _filter_xfs_io_error | tee -a $seqres.full
repquota -$type $SCRATCH_MNT | grep -v "^root" >>$seqres.full 2>&1
# Now sleep for grace time and check that softlimit got enforced
sleep $((grace+1))
echo "Write 4096..."
su $qa_user -c "$XFS_IO_PROG -c 'truncate 0' -c 'pwrite 0 4096' \
- $SCRATCH_MNT/file2" 2>&1 >>$seqres.full | tee -a $seqres.full
+ $SCRATCH_MNT/file2" 2>&1 >>$seqres.full | \
+ _filter_xfs_io_error | tee -a $seqres.full
repquota -$type $SCRATCH_MNT | grep -v "^root" >>$seqres.full 2>&1
# And now the softlimit test for inodes
# First reset space limits so that we don't have problems with
@@ -7,9 +7,9 @@ QA output created by 230
Write 900k...
Rewrite 1001k...
Write 1000k...
-pwrite64: Disk quota exceeded
+pwrite: Disk quota exceeded
Write 4096...
-pwrite64: Disk quota exceeded
+pwrite: Disk quota exceeded
Touch 3+4
Touch 5+6
touch: cannot touch 'SCRATCH_MNT/file6': Disk quota exceeded
@@ -23,9 +23,9 @@ touch: cannot touch 'SCRATCH_MNT/file5': Disk quota exceeded
Write 900k...
Rewrite 1001k...
Write 1000k...
-pwrite64: Disk quota exceeded
+pwrite: Disk quota exceeded
Write 4096...
-pwrite64: Disk quota exceeded
+pwrite: Disk quota exceeded
Touch 3+4
Touch 5+6
touch: cannot touch 'SCRATCH_MNT/file6': Disk quota exceeded
@@ -81,7 +81,8 @@ md5sum $testdir/file2 | _filter_scratch
echo "CoW and unmount"
sync
_dmerror_load_error_table
-$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $bufsize 0 $filesize" $testdir/file2 >> $seqres.full
+$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $bufsize 0 $filesize" $testdir/file2 \
+ 2>&1 >> $seqres.full | _filter_xfs_io_error
_dmerror_load_working_table
_dmerror_unmount
_dmerror_mount
@@ -5,7 +5,7 @@ Compare files
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-271/file1
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-271/file2
CoW and unmount
-pwrite64: Input/output error
+pwrite: Input/output error
Compare files
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-271/file1
Check for damage
@@ -81,7 +81,8 @@ md5sum $testdir/file2 | _filter_scratch
echo "CoW and unmount"
sync
_dmerror_load_error_table
-$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $bufsize 0 $filesize" $testdir/file2 >> $seqres.full
+$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $bufsize 0 $filesize" $testdir/file2 \
+ 2>&1 >> $seqres.full | _filter_xfs_io_error
echo "Clean up the mess"
_dmerror_unmount
@@ -5,7 +5,7 @@ Compare files
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-272/file1
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-272/file2
CoW and unmount
-pwrite64: Input/output error
+pwrite: Input/output error
Clean up the mess
Compare files
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-272/file1
@@ -81,7 +81,8 @@ md5sum $testdir/file2 | _filter_scratch
echo "CoW and unmount"
sync
_dmerror_load_error_table
-$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $bufsize 0 $filesize" $testdir/file2 >> $seqres.full
+$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $bufsize 0 $filesize" $testdir/file2 \
+ 2>&1 >> $seqres.full | _filter_xfs_io_error
_dmerror_load_working_table
rm -rf $testdir/file2 >> $seqres.full 2>&1
_dmerror_unmount
@@ -5,7 +5,7 @@ Compare files
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-276/file1
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-276/file2
CoW and unmount
-pwrite64: Input/output error
+pwrite: Input/output error
Compare files
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-276/file1
Check for damage
@@ -82,7 +82,8 @@ md5sum $testdir/file2 | _filter_scratch
echo "CoW and unmount"
sync
_dmerror_load_error_table
-$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $bufsize 0 $filesize" $testdir/file2 >> $seqres.full
+$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $bufsize 0 $filesize" $testdir/file2 \
+ 2>&1 >> $seqres.full | _filter_xfs_io_error
_dmerror_load_working_table
echo "Rewrite"
@@ -5,7 +5,7 @@ Compare files
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-278/file1
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-278/file2
CoW and unmount
-pwrite64: Input/output error
+pwrite: Input/output error
Rewrite
Compare files
1886e67cf8783e89ce6ddc5bb09a3944 SCRATCH_MNT/test-278/file1
@@ -79,11 +79,13 @@ setquota -u fsgqa 0 1024 0 0 $SCRATCH_MNT
_repquota
echo "Try to dio write the whole file"
-_pwrite_byte 0x62 0 $sz $testdir/file1 -d >> $seqres.full
+_pwrite_byte 0x62 0 $sz $testdir/file1 -d 2>&1 >> $seqres.full | \
+ _filter_xfs_io_error
_repquota
echo "Try to write the whole file"
-_pwrite_byte 0x62 0 $sz $testdir/file1 >> $seqres.full
+_pwrite_byte 0x62 0 $sz $testdir/file1 2>&1 >> $seqres.full | \
+ _filter_xfs_io_error
_repquota
echo "Set hard quota to allow rewrite"
@@ -7,11 +7,11 @@ Set hard quota to prevent rewrite
root -- 0 0 0 4 0 0
fsgqa +- 3072 0 1024 3 0 0
Try to dio write the whole file
-pwrite64: Disk quota exceeded
+pwrite: Disk quota exceeded
root -- 0 0 0 4 0 0
fsgqa +- 3072 0 1024 3 0 0
Try to write the whole file
-pwrite64: Disk quota exceeded
+pwrite: Disk quota exceeded
root -- 0 0 0 4 0 0
fsgqa +- 3072 0 1024 3 0 0
Set hard quota to allow rewrite
@@ -64,12 +64,12 @@ _filter_off()
_filter_pwrite()
{
- sed -e "s/pwrite64: Invalid argument/pwrite64: File too large/g"
+ sed -e "s/pwrite.*: Invalid argument/pwrite: File too large/g"
}
_filter_pread()
{
- sed -e "s/pread64: Invalid argument/read 0\/$bytes bytes at offset <OFFSET>/g" | _filter_io
+ sed -e "s/pread.*: Invalid argument/read 0\/$bytes bytes at offset <OFFSET>/g" | _filter_io
}
write_block()
@@ -40,12 +40,12 @@ read 513/1FSB bytes at offset <OFFSET>
Writing 512 bytes, offset is +0 (direct=false)
-pwrite64: File too large
+pwrite: File too large
Reading 512 bytes (direct=false)
read 0/512 bytes at offset <OFFSET>
Writing 512 bytes, offset is minus 1 byte (direct=false)
-pwrite64: File too large
+pwrite: File too large
Reading 512 bytes (direct=false)
read 0/512 bytes at offset <OFFSET>
@@ -60,12 +60,12 @@ Reading 1 bytes (direct=false)
read 1/1 bytes at offset <OFFSET>
Writing 1FSB bytes, offset is +0 (direct=true)
-pwrite64: File too large
+pwrite: File too large
Reading 1FSB bytes (direct=true)
read 0/1FSB bytes at offset <OFFSET>
Writing 1FSB bytes, offset is minus 1FSB (direct=true)
-pwrite64: File too large
+pwrite: File too large
Reading 1FSB bytes (direct=true)
read 0/1FSB bytes at offset <OFFSET>
@@ -73,32 +73,32 @@ read 0/1FSB bytes at offset <OFFSET>
Writing 512 bytes, offset is +0 (direct=false)
-pwrite64: File too large
+pwrite: File too large
Reading 512 bytes (direct=false)
read 0/512 bytes at offset <OFFSET>
Writing 512 bytes, offset is minus 1 byte (direct=false)
-pwrite64: File too large
+pwrite: File too large
Reading 512 bytes (direct=false)
read 0/512 bytes at offset <OFFSET>
Writing 512 bytes, offset is minus 1FSB (direct=false)
-pwrite64: File too large
+pwrite: File too large
Reading 512 bytes (direct=false)
read 0/512 bytes at offset <OFFSET>
Writing 1 bytes, offset is minus 1FSB (direct=false)
-pwrite64: File too large
+pwrite: File too large
Reading 1 bytes (direct=false)
read 0/1 bytes at offset <OFFSET>
Writing 1FSB bytes, offset is +0 (direct=true)
-pwrite64: File too large
+pwrite: File too large
Reading 1FSB bytes (direct=true)
read 0/1FSB bytes at offset <OFFSET>
Writing 1FSB bytes, offset is minus 1FSB (direct=true)
-pwrite64: File too large
+pwrite: File too large
Reading 1FSB bytes (direct=true)
read 0/1FSB bytes at offset <OFFSET>
@@ -84,8 +84,10 @@ md5sum $testdir/file2 | _filter_scratch
echo "CoW and unmount"
$XFS_IO_PROG -f -c "cowextsize" $testdir/file2 >> $seqres.full
-$XFS_IO_PROG -d -f -c "pwrite -R -S 0x63 -b $real_blksz 0 $((filesize + 1))" $testdir/file2 >> $seqres.full
-$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $real_blksz 0 $((filesize + 1))" $testdir/file2 >> $seqres.full
+$XFS_IO_PROG -d -f -c "pwrite -R -S 0x63 -b $real_blksz 0 $((filesize + 1))" \
+ $testdir/file2 2>&1 >> $seqres.full | _filter_xfs_io_error
+$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $real_blksz 0 $((filesize + 1))" \
+ $testdir/file2 2>&1 >> $seqres.full | _filter_xfs_io_error
_scratch_cycle_mount
echo "Compare files"
@@ -5,7 +5,7 @@ Compare files
2909feb63a37b0e95fe5cfb7f274f7b1 SCRATCH_MNT/test-182/file1
2909feb63a37b0e95fe5cfb7f274f7b1 SCRATCH_MNT/test-182/file2
CoW and unmount
-pwrite64: Invalid argument
+pwrite: Invalid argument
Compare files
2909feb63a37b0e95fe5cfb7f274f7b1 SCRATCH_MNT/test-182/file1
c6ba35da9f73ced20d7781a448cc11d4 SCRATCH_MNT/test-182/file2