From nobody Mon May 22 08:08:44 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QPqpP0R2Tz4TCH4; Mon, 22 May 2023 08:08:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QPqpP011Lz47KD; Mon, 22 May 2023 08:08:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1684742925; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Ysp/bEcCiFUXiGpbCdf1V62TzXy8lBOtSyCqGfGpBY=; b=MsGMksSNhpgw60azKMr/vzzATY4pbKpTnB56+7/ZlUYOQ0DKVksjZvLYsnETx2MtCnOocd v08blC9q0kOKrVyWgtz/kq861vz3SP9qeMMILcKTwSL0UZD8whGpVPnK05LFHaiVx7OGL/ Z1xbhVTgrhs6mH2tvjTj1evYeatlyXxzP0Cdw8v+GcjXesYcjWW76MgX1CX3HrfzSdRFuD 9H/FDKGEcXKOCE+K6qMuJNqGFyEiKKNGN/wn9pNYf7s4L2qtC5rlhq8SfNGsDx8JzgIIa3 rWk/d5HkrSYrhtRbMvfDgVbexPJgKmrPAzOchbCSI50Sp+Jkd6eVlTWAGgF9gA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1684742925; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Ysp/bEcCiFUXiGpbCdf1V62TzXy8lBOtSyCqGfGpBY=; b=DfOW79fzorYO6GL3FMyd7pGSFku3+qmZ4Q9q/3sI8VsBA6C7aVsuXUh0QcdB+9GIDH4wMu yCdTlXVMt/IjOTSSU0zeNPpBMsUvt0t8XVa0n1DLoIlwB4UT5s1wRA6r9ETZtFGbEz//0o zAujaOTeOL0KmQF+CjaG9AQImWWUGdVyJqorZDNUhrjvP1I/4HYS17yRJLDgn2rmO3Hkm2 unoqenehVl/zUBWgw2DZ4PC8149NriOMXMzmXVtxWbmLhGe3PPuPbvsOtTUOrrJNXTEBE8 vT+cPWRdiOgNDmxVVve11TO/fB2T6y8DS/QfdtMureHPlYPwG543L+ApG2WcHA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1684742925; a=rsa-sha256; cv=none; b=BSBkdroWvpoAQVqAJtf/W+5T6VimqcWlda5QjQWbY/dYsSEuK6hu9pT9IgX63oQco9/H5m UdXH6OoRyiU5o9zxMv22MzGy8zQQi5T10TR0jCfEOPhI9lXxZJGieBiZ2VXOmLV8r95wXf ojvEQCJ6dWqhGd+F/T3hGht9Q6We4BlfN2kBTmKYABYIRaySZKwahMGy06Dbg9tFBbXRUR 9JG57gxVk6E6DnlM+8Npv+zecqI/DMRKanWL3GqzZoh05cMLuyLy4qBA3oPhBKzlswjWYb cITkiqOy3hpFJumLoFhjsOjqqUQByaK5zSOYibYIGa0ju0lsmDpbVP9TBZL77g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4QPqpN6CxGz1PGF; Mon, 22 May 2023 08:08:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 34M88i56018395; Mon, 22 May 2023 08:08:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 34M88if7018394; Mon, 22 May 2023 08:08:44 GMT (envelope-from git) Date: Mon, 22 May 2023 08:08:44 GMT Message-Id: <202305220808.34M88if7018394@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Peter Holm Subject: git: be8d01b51516 - main - stress2: Added a faster test of fsck_ffs by omitting mount(8) and umount(8) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pho X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: be8d01b51516b96c07ea95e4dbcc6e23c73e3bb5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=be8d01b51516b96c07ea95e4dbcc6e23c73e3bb5 commit be8d01b51516b96c07ea95e4dbcc6e23c73e3bb5 Author: Peter Holm AuthorDate: 2023-05-22 08:07:40 +0000 Commit: Peter Holm CommitDate: 2023-05-22 08:07:40 +0000 stress2: Added a faster test of fsck_ffs by omitting mount(8) and umount(8) --- tools/test/stress2/misc/fsck13.sh | 152 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) diff --git a/tools/test/stress2/misc/fsck13.sh b/tools/test/stress2/misc/fsck13.sh new file mode 100755 index 000000000000..f279e0bae066 --- /dev/null +++ b/tools/test/stress2/misc/fsck13.sh @@ -0,0 +1,152 @@ +#!/bin/sh + +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2023 Peter Holm +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +# fsck_ffs(8) disk image fuzz test. +# Test without mount(8) and umount(8) + +. ../default.cfg + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1 + +# Disable the calls to sync(2) in fsck_ffs(8) to speed up the test +echo 'int sync(void) { return (0); }' > /tmp/fsck_preload.c +mycc -o /tmp/fsck_preload.so -shared -fpic /tmp/fsck_preload.c || exit 1 +rm /tmp/fsck_preload.c + +set -eu +u1=$mdstart +u2=$((mdstart + 1)) +mp1=${mntpoint}$u1 +prog=$(basename "$0" .sh) +mkdir -p $mp1 + +max=$((2 * 1024 * 1024)) # Two alternate super blocks @ 192 and 2240 +i=`jot -r 1 1 3` +[ $i -eq 1 ] && flags="-O2" +[ $i -eq 2 ] && flags="-U" +[ $i -eq 3 ] && { flags="-j"; max=$((8 * 1024 * 1024)); } + +backup=$mp1/$prog.diskimage.$flags.`date +%Y%m%dT%H%M%S` +core=/tmp/$prog.core.`date +%Y%m%dT%H%M%S` +diskimage=$mp1/$prog.diskimage +log=$mp1/$prog.log + +asbs=0 +cleans=0 +reruns=0 +waccess=0 + +set +e +mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1 +[ -c /dev/md$u1 ] && mdconfig -d -u $u1 +mdconfig -a -t swap -s 10g -u $u1 +newfs $newfs_flags /dev/md$u1 > /dev/null +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 +backups=`newfs -N $flags md$u2 | grep -A1 "super-block backups" | \ + tail -1 | sed 's/,//g'` +echo "newfs $flags /dev/md$u2" +newfs $flags md$u2 > /dev/null +mdconfig -d -u $u2 + +chk() { + local i + + clean=0 + rerun=0 + waccess=0 + LD_PRELOAD=/tmp/fsck_preload.so \ + timeout 2m fsck_ffs -fy $1 > $log 2>&1 + r=$? + if grep -qiE "super-?block.*failed" $log; then + for b in $backups; do + asbs=$((asbs + 1)) + LD_PRELOAD=/tmp/fsck_preload.so \ + timeout 2m fsck_ffs -b $b -fy $1 > $log 2>&1 + r=$? + grep -qiE "super-?block.*failed" $log || + break + done + usedasb=1 + else + usedasb=0 + fi + LANG=C egrep -q "[A-Z][A-Z]" $log && clean=0 + grep -Eq "IS CLEAN|MARKED CLEAN" $log && clean=1 + # For now regard a "was modified" as a cause for a rerun, + # disregarding "clean" claim. + grep -Eq "WAS MODIFIED" $log && rerun=1 + grep -q RERUN $log && rerun=1 + grep -q "NO WRITE ACCESS" $log && waccess=1 + [ $r -ne 0 -a $clean -eq 1 ] && echo "Exit code $r w/ clean == 1" +} + +cd $mp1 +s=0 +start=`date +%s` +while [ $((`date +%s` - start)) -lt 60 ]; do + /tmp/flip -n 50 $diskimage + + cp $diskimage $backup + + for i in `jot 10`; do + chk $diskimage + [ $i -eq 1 -a "$flags" = "-j" ] && continue # First run processes the journal + [ $rerun -eq 1 ] && { reruns=$((reruns + 1)); continue; } + [ $clean -eq 1 ] && { cleans=$((cleans + 1)); break; } + [ -f fsck_ffs.core ] && { s=1; break 2; } + [ $r -eq 124 ] && { s=2; break 2; } # timeout + done + [ $clean -ne 1 ] && break + [ $r -ne 0 -a $clean -eq 1 ] && + { echo "CLEAN && non zero exit code"; break; } + [ $clean -eq 1 ] && continue + [ $usedasb -eq 1 ] && { echo "Alt. SB failed"; s=104; } + [ $waccess -eq 1 ] && { echo "No write access"; s=105; } + break +done + +echo "$cleans cleans, $reruns reruns, $asbs alternate SBs." +if [ $clean -ne 1 ]; then + echo "FS still not clean. Last fsck_ffs exit code was $r." + [ $s -eq 0 ] && s=106 +fi +grep -q "Superblock check-hash failed" $log && s=0 # Ignore for now +grep -q "is not a file system superblock" $log && s=0 # Ignore for now +[ $s -ne 0 ] && { gzip $backup; cp -v $backup.gz /tmp; } +cd /tmp +umount $mp1 +mdconfig -d -u $u1 +rm -f /tmp/flip /tmp/fsck_preload.so +exit $s