Re: [PATCH 1/1] xfs: update the output of AG metadata corruption checking and repair tests

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

 



On Mon, Feb 26, 2018 at 04:26:13PM +0800, Shan Hai wrote:
> The xfs/087 and xfs/097 fail after the introduction of the
> "xfs: set up per-AG free space reservations" in the kernel code,
> because the filesystem is shutdown by the per-AG metadata reservation
> code on the -EFSCORRUPTED error, the above mentioned tests initiate
> the -EFSCORRUPTED error intentionally but its results checking part is
> out of date and cause the failure of the tests.

Hmm, I think this test (and the other blocktrash fuzzers) need more
surgery than this.  Those tests do:

1. format
2. blocktrash
3. mount
4. modify fs
5. unmount

However, in light of Eryu's changes to _scratch_mount to _fail the test
if the mount fails, that needs to become...

if _scratch_mount >> $seqres.full 2>&1; then
	# modify fs
	_scratch_umount
fi

Note that this also solves the 'structure needs cleaning' lines in the
dirty output.  Since there are a lot of blocktrash fuzzers I'll take
care of fixing them all for you.  It's been too long since I ran them
anyway.

> Update the output of the tests to match with the current kernel behavior.
> 
> Signed-off-by: Shan Hai <shan.hai@xxxxxxxxxx>
> ---
>  tests/xfs/087     | 32 ++++++++++++++++----------------
>  tests/xfs/087.out | 26 ++++++++++++++------------
>  tests/xfs/097     | 32 ++++++++++++++++----------------
>  tests/xfs/097.out | 26 ++++++++++++++------------
>  4 files changed, 60 insertions(+), 56 deletions(-)
> 
> diff --git a/tests/xfs/087 b/tests/xfs/087
> index 58ba958..d557c12 100755
> --- a/tests/xfs/087
> +++ b/tests/xfs/087
> @@ -58,14 +58,14 @@ rm -f $seqres.full
>  TESTDIR="${SCRATCH_MNT}/scratchdir"
>  TESTFILE="${TESTDIR}/testfile"
>  
> -echo "+ create scratch fs"
> +echo "create scratch fs"

Why is it necessary to change this part of the golden output?

--D

>  _scratch_mkfs_xfs > /dev/null
>  
> -echo "+ mount fs image"
> +echo "mount fs image"
>  _scratch_mount
>  blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")"
>  
> -echo "+ make some files"
> +echo "make some files"
>  mkdir -p "${TESTDIR}"
>  for x in `seq 1 1024`; do
>  	touch "${SCRATCH_MNT}/junk.${x}"
> @@ -80,45 +80,45 @@ for x in `seq 2 64`; do
>  done
>  inode="$(stat -c '%i' "${TESTFILE}.1")"
>  agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')"
> -umount "${SCRATCH_MNT}"
> +_scratch_unmount
>  
> -echo "+ check fs"
> +echo "check fs"
>  _scratch_xfs_repair -n >> $seqres.full 2>&1 || _fail "xfs_repair should not fail"
>  
> -echo "+ corrupt image"
> +echo "corrupt image"
>  for ag in $(seq 1 $((agcount - 1))) 0; do
>  	_scratch_xfs_db -x -c "agi ${ag}" -c "agi ${ag}" -c "stack" -c "blocktrash -x 32 -o +64 -y 4096 -z ${FUZZ_ARGS}" >> $seqres.full 2>&1
>  done
>  
> -echo "+ mount image"
> -_scratch_mount
> +echo "mount image"
> +_try_scratch_mount 2>&1 | _filter_error_mount
>  
> -echo "+ modify files"
> +echo "modify files"
>  broken=0
>  for x in `seq 65 70`; do
>  	touch "${TESTFILE}.${x}" 2> /dev/null || broken=1
>  done
>  echo "broken: ${broken}"
> -umount "${SCRATCH_MNT}"
> +_scratch_unmount 2>&1 | _filter_scratch
>  
> -echo "+ repair fs"
> +echo "repair fs"
>  _scratch_xfs_repair >> $seqres.full 2>&1
>  
> -echo "+ mount image (2)"
> +echo "mount image (2)"
>  _scratch_mount
>  
> -echo "+ chattr -R -i"
> +echo "chattr -R -i"
>  $CHATTR_PROG -R -f -i "${SCRATCH_MNT}/"
>  
> -echo "+ modify files (2)"
> +echo "modify files (2)"
>  broken=0
>  for x in `seq 65 70`; do
>  	touch "${TESTFILE}.${x}" || broken=1
>  done
>  echo "broken: ${broken}"
> -umount "${SCRATCH_MNT}"
> +_scratch_unmount
>  
> -echo "+ check fs (2)"
> +echo "check fs (2)"
>  _scratch_xfs_repair -n >> $seqres.full 2>&1 || _fail "xfs_repair should not fail"
>  
>  status=0
> diff --git a/tests/xfs/087.out b/tests/xfs/087.out
> index 1f6e0b5..c4aee5a 100644
> --- a/tests/xfs/087.out
> +++ b/tests/xfs/087.out
> @@ -1,15 +1,17 @@
>  QA output created by 087
> -+ create scratch fs
> -+ mount fs image
> -+ make some files
> -+ check fs
> -+ corrupt image
> -+ mount image
> -+ modify files
> +create scratch fs
> +mount fs image
> +make some files
> +check fs
> +corrupt image
> +mount image
> +mount: Structure needs cleaning
> +modify files
>  broken: 1
> -+ repair fs
> -+ mount image (2)
> -+ chattr -R -i
> -+ modify files (2)
> +umount: SCRATCH_DEV: not mounted.
> +repair fs
> +mount image (2)
> +chattr -R -i
> +modify files (2)
>  broken: 0
> -+ check fs (2)
> +check fs (2)
> diff --git a/tests/xfs/097 b/tests/xfs/097
> index 303ad04..4d6fda5 100755
> --- a/tests/xfs/097
> +++ b/tests/xfs/097
> @@ -60,15 +60,15 @@ rm -f $seqres.full
>  TESTDIR="${SCRATCH_MNT}/scratchdir"
>  TESTFILE="${TESTDIR}/testfile"
>  
> -echo "+ create scratch fs"
> +echo "create scratch fs"
>  _scratch_mkfs_xfs > /dev/null
>  
> -echo "+ mount fs image"
> +echo "mount fs image"
>  _scratch_mount
>  xfs_info "${SCRATCH_MNT}" | grep -q "finobt=1" || _notrun "finobt not enabled"
>  blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")"
>  
> -echo "+ make some files"
> +echo "make some files"
>  mkdir -p "${TESTDIR}"
>  for x in `seq 1 1024`; do
>  	touch "${SCRATCH_MNT}/junk.${x}"
> @@ -83,45 +83,45 @@ for x in `seq 2 64`; do
>  done
>  inode="$(stat -c '%i' "${TESTFILE}.1")"
>  agcount="$(xfs_info "${SCRATCH_MNT}" | grep agcount= | sed -e 's/^.*agcount=\([0-9]*\),.*$/\1/g')"
> -umount "${SCRATCH_MNT}"
> +_scratch_unmount 2>&1 | _filter_scratch
>  
> -echo "+ check fs"
> +echo "check fs"
>  _scratch_xfs_repair -n >> $seqres.full 2>&1 || _fail "xfs_repair should not fail"
>  
> -echo "+ corrupt image"
> +echo "corrupt image"
>  for ag in $(seq 1 $((agcount - 1))) 0; do
>  	_scratch_xfs_db -x -c "agi ${ag}" -c "agi ${ag}" -c "addr free_root" -c "stack" -c "blocktrash -x 32 -y $((blksz * 8)) -z ${FUZZ_ARGS}" >> $seqres.full 2>&1
>  done
>  
> -echo "+ mount image"
> -_scratch_mount
> +echo "mount image"
> +_try_scratch_mount 2>&1 | _filter_error_mount
>  
> -echo "+ modify files"
> +echo "modify files"
>  broken=0
>  for x in `seq 65 70`; do
>  	touch "${TESTFILE}.${x}" 2> /dev/null || broken=1
>  done
>  echo "broken: ${broken}"
> -umount "${SCRATCH_MNT}"
> +_scratch_unmount 2>&1 | _filter_scratch
>  
> -echo "+ repair fs"
> +echo "repair fs"
>  _scratch_xfs_repair >> $seqres.full 2>&1
>  
> -echo "+ mount image (2)"
> +echo "mount image (2)"
>  _scratch_mount
>  
> -echo "+ chattr -R -i"
> +echo "chattr -R -i"
>  $CHATTR_PROG -R -f -i "${SCRATCH_MNT}/"
>  
> -echo "+ modify files (2)"
> +echo "modify files (2)"
>  broken=0
>  for x in `seq 65 70`; do
>  	touch "${TESTFILE}.${x}" || broken=1
>  done
>  echo "broken: ${broken}"
> -umount "${SCRATCH_MNT}"
> +_scratch_unmount
>  
> -echo "+ check fs (2)"
> +echo "check fs (2)"
>  _scratch_xfs_repair -n >> $seqres.full 2>&1 || _fail "xfs_repair should not fail"
>  
>  status=0
> diff --git a/tests/xfs/097.out b/tests/xfs/097.out
> index 84f6a70..0eb2085 100644
> --- a/tests/xfs/097.out
> +++ b/tests/xfs/097.out
> @@ -1,15 +1,17 @@
>  QA output created by 097
> -+ create scratch fs
> -+ mount fs image
> -+ make some files
> -+ check fs
> -+ corrupt image
> -+ mount image
> -+ modify files
> +create scratch fs
> +mount fs image
> +make some files
> +check fs
> +corrupt image
> +mount image
> +mount: Structure needs cleaning
> +modify files
>  broken: 1
> -+ repair fs
> -+ mount image (2)
> -+ chattr -R -i
> -+ modify files (2)
> +umount: SCRATCH_DEV: not mounted.
> +repair fs
> +mount image (2)
> +chattr -R -i
> +modify files (2)
>  broken: 0
> -+ check fs (2)
> +check fs (2)
> -- 
> 2.7.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux