diff options
Diffstat (limited to 'tools/test/stress2/misc/fsck.sh')
-rwxr-xr-x | tools/test/stress2/misc/fsck.sh | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/tools/test/stress2/misc/fsck.sh b/tools/test/stress2/misc/fsck.sh index 826c31f733c3..4af41df037e9 100755 --- a/tools/test/stress2/misc/fsck.sh +++ b/tools/test/stress2/misc/fsck.sh @@ -1,7 +1,7 @@ #!/bin/sh # -# SPDX-License-Identifier: BSD-2-Clause-FreeBSD +# SPDX-License-Identifier: BSD-2-Clause # # Copyright (c) 2018 Dell EMC Isilon # @@ -49,9 +49,12 @@ u2=$((mdstart + 1)) mp1=${mntpoint}$u1 mp2=${mntpoint}$u2 mkdir -p $mp1 $mp2 -log=$mp1/fsck.sh.log -diskimage=$mp1/fsck.sh.diskimage + backup=/tmp/fsck.sh.diskimage.`date +%Y%m%dT%H%M%S`.gz +core=/tmp/fsck.sh.core.`date +%Y%m%dT%H%M%S` +diskimage=$mp1/fsck.sh.diskimage +log=$mp1/fsck.sh.log + asbs=0 cleans=0 reruns=0 @@ -71,6 +74,7 @@ mount /dev/md$u1 $mp1 [ -c /dev/md$u2 ] && mdconfig -d -u $u2 dd if=/dev/zero of=$diskimage bs=$max count=1 status=none mdconfig -a -t vnode -f $diskimage -u $u2 +[ "$newfs_flags" = "-U" ] && [ `jot -r 1 0 1` -eq 1 ] && newfs_flags="-j" backups=`newfs -N $newfs_flags md$u2 | grep -A1 "super-block backups" | \ tail -1 | sed 's/,//g'` newfs $newfs_flags md$u2 > /dev/null @@ -86,13 +90,13 @@ chk() { waccess=0 fsck_ffs -fy $1 > $log 2>&1 r=$? - if grep -qE "Cannot find file system superblock|Superblock check-hash failed" $log; then + if grep -qiE "super-?block.*failed" $log; then for b in $backups; do echo "Using alternate SB $b" asbs=$((asbs + 1)) fsck_ffs -b $b -fy $1 > $log 2>&1 r=$? - grep -qE "Cannot find file system superblock|Superblock check-hash failed" $log || + grep -qiE "super-?block.*failed" $log || break done usedasb=1 @@ -144,7 +148,8 @@ while [ $((`date +%s` - start)) -lt 60 ]; do break done mount | grep -q "on $mp2 " && umount $mp2 -mdconfig -d -u $u2 || exit 1 +mdconfig -l | grep -q "md$u2" && + mdconfig -d -u $u2 echo "$cleans cleans, $reruns reruns, $asbs alternate SBs." if [ $clean -ne 1 ]; then @@ -153,8 +158,9 @@ if [ $clean -ne 1 ]; then cp -v $log /tmp [ $s -eq 0 ] && s=106 fi -echo * | grep -q core && { ls -l *.core; cp $log /tmp; exit 106; } || - rm -f $backup +[ -f fsck_ffs.core ] && + mv fsck_ffs.core $core +[ $s -eq 0 ] && rm -f $backup cd /tmp umount $mp1 mdconfig -d -u $u1 |