fstests: fixes and new tests
cover fstests: fixes and new tests
Hi all,
The first three patches in this series fix some fstests regressions that I've observed over the last couple of weeks.
After that are new swapfile tests that check the swapfile activation code on various weird twists on swapfile format.
The final two tests parameterize xfs_info calls like any other helper program and make sure that in xfsprogs 4.17, fs geometry printing is consistent across the xfs utilities.
--D
PATCH 1/6 xfs/439: don't check filesystem afterwards
From: Darrick J. Wong <[email protected]>
We deliberately corrupted the scratch fs, so don't check it afterwards.
--- tests/xfs/439 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tests/xfs/439 +1 -1
@@ -47,7 +47,7 @@ _cleanup() # real QA test starts here _supported_os Linux _supported_fs xfs -_require_scratch +_require_scratch_nocheck # We corrupt XFS on purpose, and check if assert failures would crash system. _require_no_xfs_bug_on_assert
PATCH 2/6 xfs/122: fix sb_fname[XFSLABEL_MAX] in test
In reply to Darrick J. WongFrom: Darrick J. Wong <[email protected]>
We recently redefined sb_fname's array length to use a symbolic constant instead of a magic number, so update this test accordingly.
--- tests/xfs/122 | 1 + 1 file changed, 1 insertion(+)
tests/xfs/122 +1 -0
@@ -218,6 +218,7 @@ cat /usr/include/xfs/xfs*.h | indent |\ awk ' /typedef struct xfs_sb/ { structon = 1; next } structon && $2 ~ /^sb_/ { sub(/[;,]/,"",$2) + sub(/XFSLABEL_MAX/,"12",$2) printf("printf(\"offsetof(xfs_sb_t, %s) = \\%zu\\n\", offsetof(xfs_sb_t, %s));", $2, $2); next} structon && /}/ { structon = 0; next} '>>$cprog
PATCH 3/6 xfs/310: fix _require_scratch_nocheck ordering
In reply to Darrick J. WongFrom: Darrick J. Wong <[email protected]>
In xfs/310 we have to _require_scratch_nocheck last because anything else that calls _require_scratch (e.g. _require_xfs_scratch_rmapbt) will create the "check scratch after test exit" file.
--- tests/xfs/310 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tests/xfs/310 +1 -1
@@ -45,8 +45,8 @@ _cleanup() # real QA test starts here _supported_os Linux _supported_fs xfs -_require_scratch_nocheck _require_xfs_scratch_rmapbt +_require_scratch_nocheck _require_xfs_io_command "falloc" rm -f $seqres.full
PATCH 4/6 generic: test swapfile creation, activation, and deactivation
In reply to Darrick J. WongFrom: Darrick J. Wong <[email protected]>
Test swapfile activation and deactivation.
--- tests/generic/708 | 115 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/708.out | 8 +++ tests/generic/709 | 91 +++++++++++++++++++++++++++++++++++++++ tests/generic/709.out | 3 + tests/generic/710 | 94 ++++++++++++++++++++++++++++++++++++++++ tests/generic/710.out | 3 + tests/generic/group | 3 + 7 files changed, 317 insertions(+) create mode 100755 tests/generic/708 create mode 100644 tests/generic/708.out create mode 100755 tests/generic/709 create mode 100644 tests/generic/709.out create mode 100755 tests/generic/710 create mode 100644 tests/generic/710.out
tests/generic/708 new file +115 -0
@@ -0,0 +1,115 @@ +#! /bin/bash +# FS QA Test No. 708 +# +# Test various swapfile activation oddities. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + swapoff $swapfile 2> /dev/null + rm -f $swapfile +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# remove previous $seqres.full before test +rm -f $seqres.full + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch_swapfile +_require_test_program mkswap +_require_test_program swapon + +rm -f $seqres.full +_scratch_mkfs >>$seqres.full 2>&1 +_scratch_mount >>$seqres.full 2>&1 + +swapfile=$SCRATCH_MNT/swap +len=$((2 * 1048576)) +page_size=$(get_page_size) + +swapfile_cycle() { + local swapfile="$1" + + $CHATTR_PROG +C $swapfile >> $seqres.full 2>&1 + "$here/src/mkswap" $swapfile >> $seqres.full + "$here/src/swapon" $swapfile 2>&1 | _filter_scratch + swapoff $swapfile 2>> $seeqres.full + rm -f $swapfile +} + +# Create a regular swap file +echo "regular swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $len $swapfile >> $seqres.full +swapfile_cycle $swapfile + +# Create a sparse swap file +echo "sparse swap" | tee -a $seqres.full +$XFS_IO_PROG -f -c "truncate $len" $swapfile >> $seqres.full +swapfile_cycle $swapfile + +# Create a swap file with a little too much junk on the end +echo "too long swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len + 3)) $swapfile >> $seqres.full +swapfile_cycle $swapfile + +# Create a swap file with a large discontiguous range(?) +echo "large discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len * 2)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse $((len / 2)) $len" $swapfile >> $seqres.full 2>&1 +new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfile + +# Create a swap file with a small discontiguous range(?) +echo "small discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len + 1024)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse 66560 1024" $swapfile >> $seqres.full 2>&1 +new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfile + +# Create a ridiculously small swap file. Each swap file must have at least +# two pages after the header page. +echo "tiny swap" | tee -a $seqres.full +tiny_len=$((page_size * 3)) +_pwrite_byte 0x58 0 $tiny_len $swapfile >> $seqres.full +swapfile_cycle $swapfile + +status=0 +exit
tests/generic/708.out new file +8 -0
@@ -0,0 +1,8 @@ +QA output created by 708 +regular swap +sparse swap +swapon: Invalid argument +too long swap +large discontig swap +small discontig swap +tiny swap
tests/generic/709 new file +91 -0
91 lines not on this page · raw message
tests/generic/709.out new file +3 -0
@@ -0,0 +1,3 @@ +QA output created by 709 +fallocate swap +mixed swap
tests/generic/710 new file +94 -0
94 lines not on this page · raw message
tests/generic/710.out new file +3 -0
@@ -0,0 +1,3 @@ +QA output created by 710 +large discontig swap +small discontig swap
tests/generic/group +3 -0
@@ -497,3 +497,6 @@ 493 auto quick swap 494 auto quick swap punch 495 auto quick swap +708 auto quick swap +709 auto quick swap +710 auto quick swap collapse
Re: [PATCH 4/6] generic: test swapfile creation, activation, and deactivation
Quoted 53 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Test swapfile activation and deactivation.
Signed-off-by Darrick J. Wong <[email protected]>--- tests/generic/708 | 115 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/708.out | 8 +++ tests/generic/709 | 91 +++++++++++++++++++++++++++++++++++++++ tests/generic/709.out | 3 + tests/generic/710 | 94 ++++++++++++++++++++++++++++++++++++++++ tests/generic/710.out | 3 + tests/generic/group | 3 + 7 files changed, 317 insertions(+) create mode 100755 tests/generic/708 create mode 100644 tests/generic/708.out create mode 100755 tests/generic/709 create mode 100644 tests/generic/709.out create mode 100755 tests/generic/710 create mode 100644 tests/generic/710.outtests/generic/708 new file +25
-0@@ -0,0 +1,115 @@ +#! /bin/bash +# FS QA Test No. 708 +# +# Test various swapfile activation oddities. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq
tests/generic/708 line 35
Quoted 10 lines
tests/generic/708 new file +10
-0+echo "QA output created by $seq" + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + swapoff $swapfile 2> /dev/null + rm -f $swapfile
No need to remove $swapfile which is on $SCRATCH_DEV, but need to remove $tmp.* :)
(Same in other tests)
Quoted 5 lines
tests/generic/708 new file +5
-0+} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter
tests/generic/708 line 50
Quoted 10 lines
tests/generic/708 new file +10
-0+ +# remove previous $seqres.full before test +rm -f $seqres.full + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch_swapfile +_require_test_program mkswap +_require_test_program swapon
Need _require_xfs_io_command "fcollapse" too, and add 'collapse' group.
Quoted 18 lines
tests/generic/708 new file +18
-0+ +rm -f $seqres.full +_scratch_mkfs >>$seqres.full 2>&1 +_scratch_mount >>$seqres.full 2>&1 + +swapfile=$SCRATCH_MNT/swap +len=$((2 * 1048576)) +page_size=$(get_page_size) + +swapfile_cycle() { + local swapfile="$1" + + $CHATTR_PROG +C $swapfile >> $seqres.full 2>&1 + "$here/src/mkswap" $swapfile >> $seqres.full + "$here/src/swapon" $swapfile 2>&1 | _filter_scratch + swapoff $swapfile 2>> $seeqres.full + rm -f $swapfile +}
tests/generic/708 line 78
Quoted 10 lines
tests/generic/708 new file +10
-0+ +# Create a regular swap file +echo "regular swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $len $swapfile >> $seqres.full +swapfile_cycle $swapfile + +# Create a sparse swap file +echo "sparse swap" | tee -a $seqres.full +$XFS_IO_PROG -f -c "truncate $len" $swapfile >> $seqres.full +swapfile_cycle $swapfile
This is already covered by generic/495.
Quoted 17 lines
tests/generic/708 new file +17
-0+ +# Create a swap file with a little too much junk on the end +echo "too long swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len + 3)) $swapfile >> $seqres.full +swapfile_cycle $swapfile + +# Create a swap file with a large discontiguous range(?) +echo "large discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len * 2)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse $((len / 2)) $len" $swapfile >> $seqres.full 2>&1 +new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfile +
tests/generic/708 line 105
Quoted 10 lines
tests/generic/708 new file +10
-0+# Create a swap file with a small discontiguous range(?) +echo "small discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len + 1024)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse 66560 1024" $swapfile >> $seqres.full 2>&1 +new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfile
Above two cases are duplicated in generic/710 below? Perhaps generic/710 could be dropped.
Thanks,
Eryu
Quoted 251 lines
tests/generic/708 new file +10
-0+ +# Create a ridiculously small swap file. Each swap file must have at least +# two pages after the header page. +echo "tiny swap" | tee -a $seqres.full +tiny_len=$((page_size * 3)) +_pwrite_byte 0x58 0 $tiny_len $swapfile >> $seqres.full +swapfile_cycle $swapfile + +status=0 +exittests/generic/708.out new file +8
-0@@ -0,0 +1,8 @@ +QA output created by 708 +regular swap +sparse swap +swapon: Invalid argument +too long swap +large discontig swap +small discontig swap +tiny swaptests/generic/709 new file +91
-0@@ -0,0 +1,91 @@ +#! /bin/bash +# FS QA Test No. 709 +# +# Test various swapfile activation oddities on filesystems that support +# fallocated swapfiles. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + swapoff $swapfile 2> /dev/null + rm -f $swapfile +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# remove previous $seqres.full before test +rm -f $seqres.full + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch_swapfile +_require_test_program mkswap +_require_test_program swapon +_require_xfs_io_command "falloc" + +rm -f $seqres.full +_scratch_mkfs >>$seqres.full 2>&1 +_scratch_mount >>$seqres.full 2>&1 + +swapfile=$SCRATCH_MNT/swap +len=$((2 * 1048576)) +page_size=$(get_page_size) + +swapfile_cycle() { + local swapfile="$1" + + $CHATTR_PROG +C $swapfile >> $seqres.full 2>&1 + "$here/src/mkswap" $swapfile >> $seqres.full + "$here/src/swapon" $swapfile 2>&1 | _filter_scratch + swapoff $swapfile 2>> $seeqres.full + rm -f $swapfile +} + +# Create a fallocated swap file +echo "fallocate swap" | tee -a $seqres.full +$XFS_IO_PROG -f -c "falloc 0 $len" $swapfile >> $seqres.full +$CHATTR_PROG +C $swapfile >> $seqres.full 2>&1 +"$here/src/mkswap" $swapfile +"$here/src/swapon" $swapfile >> $seqres.full 2>&1 || \ + _notrun "fallocated swap not supported here" +swapoff $swapfile + +# Create a fallocated swap file and touch every other $PAGE_SIZE to create +# a mess of written/unwritten extent records +echo "mixed swap" | tee -a $seqres.full +$XFS_IO_PROG -f -c "falloc 0 $len" $swapfile >> $seqres.full +seq $page_size $((page_size * 2)) $len | while read offset; do + _pwrite_byte 0x58 $offset 1 $swapfile >> $seqres.full +done +swapfile_cycle $swapfile + +status=0 +exittests/generic/709.out new file +3
-0@@ -0,0 +1,3 @@ +QA output created by 709 +fallocate swap +mixed swaptests/generic/710 new file +94
-0@@ -0,0 +1,94 @@ +#! /bin/bash +# FS QA Test No. 710 +# +# Test various swapfile activation oddities, having used fcollapse to +# create discontiguous ranges in the file. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + swapoff $swapfile 2> /dev/null + rm -f $swapfile +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# remove previous $seqres.full before test +rm -f $seqres.full + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch_swapfile +_require_test_program mkswap +_require_test_program swapon +_require_xfs_io_command "fcollapse" + +rm -f $seqres.full +_scratch_mkfs >>$seqres.full 2>&1 +_scratch_mount >>$seqres.full 2>&1 + +swapfile=$SCRATCH_MNT/swap +len=$((2 * 1048576)) +page_size=$(get_page_size) + +swapfile_cycle() { + local swapfile="$1" + + "$here/src/mkswap" $swapfile >> $seqres.full + "$here/src/swapon" $swapfile 2>&1 | _filter_scratch + swapoff $swapfile 2>> $seeqres.full + rm -f $swapfile +} + +# Create a swap file with a large discontiguous range(?) +echo "large discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len * 2)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse $((len / 2)) $len" $swapfile >> $seqres.full 2>&1 +new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfile + +# Create a swap file with a small discontiguous range(?) +echo "small discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len + 1024)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse 66560 1024" $swapfile >> $seqres.full 2>&1 +new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfile + +status=0 +exittests/generic/710.out new file +3
-0@@ -0,0 +1,3 @@ +QA output created by 710 +large discontig swap +small discontig swaptests/generic/group +3
-0@@ -497,3 +497,6 @@ 493 auto quick swap 494 auto quick swap punch 495 auto quick swap +708 auto quick swap +709 auto quick swap +710 auto quick swap collapse
Re: [PATCH 4/6] generic: test swapfile creation, activation, and deactivation
Quoted 59 lines · Eryu Guan
Quoted 58 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Test swapfile activation and deactivation.
Signed-off-by Darrick J. Wong <[email protected]>--- tests/generic/708 | 115 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/708.out | 8 +++ tests/generic/709 | 91 +++++++++++++++++++++++++++++++++++++++ tests/generic/709.out | 3 + tests/generic/710 | 94 ++++++++++++++++++++++++++++++++++++++++ tests/generic/710.out | 3 + tests/generic/group | 3 + 7 files changed, 317 insertions(+) create mode 100755 tests/generic/708 create mode 100644 tests/generic/708.out create mode 100755 tests/generic/709 create mode 100644 tests/generic/709.out create mode 100755 tests/generic/710 create mode 100644 tests/generic/710.outtests/generic/708 new file +30
-0@@ -0,0 +1,115 @@ +#! /bin/bash +# FS QA Test No. 708 +# +# Test various swapfile activation oddities. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 +
Quoted 8 lines
tests/generic/708 line 35
Quoted 5 lines
tests/generic/708 new file +5
-0+_cleanup() +{ + cd / + swapoff $swapfile 2> /dev/null + rm -f $swapfileNo need to remove $swapfile which is on $SCRATCH_DEV, but need to remove $tmp.* :)
Ok. I remember deleting that for some reason, sorry for the thinko.
Quoted 11 lines
(Same in other tests)
Quoted 9 lines
tests/generic/708 new file +9
-0+} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# remove previous $seqres.full before test +rm -f $seqres.full +
Quoted 8 lines
tests/generic/708 line 50
Quoted 6 lines
tests/generic/708 new file +6
-0+# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch_swapfile +_require_test_program mkswap +_require_test_program swaponNeed
_require_xfs_io_command"fcollapse" too, and add 'collapse' group.
Looking at this test I wonder wtf is going on, I thought I moved all the fcollapse bits to 710. Apparently I forgot to remove them from 708.
Quoted 22 lines
Quoted 22 lines
tests/generic/708 new file +22
-0+ +rm -f $seqres.full +_scratch_mkfs >>$seqres.full 2>&1 +_scratch_mount >>$seqres.full 2>&1 + +swapfile=$SCRATCH_MNT/swap +len=$((2 * 1048576)) +page_size=$(get_page_size) + +swapfile_cycle() { + local swapfile="$1" + + $CHATTR_PROG +C $swapfile >> $seqres.full 2>&1 + "$here/src/mkswap" $swapfile >> $seqres.full + "$here/src/swapon" $swapfile 2>&1 | _filter_scratch + swapoff $swapfile 2>> $seeqres.full + rm -f $swapfile +} + +# Create a regular swap file +echo "regular swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $len $swapfile >> $seqres.full
Quoted 8 lines
tests/generic/708 line 78
Quoted 6 lines
tests/generic/708 new file +6
-0+swapfile_cycle $swapfile + +# Create a sparse swap file +echo "sparse swap" | tee -a $seqres.full +$XFS_IO_PROG -f -c "truncate $len" $swapfile >> $seqres.full +swapfile_cycle $swapfileThis is already covered by generic/495.
Ok, dropped.
Quoted 22 lines
Quoted 22 lines
tests/generic/708 new file +22
-0+ +# Create a swap file with a little too much junk on the end +echo "too long swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len + 3)) $swapfile >> $seqres.full +swapfile_cycle $swapfile + +# Create a swap file with a large discontiguous range(?) +echo "large discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len * 2)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse $((len / 2)) $len" $swapfile >> $seqres.full 2>&1 +new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfile + +# Create a swap file with a small discontiguous range(?) +echo "small discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len + 1024)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse 66560 1024" $swapfile >> $seqres.full 2>&1
Quoted 8 lines
tests/generic/708 line 94
Quoted 5 lines
tests/generic/708 new file +5
-0+new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfileAbove two cases are duplicated in generic/710 below? Perhaps generic/710 could be dropped.
Nah, dropping these and letting 710 cover it, for those filesystems that support swapfiles but not fcollapse (e.g. ext2).
Quoted 258 lines
Thanks,
EryuQuoted 245 lines
tests/generic/708 new file +10
-0+ +# Create a ridiculously small swap file. Each swap file must have at least +# two pages after the header page. +echo "tiny swap" | tee -a $seqres.full +tiny_len=$((page_size * 3)) +_pwrite_byte 0x58 0 $tiny_len $swapfile >> $seqres.full +swapfile_cycle $swapfile + +status=0 +exittests/generic/708.out new file +8
-0@@ -0,0 +1,8 @@ +QA output created by 708 +regular swap +sparse swap +swapon: Invalid argument +too long swap +large discontig swap +small discontig swap +tiny swaptests/generic/709 new file +91
-0@@ -0,0 +1,91 @@ +#! /bin/bash +# FS QA Test No. 709 +# +# Test various swapfile activation oddities on filesystems that support +# fallocated swapfiles. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + swapoff $swapfile 2> /dev/null + rm -f $swapfile +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# remove previous $seqres.full before test +rm -f $seqres.full + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch_swapfile +_require_test_program mkswap +_require_test_program swapon +_require_xfs_io_command "falloc" + +rm -f $seqres.full +_scratch_mkfs >>$seqres.full 2>&1 +_scratch_mount >>$seqres.full 2>&1 + +swapfile=$SCRATCH_MNT/swap +len=$((2 * 1048576)) +page_size=$(get_page_size) + +swapfile_cycle() { + local swapfile="$1" + + $CHATTR_PROG +C $swapfile >> $seqres.full 2>&1 + "$here/src/mkswap" $swapfile >> $seqres.full + "$here/src/swapon" $swapfile 2>&1 | _filter_scratch + swapoff $swapfile 2>> $seeqres.full + rm -f $swapfile +} + +# Create a fallocated swap file +echo "fallocate swap" | tee -a $seqres.full +$XFS_IO_PROG -f -c "falloc 0 $len" $swapfile >> $seqres.full +$CHATTR_PROG +C $swapfile >> $seqres.full 2>&1 +"$here/src/mkswap" $swapfile +"$here/src/swapon" $swapfile >> $seqres.full 2>&1 || \ + _notrun "fallocated swap not supported here" +swapoff $swapfile + +# Create a fallocated swap file and touch every other $PAGE_SIZE to create +# a mess of written/unwritten extent records +echo "mixed swap" | tee -a $seqres.full +$XFS_IO_PROG -f -c "falloc 0 $len" $swapfile >> $seqres.full +seq $page_size $((page_size * 2)) $len | while read offset; do + _pwrite_byte 0x58 $offset 1 $swapfile >> $seqres.full +done +swapfile_cycle $swapfile + +status=0 +exittests/generic/709.out new file +3
-0@@ -0,0 +1,3 @@ +QA output created by 709 +fallocate swap +mixed swaptests/generic/710 new file +94
-0@@ -0,0 +1,94 @@ +#! /bin/bash +# FS QA Test No. 710 +# +# Test various swapfile activation oddities, having used fcollapse to +# create discontiguous ranges in the file. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + swapoff $swapfile 2> /dev/null + rm -f $swapfile +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# remove previous $seqres.full before test +rm -f $seqres.full + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch_swapfile +_require_test_program mkswap +_require_test_program swapon +_require_xfs_io_command "fcollapse" + +rm -f $seqres.full +_scratch_mkfs >>$seqres.full 2>&1 +_scratch_mount >>$seqres.full 2>&1 + +swapfile=$SCRATCH_MNT/swap +len=$((2 * 1048576)) +page_size=$(get_page_size) + +swapfile_cycle() { + local swapfile="$1" + + "$here/src/mkswap" $swapfile >> $seqres.full + "$here/src/swapon" $swapfile 2>&1 | _filter_scratch + swapoff $swapfile 2>> $seeqres.full + rm -f $swapfile +} + +# Create a swap file with a large discontiguous range(?) +echo "large discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len * 2)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse $((len / 2)) $len" $swapfile >> $seqres.full 2>&1 +new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfile + +# Create a swap file with a small discontiguous range(?) +echo "small discontig swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len + 1024)) $swapfile >> $seqres.full +old_sz="$(stat -c '%s' $swapfile)" +$XFS_IO_PROG -c "fcollapse 66560 1024" $swapfile >> $seqres.full 2>&1 +new_sz="$(stat -c '%s' $swapfile)" +if [ $old_sz -gt $new_sz ]; then + swapfile_cycle $swapfile +fi +rm -f $swapfile + +status=0 +exittests/generic/710.out new file +3
-0@@ -0,0 +1,3 @@ +QA output created by 710 +large discontig swap +small discontig swaptests/generic/group +0
-0tests/generic/group line 502
Quoted 6 lines
tests/generic/group +3
-0@@ -497,3 +497,6 @@ 493 auto quick swap 494 auto quick swap punch 495 auto quick swap +708 auto quick swap +709 auto quick swap +710 auto quick swap collapse--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 4/6 generic: test swapfile creation, activation, and deactivation
In reply to Darrick J. WongFrom: Darrick J. Wong <[email protected]>
Test swapfile activation and deactivation.
---
v2: fix duplicated test hunks and other bugs
--- tests/generic/708 | 90 ++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/708.out | 4 ++ tests/generic/709 | 93 +++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/709.out | 3 ++ tests/generic/710 | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/710.out | 3 ++ tests/generic/group | 3 ++ 7 files changed, 292 insertions(+) create mode 100755 tests/generic/708 create mode 100644 tests/generic/708.out create mode 100755 tests/generic/709 create mode 100644 tests/generic/709.out create mode 100755 tests/generic/710 create mode 100644 tests/generic/710.out
tests/generic/708 new file +90 -0
@@ -0,0 +1,90 @@ +#! /bin/bash +# FS QA Test No. 708 +# +# Test various swapfile activation oddities. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + swapoff $swapfile 2> /dev/null + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# remove previous $seqres.full before test +rm -f $seqres.full + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch_swapfile +_require_test_program mkswap +_require_test_program swapon + +rm -f $seqres.full +_scratch_mkfs >>$seqres.full 2>&1 +_scratch_mount >>$seqres.full 2>&1 + +swapfile=$SCRATCH_MNT/swap +len=$((2 * 1048576)) +page_size=$(get_page_size) + +swapfile_cycle() { + local swapfile="$1" + + $CHATTR_PROG +C $swapfile >> $seqres.full 2>&1 + "$here/src/mkswap" $swapfile >> $seqres.full + "$here/src/swapon" $swapfile 2>&1 | _filter_scratch + swapoff $swapfile 2>> $seeqres.full + rm -f $swapfile +} + +# Create a regular swap file +echo "regular swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $len $swapfile >> $seqres.full +swapfile_cycle $swapfile + +# Create a swap file with a little too much junk on the end +echo "too long swap" | tee -a $seqres.full +_pwrite_byte 0x58 0 $((len + 3)) $swapfile >> $seqres.full +swapfile_cycle $swapfile + +# Create a ridiculously small swap file. Each swap file must have at least +# two pages after the header page. +echo "tiny swap" | tee -a $seqres.full +tiny_len=$((page_size * 3)) +_pwrite_byte 0x58 0 $tiny_len $swapfile >> $seqres.full +swapfile_cycle $swapfile + +status=0 +exit
tests/generic/708.out new file +4 -0
@@ -0,0 +1,4 @@ +QA output created by 708 +regular swap +too long swap +tiny swap
tests/generic/709 new file +93 -0
93 lines not on this page · raw message
tests/generic/709.out new file +3 -0
@@ -0,0 +1,3 @@ +QA output created by 709 +fallocate swap +mixed swap
tests/generic/710 new file +96 -0
96 lines not on this page · raw message
tests/generic/710.out new file +3 -0
@@ -0,0 +1,3 @@ +QA output created by 710 +large discontig swap +small discontig swap
tests/generic/group +3 -0
@@ -497,3 +497,6 @@ 493 auto quick swap 494 auto quick swap punch 495 auto quick swap +708 auto quick swap +709 auto quick swap +710 auto quick swap collapse
PATCH 5/6 xfs: abstract xfs_info into $XFS_INFO_PROG
In reply to Darrick J. WongFrom: Darrick J. Wong <[email protected]>
Abstract calls to xfs_info into $XFS_INFO_PROG like we do for all other xfs utilities.
--- common/attr | 2 +- common/config | 1 + common/populate | 18 +++++++++--------- common/rc | 2 +- common/xfs | 6 +++--- tests/shared/298 | 2 +- tests/xfs/067 | 2 +- tests/xfs/073 | 4 ++-- tests/xfs/085 | 2 +- tests/xfs/086 | 2 +- tests/xfs/087 | 2 +- tests/xfs/088 | 2 +- tests/xfs/089 | 2 +- tests/xfs/091 | 2 +- tests/xfs/093 | 2 +- tests/xfs/097 | 4 ++-- tests/xfs/099 | 2 +- tests/xfs/100 | 2 +- tests/xfs/101 | 2 +- tests/xfs/102 | 2 +- tests/xfs/105 | 2 +- tests/xfs/112 | 2 +- tests/xfs/113 | 2 +- tests/xfs/127 | 2 +- tests/xfs/130 | 2 +- tests/xfs/190 | 2 +- tests/xfs/206 | 2 +- tests/xfs/233 | 2 +- tests/xfs/235 | 2 +- tests/xfs/271 | 2 +- tests/xfs/307 | 2 +- tests/xfs/308 | 2 +- tests/xfs/310 | 2 +- tests/xfs/348 | 2 +- 34 files changed, 46 insertions(+), 45 deletions(-)
common/attr +1 -1
@@ -30,7 +30,7 @@ _acl_get_max() # CRC format filesystems have much larger ACL counts. The actual # number is into the thousands, but testing that meany takes too # long, so just test well past the old limit of 25. - xfs_info $TEST_DIR | _filter_mkfs > /dev/null 2> $tmp.info + $XFS_INFO_PROG $TEST_DIR | _filter_mkfs > /dev/null 2> $tmp.info . $tmp.info rm $tmp.info if [ $_fs_has_crcs -eq 0 ]; then
common/config +1 -0
@@ -205,6 +205,7 @@ export TIMEOUT_PROG="$(type -P timeout)" export SETCAP_PROG="$(type -P setcap)" export GETCAP_PROG="$(type -P getcap)" export CHECKBASHISMS_PROG="$(type -P checkbashisms)" +export XFS_INFO_PROG="$(type -P xfs_info)" # use 'udevadm settle' or 'udevsettle' to wait for lv to be settled. # newer systems have udevadm command but older systems like RHEL5 don't.
common/populate +9 -9
@@ -117,7 +117,7 @@ _populate_xfs_qmount_option() fi # Turn on all the quotas - if xfs_info "${TEST_DIR}" | grep -q 'crc=1'; then + if $XFS_INFO_PROG "${TEST_DIR}" | grep -q 'crc=1'; then # v5 filesystems can have group & project quotas quota="usrquota,grpquota,prjquota" else
@@ -151,7 +151,7 @@ _scratch_xfs_populate() { _populate_xfs_qmount_option _scratch_mount blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" - dblksz="$(xfs_info "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" + dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" leaf_lblk="$((32 * 1073741824 / blksz))" node_lblk="$((64 * 1073741824 / blksz))"
@@ -267,7 +267,7 @@ _scratch_xfs_populate() { ./src/punch-alternating "${SCRATCH_MNT}/BNOBT" # Reverse-mapping btree - is_rmapbt="$(xfs_info "${SCRATCH_MNT}" | grep -c 'rmapbt=1')" + is_rmapbt="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep -c 'rmapbt=1')" if [ $is_rmapbt -gt 0 ]; then echo "+ rmapbt btree" nr="$((blksz * 2 / 24))"
@@ -276,7 +276,7 @@ _scratch_xfs_populate() { fi # Realtime Reverse-mapping btree - is_rt="$(xfs_info "${SCRATCH_MNT}" | grep -c 'rtextents=[1-9]')" + is_rt="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep -c 'rtextents=[1-9]')" if [ $is_rmapbt -gt 0 ] && [ $is_rt -gt 0 ]; then echo "+ rtrmapbt btree" nr="$((blksz * 2 / 32))"
@@ -285,7 +285,7 @@ _scratch_xfs_populate() { fi # Reference-count btree - is_reflink="$(xfs_info "${SCRATCH_MNT}" | grep -c 'reflink=1')" + is_reflink="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep -c 'reflink=1')" if [ $is_reflink -gt 0 ]; then echo "+ reflink btree" nr="$((blksz * 2 / 12))"
@@ -534,12 +534,12 @@ _scratch_xfs_populate_check() { leaf_attr="$(__populate_find_inode "${SCRATCH_MNT}/ATTR.FMT_LEAF")" node_attr="$(__populate_find_inode "${SCRATCH_MNT}/ATTR.FMT_NODE")" btree_attr="$(__populate_find_inode "${SCRATCH_MNT}/ATTR.FMT_BTREE")" - is_finobt=$(xfs_info "${SCRATCH_MNT}" | grep -c 'finobt=1') - is_rmapbt=$(xfs_info "${SCRATCH_MNT}" | grep -c 'rmapbt=1') - is_reflink=$(xfs_info "${SCRATCH_MNT}" | grep -c 'reflink=1') + is_finobt=$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep -c 'finobt=1') + is_rmapbt=$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep -c 'rmapbt=1') + is_reflink=$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep -c 'reflink=1') blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" - dblksz="$(xfs_info "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" + dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" leaf_lblk="$((32 * 1073741824 / blksz))" node_lblk="$((64 * 1073741824 / blksz))" umount "${SCRATCH_MNT}"
common/rc +1 -1
@@ -328,7 +328,7 @@ _supports_filetype() local fstyp=`$DF_PROG $dir | tail -1 | $AWK_PROG '{print $2}'` case "$fstyp" in xfs) - xfs_info $dir | grep -q "ftype=1" + $XFS_INFO_PROG $dir | grep -q "ftype=1" ;; ext2|ext3|ext4) local dev=`$DF_PROG $dir | tail -1 | $AWK_PROG '{print $1}'`
common/xfs +3 -3
@@ -236,7 +236,7 @@ _require_scratch_xfs_crc() _scratch_mkfs_xfs >/dev/null 2>&1 _try_scratch_mount >/dev/null 2>&1 \ || _notrun "Kernel doesn't support crc feature" - xfs_info $SCRATCH_MNT | grep -q 'crc=1' || _notrun "crc feature not supported by this filesystem" + $XFS_INFO_PROG $SCRATCH_MNT | grep -q 'crc=1' || _notrun "crc feature not supported by this filesystem" _scratch_unmount }
@@ -467,7 +467,7 @@ _require_xfs_test_rmapbt() { _require_test - if [ "$(xfs_info "$TEST_DIR" | grep -c "rmapbt=1")" -ne 1 ]; then + if [ "$($XFS_INFO_PROG "$TEST_DIR" | grep -c "rmapbt=1")" -ne 1 ]; then _notrun "rmapbt not supported by test filesystem type: $FSTYP" fi }
@@ -478,7 +478,7 @@ _require_xfs_scratch_rmapbt() _scratch_mkfs > /dev/null _scratch_mount - if [ "$(xfs_info "$SCRATCH_MNT" | grep -c "rmapbt=1")" -ne 1 ]; then + if [ "$($XFS_INFO_PROG "$SCRATCH_MNT" | grep -c "rmapbt=1")" -ne 1 ]; then _scratch_unmount _notrun "rmapbt not supported by scratch filesystem type: $FSTYP" fi
tests/shared/298 +1 -1
@@ -69,7 +69,7 @@ get_free_sectors() }' ;; xfs) - agsize=`xfs_info $loop_mnt | $SED_PROG -n 's/.*agsize=\(.*\) blks.*/\1/p'` + agsize=`$XFS_INFO_PROG $loop_mnt | $SED_PROG -n 's/.*agsize=\(.*\) blks.*/\1/p'` # Convert free space (agno, block, length) to (start sector, end sector) $UMOUNT_PROG $loop_mnt $XFS_DB_PROG -r -c "freesp -d" $img_file | $SED_PROG '/^.*from/,$d'| \
tests/xfs/067 +1 -1
@@ -53,7 +53,7 @@ if [ "$isize" -lt 1024 ]; then || _notrun "Cannot mkfs for this test using MKFS_OPTIONS specified" fi _scratch_mount -xfs_info $SCRATCH_MNT >>$seqres.full +$XFS_INFO_PROG $SCRATCH_MNT >>$seqres.full cd $SCRATCH_MNT echo ""
tests/xfs/073 +2 -2
@@ -107,11 +107,11 @@ _verify_copy() diff -u $tmp.manifest1 $tmp.manifest2 echo comparing new image geometry to old - xfs_info $source_dir \ + $XFS_INFO_PROG $source_dir \ | _filter_copy $source $source_dir '/dev/loop.' '#' \ | tr -s ' ' \ > $tmp.geometry1 - xfs_info $target_dir \ + $XFS_INFO_PROG $target_dir \ | _filter_copy $target $target_dir '/dev/loop.' '#' \ | tr -s ' ' \ > $tmp.geometry2
tests/xfs/085 +1 -1
@@ -78,7 +78,7 @@ for x in `seq 2 64`; do touch "${TESTFILE}.${x}" done inode="$(stat -c '%i' "${TESTFILE}.1")" -agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" +agcount="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" umount "${SCRATCH_MNT}" echo "+ check fs"
tests/xfs/086 +1 -1
@@ -79,7 +79,7 @@ for x in `seq 2 64`; do touch "${TESTFILE}.${x}" done inode="$(stat -c '%i' "${TESTFILE}.1")" -agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" +agcount="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" test "${agcount}" -gt 1 || _notrun "Single-AG XFS not supported" umount "${SCRATCH_MNT}"
tests/xfs/087 +1 -1
@@ -79,7 +79,7 @@ for x in `seq 2 64`; do touch "${TESTFILE}.${x}" done inode="$(stat -c '%i' "${TESTFILE}.1")" -agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" +agcount="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" umount "${SCRATCH_MNT}" echo "+ check fs"
tests/xfs/088 +1 -1
@@ -79,7 +79,7 @@ for x in `seq 2 64`; do touch "${TESTFILE}.${x}" done inode="$(stat -c '%i' "${TESTFILE}.1")" -agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" +agcount="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" umount "${SCRATCH_MNT}" echo "+ check fs"
tests/xfs/089 +1 -1
@@ -79,7 +79,7 @@ for x in `seq 2 64`; do touch "${TESTFILE}.${x}" done inode="$(stat -c '%i' "${TESTFILE}.1")" -agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" +agcount="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" umount "${SCRATCH_MNT}" echo "+ check fs"
tests/xfs/091 +1 -1
@@ -79,7 +79,7 @@ for x in `seq 2 64`; do touch "${TESTFILE}.${x}" done inode="$(stat -c '%i' "${TESTFILE}.1")" -agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" +agcount="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" umount "${SCRATCH_MNT}" echo "+ check fs"
tests/xfs/093 +1 -1
@@ -79,7 +79,7 @@ for x in `seq 2 64`; do touch "${TESTFILE}.${x}" done inode="$(stat -c '%i' "${TESTFILE}.1")" -agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" +agcount="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" umount "${SCRATCH_MNT}" echo "+ check fs"
tests/xfs/097 +2 -2
@@ -65,7 +65,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount -xfs_info "${SCRATCH_MNT}" | grep -q "finobt=1" || _notrun "finobt not enabled" +$XFS_INFO_PROG "${SCRATCH_MNT}" | grep -q "finobt=1" || _notrun "finobt not enabled" blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" echo "+ make some files"
@@ -82,7 +82,7 @@ for x in `seq 2 64`; do touch "${TESTFILE}.${x}" done inode="$(stat -c '%i' "${TESTFILE}.1")" -agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" +agcount="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" umount "${SCRATCH_MNT}" echo "+ check fs"
tests/xfs/099 +1 -1
@@ -61,7 +61,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount -dblksz="$(xfs_info "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" +dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" nr="$((dblksz / 40))" blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" leaf_lblk="$((32 * 1073741824 / blksz))"
tests/xfs/100 +1 -1
@@ -61,7 +61,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount -dblksz="$(xfs_info "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" +dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" nr="$((dblksz / 12))" blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" leaf_lblk="$((32 * 1073741824 / blksz))"
tests/xfs/101 +1 -1
@@ -61,7 +61,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount -dblksz="$(xfs_info "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" +dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" nr="$((dblksz / 12))" blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" leaf_lblk="$((32 * 1073741824 / blksz))"
tests/xfs/102 +1 -1
@@ -61,7 +61,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount -dblksz="$(xfs_info "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" +dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" nr="$((16 * dblksz / 40))" blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" leaf_lblk="$((32 * 1073741824 / blksz))"
tests/xfs/105 +1 -1
@@ -61,7 +61,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount -dblksz="$(xfs_info "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" +dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" nr="$((16 * dblksz / 40))" blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" leaf_lblk="$((32 * 1073741824 / blksz))"
tests/xfs/112 +1 -1
@@ -61,7 +61,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount -dblksz="$(xfs_info "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" +dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" nr="$((16 * dblksz / 40))" blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" leaf_lblk="$((32 * 1073741824 / blksz))"
tests/xfs/113 +1 -1
@@ -61,7 +61,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount -dblksz="$(xfs_info "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" +dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" nr="$((128 * dblksz / 40))" blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" leaf_lblk="$((32 * 1073741824 / blksz))"
tests/xfs/127 +1 -1
@@ -68,7 +68,7 @@ _scratch_cycle_mount echo "Create more reflink copies" _cp_reflink $testdir/original $testdir/copy3 -xfs_info $SCRATCH_MNT >> $seqres.full +$XFS_INFO_PROG $SCRATCH_MNT >> $seqres.full # success, all done status=0
tests/xfs/130 +1 -1
@@ -58,7 +58,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" -agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" +agcount="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')" echo "+ make some files" _pwrite_byte 0x62 0 $((blksz * 64)) "${SCRATCH_MNT}/file0" >> "$seqres.full"
tests/xfs/190 +1 -1
@@ -54,7 +54,7 @@ _supported_os Linux _require_scratch _scratch_mkfs_xfs >/dev/null 2>&1 _scratch_mount -fsblocksize=`xfs_info $SCRATCH_MNT|sed 's/=/ /g'|awk '/^data / { print $3 }'` +fsblocksize=`$XFS_INFO_PROG $SCRATCH_MNT|sed 's/=/ /g'|awk '/^data / { print $3 }'` dd if=/dev/zero of=$SCRATCH_MNT/$filename bs=1024k count=10 >> $seqres.full 2>&1
tests/xfs/206 +1 -1
@@ -104,7 +104,7 @@ xfs_growfs $tmpdir | mkfs_filter # and double-check the new geometry echo "=== xfs_info ===" -xfs_info $tmpdir | mkfs_filter +$XFS_INFO_PROG $tmpdir | mkfs_filter # _cleanup cleans up for us
tests/xfs/233 +1 -1
@@ -66,7 +66,7 @@ _scratch_cycle_mount echo "Create more copies" cp -p $testdir/original $testdir/copy3 -xfs_info $SCRATCH_MNT >> $seqres.full +$XFS_INFO_PROG $SCRATCH_MNT >> $seqres.full # success, all done status=0
tests/xfs/235 +1 -1
@@ -56,7 +56,7 @@ _scratch_mkfs_xfs > /dev/null echo "+ mount fs image" _scratch_mount blksz=$(stat -f -c '%s' ${SCRATCH_MNT}) -agcount=$(xfs_info ${SCRATCH_MNT} | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g') +agcount=$($XFS_INFO_PROG ${SCRATCH_MNT} | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g') echo "+ make some files" _pwrite_byte 0x62 0 $((blksz * 64)) ${SCRATCH_MNT}/file0 >> $seqres.full
tests/xfs/271 +1 -1
@@ -51,7 +51,7 @@ echo "Format and mount" _scratch_mkfs > "$seqres.full" 2>&1 _scratch_mount -agcount=$(xfs_info $SCRATCH_MNT | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g') +agcount=$($XFS_INFO_PROG $SCRATCH_MNT | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g') echo "Get fsmap" | tee -a $seqres.full $XFS_IO_PROG -c 'fsmap -v' $SCRATCH_MNT > $TEST_DIR/fsmap
tests/xfs/307 +1 -1
@@ -52,7 +52,7 @@ rm -f $seqres.full echo "Format" _scratch_mkfs > $seqres.full 2>&1 _scratch_mount >> $seqres.full -is_rmap=$(xfs_info $SCRATCH_MNT | grep -c "rmapbt=1") +is_rmap=$($XFS_INFO_PROG $SCRATCH_MNT | grep -c "rmapbt=1") _scratch_unmount _get_agf_data() {
tests/xfs/308 +1 -1
@@ -52,7 +52,7 @@ rm -f $seqres.full echo "Format" _scratch_mkfs > $seqres.full 2>&1 _scratch_mount >> $seqres.full -is_rmap=$(xfs_info $SCRATCH_MNT | grep -c "rmapbt=1") +is_rmap=$($XFS_INFO_PROG $SCRATCH_MNT | grep -c "rmapbt=1") _scratch_unmount _get_agf_data() {
tests/xfs/310 +1 -1
@@ -67,7 +67,7 @@ sectors=$(( (nr_blks * 3) * blksz / 512 )) # each AG must have > 2^21 blocks _dmhugedisk_init $sectors _mkfs_dev -d agcount=2 $DMHUGEDISK_DEV _mount $DMHUGEDISK_DEV $SCRATCH_MNT -xfs_info $SCRATCH_MNT >> $seqres.full +$XFS_INFO_PROG $SCRATCH_MNT >> $seqres.full echo "Create the original file blocks" mkdir $testdir
tests/xfs/348 +1 -1
@@ -70,7 +70,7 @@ mknod $testdir/CHRDEV c 1 1 mknod $testdir/BLKDEV b 1 1 mknod $testdir/FIFO p -xfs_info $SCRATCH_MNT | grep -q "ftype=1" && FTYPE_FEATURE=1 +$XFS_INFO_PROG $SCRATCH_MNT | grep -q "ftype=1" && FTYPE_FEATURE=1 # Record test dir inode for xfs_repair filter inode_filter=$tmp.sed
Re: [PATCH 5/6] xfs: abstract xfs_info into $XFS_INFO_PROG
Quoted 11 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Abstract calls to
xfs_infointo $XFS_INFO_PROG like we do for all other xfs utilities.Signed-off-by Darrick J. Wong <[email protected]>--- common/attr | 2 +- common/config | 1 + common/populate | 18 +++++++++--------- common/rc | 2 +-
Better to make xfs_info mandatory too when testing xfs, so I did the below diff on commit
common/rc +1 -0
@@ -136,6 +136,7 @@ case "$FSTYP" in [ "$XFS_REPAIR_PROG" = "" ] && _fatal "xfs_repair not found" [ "$XFS_DB_PROG" = "" ] && _fatal "xfs_db not found" [ "$MKFS_XFS_PROG" = "" ] && _fatal "mkfs_xfs not found" + [ "$XFS_INFO_PROG" = "" ] && _fatal "xfs_info not found" . ./common/xfs ;;
Thanks,
Eryu
Re: [PATCH 5/6] xfs: abstract xfs_info into $XFS_INFO_PROG
Quoted 13 lines · Eryu Guan
Quoted 11 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Abstract calls to
xfs_infointo $XFS_INFO_PROG like we do for all other xfs utilities.Signed-off-by Darrick J. Wong <[email protected]>--- common/attr | 2 +- common/config | 1 + common/populate | 18 +++++++++--------- common/rc | 2 +-
Quoted 2 lines
Better to make
xfs_infomandatory too when testing xfs, so I did the below diff on commit
Ok, thank you for making the change on the way in. :)
--D
Quoted 19 lines
common/rc +1
-0@@ -136,6 +136,7 @@ case "$FSTYP" in [ "$XFS_REPAIR_PROG" = "" ] && _fatal "xfs_repair not found" [ "$XFS_DB_PROG" = "" ] && _fatal "xfs_db not found" [ "$MKFS_XFS_PROG" = "" ] && _fatal "mkfs_xfs not found" + [ "$XFS_INFO_PROG" = "" ] && _fatal "xfs_info not found" . ./common/xfs ;;Thanks,
Eryu
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 6/6 xfs: make sure pretty printed geometry output matches
In reply to Darrick J. WongFrom: Darrick J. Wong <[email protected]>
Make sure that all of our commands that can print geometry information all print the /same/ information.
--- common/xfs | 41 +++++++++++++++++++++++++ tests/xfs/710 | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/710.out | 2 + tests/xfs/group | 1 + 4 files changed, 132 insertions(+) create mode 100755 tests/xfs/710 create mode 100644 tests/xfs/710.out
common/xfs +41 -0
@@ -710,3 +710,44 @@ _require_xfs_db_write_array() rm -f $TEST_DIR/$seq.img [ $supported -eq 0 ] && _notrun "xfs_db write can't support array" } + +_require_xfs_spaceman_command() +{ + if [ -z "$1" ] + then + echo "Usage: _require_xfs_spaceman_command command [switch]" 1>&2 + exit 1 + fi + local command=$1 + shift + local param="$*" + local param_checked=0 + local opts="" + + _require_command "$XFS_SPACEMAN_PROG" "xfs_spaceman" + + testfile=$TEST_DIR/$$.xfs_spaceman + case $command in + *) + testio=`$XFS_SPACEMAN_PROG -c "help $command" $TEST_DIR 2>&1` + esac + + rm -f $testfile 2>&1 > /dev/null + echo $testio | grep -q "not found" && \ + _notrun "xfs_spaceman $command support is missing" + echo $testio | grep -q "Operation not supported" && \ + _notrun "xfs_spaceman $command failed (old kernel/wrong fs?)" + echo $testio | grep -q "Invalid" && \ + _notrun "xfs_spaceman $command failed (old kernel/wrong fs/bad args?)" + echo $testio | grep -q "foreign file active" && \ + _notrun "xfs_spaceman $command not supported on $FSTYP" + echo $testio | grep -q "Function not implemented" && \ + _notrun "xfs_spaceman $command support is missing (missing syscall?)" + + [ -n "$param" ] || return + + if [ $param_checked -eq 0 ]; then + $XFS_IO_PROG -c "help $command" | grep -q "^ $param --" || \ + _notrun "xfs_spaceman $command doesn't support $param" + fi +}
tests/xfs/710 new file +88 -0
88 lines not on this page · raw message
tests/xfs/710.out new file +2 -0
@@ -0,0 +1,2 @@ +QA output created by 710 +Silence is golden.
tests/xfs/group +1 -0
@@ -445,3 +445,4 @@ 445 auto quick filestreams 446 auto quick 447 auto mount +710 auto quick
Re: [PATCH 6/6] xfs: make sure pretty printed geometry output matches
Quoted 52 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Make sure that all of our commands that can print geometry information all print the /same/ information.
Signed-off-by Darrick J. Wong <[email protected]>--- common/xfs | 41 +++++++++++++++++++++++++ tests/xfs/710 | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/710.out | 2 + tests/xfs/group | 1 + 4 files changed, 132 insertions(+) create mode 100755 tests/xfs/710 create mode 100644 tests/xfs/710.outcommon/xfs +28
-0@@ -710,3 +710,44 @@ _require_xfs_db_write_array() rm -f $TEST_DIR/$seq.img [ $supported -eq 0 ] && _notrun "xfs_db write can't support array" } + +_require_xfs_spaceman_command() +{ + if [ -z "$1" ] + then + echo "Usage: _require_xfs_spaceman_command command [switch]" 1>&2 + exit 1 + fi + local command=$1 + shift + local param="$*" + local param_checked=0 + local opts="" + + _require_command "$XFS_SPACEMAN_PROG" "xfs_spaceman" + + testfile=$TEST_DIR/$$.xfs_spaceman + case $command in + *) + testio=`$XFS_SPACEMAN_PROG -c "help $command" $TEST_DIR 2>&1` + esac + + rm -f $testfile 2>&1 > /dev/null + echo $testio | grep -q "not found" && \ + _notrun "xfs_spaceman $command support is missing" + echo $testio | grep -q "Operation not supported" && \ + _notrun "xfs_spaceman $command failed (old kernel/wrong fs?)" + echo $testio | grep -q "Invalid" && \
common/xfs _require_xfs_db_write_array() · line 750
Quoted 10 lines
common/xfs +10
-0+ _notrun "xfs_spaceman $command failed (old kernel/wrong fs/bad args?)" + echo $testio | grep -q "foreign file active" && \ + _notrun "xfs_spaceman $command not supported on $FSTYP" + echo $testio | grep -q "Function not implemented" && \ + _notrun "xfs_spaceman $command support is missing (missing syscall?)" + + [ -n "$param" ] || return + + if [ $param_checked -eq 0 ]; then + $XFS_IO_PROG -c "help $command" | grep -q "^ $param --" || \
^^^^^^^^^^^ XFS_SPACEMAN_PROG
Quoted 31 lines
common/xfs +3
-0+ _notrun "xfs_spaceman $command doesn't support $param" + fi +}tests/xfs/710 new file +22
-0@@ -0,0 +1,88 @@ +#! /bin/bash +# FS QA Test No. 710 +# +# Make sure pretty printed XFS geometry is the same across all programs. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#-----------------------------------------------------------------------
tests/xfs/710 line 32
Quoted 10 lines
tests/xfs/710 new file +10
-0+# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 +trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
"rm -f $tmp.*" is done in _cleanup()
tests/xfs/710 line 44
Quoted 12 lines
tests/xfs/710 new file +12
-0+ +_cleanup() +{ + cd / + rm -f $tmp.* +} + +rm -f $seqres.full + +# get standard environment, filters and checks +. ./common/rc +. ./common/xfs
No need to source common/xfs, common/rc will source it automatically.
Quoted 4 lines
tests/xfs/710 new file +4
-0+ +# real QA test starts here +_supported_fs xfs +_supported_os Linux
tests/xfs/710 line 58
Quoted 10 lines
tests/xfs/710 new file +10
-0+ +_require_scratch_nocheck + +# Geometry printing wasn't unified until xfs_spaceman grew an 'info' +# command, so skip this test if there is no spaceman or it doesn't +# know what 'info' is. +_require_xfs_spaceman_command "info" +_require_command "$XFS_DB_PROG" xfs_db +_require_command "$XFS_GROWFS_PROG" xfs_growfs +_require_command "$XFS_INFO_PROG" xfs_info
xfs_db and xfs_info (I fixed that up on commit) have been checked in common/rc, just need to check xfs_growfs here.
These are all trivial and easy to fix, I'll just fix them on commit too.
Thanks,
Eryu
Quoted 48 lines
tests/xfs/710 new file +30
-0+ +_scratch_mkfs > $tmp.mkfs +echo MKFS >> $seqres.full +cat $tmp.mkfs >> $seqres.full + +_scratch_xfs_db -c "info" > $tmp.dbinfo +echo DB >> $seqres.full +cat $tmp.dbinfo >> $seqres.full +diff -u $tmp.mkfs $tmp.dbinfo + +_scratch_mount + +$XFS_SPACEMAN_PROG -c "info" $SCRATCH_MNT > $tmp.spaceman +echo SPACEMAN >> $seqres.full +cat $tmp.spaceman >> $seqres.full +diff -u $tmp.mkfs $tmp.spaceman + +$XFS_GROWFS_PROG -n $SCRATCH_MNT > $tmp.growfs +echo GROWFS >> $seqres.full +cat $tmp.growfs >> $seqres.full +diff -u $tmp.mkfs $tmp.growfs + +$XFS_INFO_PROG $SCRATCH_MNT > $tmp.info +echo INFO >> $seqres.full +cat $tmp.info >> $seqres.full +diff -u $tmp.mkfs $tmp.info + +echo "Silence is golden." +status=0 +exit 0tests/xfs/710.out new file +2
-0@@ -0,0 +1,2 @@ +QA output created by 710 +Silence is golden.tests/xfs/group +1
-0@@ -445,3 +445,4 @@ 445 auto quick filestreams 446 auto quick 447 auto mount +710 auto quick
Re: [PATCH 6/6] xfs: make sure pretty printed geometry output matches
Quoted 142 lines · Eryu Guan
Quoted 52 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Make sure that all of our commands that can print geometry information all print the /same/ information.
Signed-off-by Darrick J. Wong <[email protected]>--- common/xfs | 41 +++++++++++++++++++++++++ tests/xfs/710 | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/710.out | 2 + tests/xfs/group | 1 + 4 files changed, 132 insertions(+) create mode 100755 tests/xfs/710 create mode 100644 tests/xfs/710.outcommon/xfs +28
-0@@ -710,3 +710,44 @@ _require_xfs_db_write_array() rm -f $TEST_DIR/$seq.img [ $supported -eq 0 ] && _notrun "xfs_db write can't support array" } + +_require_xfs_spaceman_command() +{ + if [ -z "$1" ] + then + echo "Usage: _require_xfs_spaceman_command command [switch]" 1>&2 + exit 1 + fi + local command=$1 + shift + local param="$*" + local param_checked=0 + local opts="" + + _require_command "$XFS_SPACEMAN_PROG" "xfs_spaceman" + + testfile=$TEST_DIR/$$.xfs_spaceman + case $command in + *) + testio=`$XFS_SPACEMAN_PROG -c "help $command" $TEST_DIR 2>&1` + esac + + rm -f $testfile 2>&1 > /dev/null + echo $testio | grep -q "not found" && \ + _notrun "xfs_spaceman $command support is missing" + echo $testio | grep -q "Operation not supported" && \ + _notrun "xfs_spaceman $command failed (old kernel/wrong fs?)" + echo $testio | grep -q "Invalid" && \common/xfs _require_xfs_db_write_array() · line 750
Quoted 10 lines
common/xfs +10
-0+ _notrun "xfs_spaceman $command failed (old kernel/wrong fs/bad args?)" + echo $testio | grep -q "foreign file active" && \ + _notrun "xfs_spaceman $command not supported on $FSTYP" + echo $testio | grep -q "Function not implemented" && \ + _notrun "xfs_spaceman $command support is missing (missing syscall?)" + + [ -n "$param" ] || return + + if [ $param_checked -eq 0 ]; then + $XFS_IO_PROG -c "help $command" | grep -q "^ $param --" || \^^^^^^^^^^^ XFS_SPACEMAN_PROGQuoted 31 lines
common/xfs +3
-0+ _notrun "xfs_spaceman $command doesn't support $param" + fi +}tests/xfs/710 new file +22
-0@@ -0,0 +1,88 @@ +#! /bin/bash +# FS QA Test No. 710 +# +# Make sure pretty printed XFS geometry is the same across all programs. +# +#----------------------------------------------------------------------- +# Copyright (c) 2018 Oracle, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#-----------------------------------------------------------------------tests/xfs/710 line 32
Quoted 10 lines
tests/xfs/710 new file +10
-0+# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 +trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15"rm -f $tmp.*" is done in
_cleanup()tests/xfs/710 line 44
Quoted 12 lines
tests/xfs/710 new file +12
-0+ +_cleanup() +{ + cd / + rm -f $tmp.* +} + +rm -f $seqres.full + +# get standard environment, filters and checks +. ./common/rc +. ./common/xfsNo need to source common/xfs, common/rc will source it automatically.
Quoted 4 lines
tests/xfs/710 new file +4
-0+ +# real QA test starts here +_supported_fs xfs +_supported_os Linuxtests/xfs/710 line 58
Quoted 10 lines
tests/xfs/710 new file +10
-0+ +_require_scratch_nocheck + +# Geometry printing wasn't unified until xfs_spaceman grew an 'info' +# command, so skip this test if there is no spaceman or it doesn't +# know what 'info' is. +_require_xfs_spaceman_command "info" +_require_command "$XFS_DB_PROG" xfs_db +_require_command "$XFS_GROWFS_PROG" xfs_growfs +_require_command "$XFS_INFO_PROG" xfs_info
xfs_dbandxfs_info(I fixed that up on commit) have been checked in common/rc, just need to checkxfs_growfshere.
Quoted 1 line
These are all trivial and easy to fix, I'll just fix them on commit too.
Ok, thank you!
--D
Quoted 56 lines
Thanks,
EryuQuoted 44 lines
tests/xfs/710 new file +30
-0+ +_scratch_mkfs > $tmp.mkfs +echo MKFS >> $seqres.full +cat $tmp.mkfs >> $seqres.full + +_scratch_xfs_db -c "info" > $tmp.dbinfo +echo DB >> $seqres.full +cat $tmp.dbinfo >> $seqres.full +diff -u $tmp.mkfs $tmp.dbinfo + +_scratch_mount + +$XFS_SPACEMAN_PROG -c "info" $SCRATCH_MNT > $tmp.spaceman +echo SPACEMAN >> $seqres.full +cat $tmp.spaceman >> $seqres.full +diff -u $tmp.mkfs $tmp.spaceman + +$XFS_GROWFS_PROG -n $SCRATCH_MNT > $tmp.growfs +echo GROWFS >> $seqres.full +cat $tmp.growfs >> $seqres.full +diff -u $tmp.mkfs $tmp.growfs + +$XFS_INFO_PROG $SCRATCH_MNT > $tmp.info +echo INFO >> $seqres.full +cat $tmp.info >> $seqres.full +diff -u $tmp.mkfs $tmp.info + +echo "Silence is golden." +status=0 +exit 0tests/xfs/710.out new file +2
-0@@ -0,0 +1,2 @@ +QA output created by 710 +Silence is golden.tests/xfs/group +0
-0tests/xfs/group line 448
Quoted 4 lines
tests/xfs/group +1
-0@@ -445,3 +445,4 @@ 445 auto quick filestreams 446 auto quick 447 auto mount +710 auto quick--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html