From patchwork Wed Dec 27 13:50:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508475 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E35E7EF; Mon, 1 Jan 2024 00:50:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hJnUg8Ip" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5BBD6C433C8; Mon, 1 Jan 2024 00:50:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070210; bh=o7wUg8ZbmhmP2nqpNrlTslzHWcBmT/O/xkTDfERLaLc=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=hJnUg8IphpJnvtMbIiKfWRkNkZPlXzsDR+AmV6O/C1kts30+PoyRW8m6alFpcGyKt c+k/b8lc56CYph85pcVlgakr7kRM9nJTDdKnL/FDHkibdXp5xgbvsRl7bO/PfIfVof uIcsenTTOKfYadx3O0S+Cbura8+mZe8QVa7lRBM1KWY7qTHAXUZy+pIS635D7V41Da lv/NodNK+1OO8iToiWTuag9a7vEhYGx/YImjK7i27Ardc6u7Yi/WwT8Vh3Pqi6fiVk dl7WGRcB1/5P3knz5ILcuKIClYYGHFdeG3C9BfpLDS1JmbUaQO+QhNMYV77DX6H3LK nwpxNGBUpSs9A== Date: Sun, 31 Dec 2023 16:50:09 +9900 Subject: [PATCH 01/11] xfs/122: fix metadirino From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029862.1826032.9120032235595084513.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Fix xfs/122 to work properly with metadirino. Signed-off-by: Darrick J. Wong --- tests/xfs/122.out | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/xfs/122.out b/tests/xfs/122.out index 5d14386518..430b805792 100644 --- a/tests/xfs/122.out +++ b/tests/xfs/122.out @@ -35,6 +35,7 @@ offsetof(xfs_sb_t, sb_logsunit) = 196 offsetof(xfs_sb_t, sb_lsn) = 240 offsetof(xfs_sb_t, sb_magicnum) = 0 offsetof(xfs_sb_t, sb_meta_uuid) = 248 +offsetof(xfs_sb_t, sb_metadirino) = 264 offsetof(xfs_sb_t, sb_pquotino) = 232 offsetof(xfs_sb_t, sb_qflags) = 176 offsetof(xfs_sb_t, sb_rblocks) = 16 From patchwork Wed Dec 27 13:50:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508476 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A1EC7EF; Mon, 1 Jan 2024 00:50:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kcaPqKPc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 03217C433C8; Mon, 1 Jan 2024 00:50:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070226; bh=CHj6s+oDPlAfT6Agql0hXOemothI/GUiBRbW34S3Cuk=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=kcaPqKPc+0Bssm2H5BkrKtnKKujqGhp782lspohtoXW4PNJKoLzoOdYs2MMtHb8xN oQb+ripKE3+y1VLvAxESZ7oR+wIQljWD4nh6FbxuBXiM/FSNffO/AL0Mxlky6+cixv 2SWucVHJSRl7II7TvH+tAqgkLXk6312CKbTOy1asq8LwVM1X0IGrQsufSnE83VsFR0 0sVLZvmhqLkpAsnebD5x1FVaUfRQbVq4+Rz+CjwRZ082fHoAoi+j6exwU69mhZbWXC 2yDg2jQtlejLone/3divKVTiUpwzyjeLaM4GPi81kn38RI8intqsYQ2YrfTqaBtQAH YCSo6Ne76F9yQ== Date: Sun, 31 Dec 2023 16:50:25 +9900 Subject: [PATCH 02/11] various: fix finding metadata inode numbers when metadir is enabled From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029875.1826032.15574802393255784135.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong There are a number of tests that use xfs_db to examine the contents of metadata inodes to check correct functioning. The logic is scattered everywhere and won't work with metadata directory trees, so make a shared helper to find these inodes. Signed-off-by: Darrick J. Wong --- common/xfs | 32 ++++++++++++++++++++++++++++++-- tests/xfs/007 | 16 +++++++++------- tests/xfs/529 | 5 ++--- tests/xfs/530 | 6 ++---- tests/xfs/739 | 9 ++------- tests/xfs/740 | 9 ++------- tests/xfs/741 | 9 ++------- tests/xfs/742 | 9 ++------- tests/xfs/743 | 9 ++------- tests/xfs/744 | 9 ++------- tests/xfs/745 | 9 ++------- tests/xfs/746 | 9 ++------- 12 files changed, 59 insertions(+), 72 deletions(-) diff --git a/common/xfs b/common/xfs index f77d4639b9..48643b7c18 100644 --- a/common/xfs +++ b/common/xfs @@ -1422,7 +1422,7 @@ _scratch_get_bmx_prefix() { _scratch_get_iext_count() { - local ino=$1 + local selector=$1 local whichfork=$2 local field="" @@ -1437,7 +1437,7 @@ _scratch_get_iext_count() return 1 esac - _scratch_xfs_get_metadata_field $field "inode $ino" + _scratch_xfs_get_metadata_field $field "$selector" } # @@ -1843,3 +1843,31 @@ _require_xfs_parent() || _notrun "kernel does not support parent pointers" _scratch_unmount } + +# Find a metadata file within an xfs filesystem. The sole argument is the +# name of the field within the superblock. +_scratch_xfs_find_metafile() +{ + local metafile="$1" + local selector= + + if ! _check_scratch_xfs_features METADIR > /dev/null; then + sb_field="$(_scratch_xfs_get_sb_field "$metafile")" + if echo "$sb_field" | grep -q -w 'not found'; then + return 1 + fi + selector="inode $sb_field" + else + case "${metafile}" in + "rootino") selector="path /";; + "uquotino") selector="path -m /quota/user";; + "gquotino") selector="path -m /quota/group";; + "pquotino") selector="path -m /quota/project";; + "rbmino") selector="path -m /realtime/bitmap";; + "rsumino") selector="path -m /realtime/summary";; + esac + fi + + echo "${selector}" + return 0 +} diff --git a/tests/xfs/007 b/tests/xfs/007 index 4f864100fd..6d6d828b13 100755 --- a/tests/xfs/007 +++ b/tests/xfs/007 @@ -22,6 +22,11 @@ _require_xfs_quota _scratch_mkfs_xfs | _filter_mkfs > /dev/null 2> $tmp.mkfs . $tmp.mkfs +get_qfile_nblocks() { + local selector="$(_scratch_xfs_find_metafile "$1")" + _scratch_xfs_db -c "$selector" -c "p core.nblocks" +} + do_test() { qino_1=$1 @@ -31,12 +36,9 @@ do_test() echo "*** umount" _scratch_unmount - QINO_1=`_scratch_xfs_get_sb_field $qino_1` - QINO_2=`_scratch_xfs_get_sb_field $qino_2` - echo "*** Usage before quotarm ***" - _scratch_xfs_db -c "inode $QINO_1" -c "p core.nblocks" - _scratch_xfs_db -c "inode $QINO_2" -c "p core.nblocks" + get_qfile_nblocks $qino_1 + get_qfile_nblocks $qino_2 _qmount echo "*** turn off $off_opts quotas" @@ -66,8 +68,8 @@ do_test() _scratch_unmount echo "*** Usage after quotarm ***" - _scratch_xfs_db -c "inode $QINO_1" -c "p core.nblocks" - _scratch_xfs_db -c "inode $QINO_2" -c "p core.nblocks" + get_qfile_nblocks $qino_1 + get_qfile_nblocks $qino_2 } # Test user and group first diff --git a/tests/xfs/529 b/tests/xfs/529 index cd176877f5..43199a37ff 100755 --- a/tests/xfs/529 +++ b/tests/xfs/529 @@ -163,9 +163,8 @@ done _scratch_unmount >> $seqres.full echo "Verify uquota inode's extent count" -uquotino=$(_scratch_xfs_get_metadata_field 'uquotino' 'sb 0') - -nextents=$(_scratch_get_iext_count $uquotino data || \ +selector="$(_scratch_xfs_find_metafile uquotino)" +nextents=$(_scratch_get_iext_count "$selector" data || \ _fail "Unable to obtain inode fork's extent count") if (( $nextents > 10 )); then echo "Extent count overflow check failed: nextents = $nextents" diff --git a/tests/xfs/530 b/tests/xfs/530 index 56f5e7ebdb..cb8c2e3978 100755 --- a/tests/xfs/530 +++ b/tests/xfs/530 @@ -104,10 +104,8 @@ _scratch_unmount >> $seqres.full echo "Verify rbmino's and rsumino's extent count" for rtino in rbmino rsumino; do - ino=$(_scratch_xfs_get_metadata_field $rtino "sb 0") - echo "$rtino = $ino" >> $seqres.full - - nextents=$(_scratch_get_iext_count $ino data || \ + selector="$(_scratch_xfs_find_metafile "$rtino")" + nextents=$(_scratch_get_iext_count "$selector" data || \ _fail "Unable to obtain inode fork's extent count") if (( $nextents > 10 )); then echo "Extent count overflow check failed: nextents = $nextents" diff --git a/tests/xfs/739 b/tests/xfs/739 index fb7fe2e643..b6bbaf7c1d 100755 --- a/tests/xfs/739 +++ b/tests/xfs/739 @@ -27,13 +27,8 @@ echo "Format and populate" _scratch_populate_cached nofill > $seqres.full 2>&1 echo "Fuzz rtbitmap" -is_metadir=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime/0.bitmap') -if [ -n "$is_metadir" ]; then - path=('path -m /realtime/0.bitmap') -else - path=('sb' 'addr rbmino') -fi -_scratch_xfs_fuzz_metadata '' 'online' "${path[@]}" 'dblock 0' >> $seqres.full +path="$(_scratch_xfs_find_metafile rbmino)" +_scratch_xfs_fuzz_metadata '' 'online' "$path" 'dblock 0' >> $seqres.full echo "Done fuzzing rtbitmap" # success, all done diff --git a/tests/xfs/740 b/tests/xfs/740 index a59fa37ecf..7cee2b110f 100755 --- a/tests/xfs/740 +++ b/tests/xfs/740 @@ -27,13 +27,8 @@ echo "Format and populate" _scratch_populate_cached nofill > $seqres.full 2>&1 echo "Fuzz rtsummary" -is_metadir=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime/0.summary') -if [ -n "$is_metadir" ]; then - path=('path -m /realtime/0.summary') -else - path=('sb' 'addr rsumino') -fi -_scratch_xfs_fuzz_metadata '' 'online' "${path[@]}" 'dblock 0' >> $seqres.full +path="$(_scratch_xfs_find_metafile rsumino)" +_scratch_xfs_fuzz_metadata '' 'online' "$path" 'dblock 0' >> $seqres.full echo "Done fuzzing rtsummary" # success, all done diff --git a/tests/xfs/741 b/tests/xfs/741 index 957bed791b..1d18f4d9e4 100755 --- a/tests/xfs/741 +++ b/tests/xfs/741 @@ -27,13 +27,8 @@ echo "Format and populate" _scratch_populate_cached nofill > $seqres.full 2>&1 echo "Fuzz rtbitmap" -is_metadir=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime/0.bitmap') -if [ -n "$is_metadir" ]; then - path=('path -m /realtime/0.bitmap') -else - path=('sb' 'addr rbmino') -fi -_scratch_xfs_fuzz_metadata '' 'offline' "${path[@]}" 'dblock 0' >> $seqres.full +path="$(_scratch_xfs_find_metafile rbmino)" +_scratch_xfs_fuzz_metadata '' 'offline' "$path" 'dblock 0' >> $seqres.full echo "Done fuzzing rtbitmap" # success, all done diff --git a/tests/xfs/742 b/tests/xfs/742 index d911748443..96ef89275c 100755 --- a/tests/xfs/742 +++ b/tests/xfs/742 @@ -27,13 +27,8 @@ echo "Format and populate" _scratch_populate_cached nofill > $seqres.full 2>&1 echo "Fuzz rtsummary" -is_metadir=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime/0.summary') -if [ -n "$is_metadir" ]; then - path=('path -m /realtime/0.summary') -else - path=('sb' 'addr rsumino') -fi -_scratch_xfs_fuzz_metadata '' 'offline' "${path[@]}" 'dblock 0' >> $seqres.full +path="$(_scratch_xfs_find_metafile rsumino)" +_scratch_xfs_fuzz_metadata '' 'offline' "$path" 'dblock 0' >> $seqres.full echo "Done fuzzing rtsummary" # success, all done diff --git a/tests/xfs/743 b/tests/xfs/743 index 69e865a438..29f21e32c6 100755 --- a/tests/xfs/743 +++ b/tests/xfs/743 @@ -28,13 +28,8 @@ echo "Format and populate" _scratch_populate_cached nofill > $seqres.full 2>&1 echo "Fuzz rtbitmap" -is_metadir=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime/0.bitmap') -if [ -n "$is_metadir" ]; then - path=('path -m /realtime/0.bitmap') -else - path=('sb' 'addr rbmino') -fi -_scratch_xfs_fuzz_metadata '' 'both' "${path[@]}" 'dblock 0' >> $seqres.full +path="$(_scratch_xfs_find_metafile rbmino)" +_scratch_xfs_fuzz_metadata '' 'both' "$path" 'dblock 0' >> $seqres.full echo "Done fuzzing rtbitmap" # success, all done diff --git a/tests/xfs/744 b/tests/xfs/744 index ea490b524e..72ae8f8593 100755 --- a/tests/xfs/744 +++ b/tests/xfs/744 @@ -28,13 +28,8 @@ echo "Format and populate" _scratch_populate_cached nofill > $seqres.full 2>&1 echo "Fuzz rtsummary" -is_metadir=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime/0.summary') -if [ -n "$is_metadir" ]; then - path=('path -m /realtime/0.summary') -else - path=('sb' 'addr rsumino') -fi -_scratch_xfs_fuzz_metadata '' 'both' "${path[@]}" 'dblock 0' >> $seqres.full +path="$(_scratch_xfs_find_metafile rsumino)" +_scratch_xfs_fuzz_metadata '' 'both' "$path" 'dblock 0' >> $seqres.full echo "Done fuzzing rtsummary" # success, all done diff --git a/tests/xfs/745 b/tests/xfs/745 index 7621d45744..caecaa4edd 100755 --- a/tests/xfs/745 +++ b/tests/xfs/745 @@ -27,13 +27,8 @@ echo "Format and populate" _scratch_populate_cached nofill > $seqres.full 2>&1 echo "Fuzz rtbitmap" -is_metadir=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime/0.bitmap') -if [ -n "$is_metadir" ]; then - path=('path -m /realtime/0.bitmap') -else - path=('sb' 'addr rbmino') -fi -_scratch_xfs_fuzz_metadata '' 'none' "${path[@]}" 'dblock 0' >> $seqres.full +path="$(_scratch_xfs_find_metafile rbmino)" +_scratch_xfs_fuzz_metadata '' 'none' "$path" 'dblock 0' >> $seqres.full echo "Done fuzzing rtbitmap" # success, all done diff --git a/tests/xfs/746 b/tests/xfs/746 index 401233162c..f005893965 100755 --- a/tests/xfs/746 +++ b/tests/xfs/746 @@ -27,13 +27,8 @@ echo "Format and populate" _scratch_populate_cached nofill > $seqres.full 2>&1 echo "Fuzz rtsummary" -is_metadir=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime/0.summary') -if [ -n "$is_metadir" ]; then - path=('path -m /realtime/0.summary') -else - path=('sb' 'addr rsumino') -fi -_scratch_xfs_fuzz_metadata '' 'none' "${path[@]}" 'dblock 0' >> $seqres.full +path="$(_scratch_xfs_find_metafile rsumino)" +_scratch_xfs_fuzz_metadata '' 'none' "$path" 'dblock 0' >> $seqres.full echo "Done fuzzing rtsummary" # success, all done From patchwork Wed Dec 27 13:50:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508477 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 26B0E7ED; Mon, 1 Jan 2024 00:50:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="d0zhdxmH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95742C433C7; Mon, 1 Jan 2024 00:50:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070241; bh=uBUxT52TGiW08mXmtf7JvDkpoElO+sQ4NJECcdU7ghI=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=d0zhdxmHGZghBP7CC+3oKr7vBpaqPk7+PhcXlCgPKC4g3cLLpQ9pJ6WxqsHT4yL2m H2mVGNa7/2kIXj52UJW09Rw83xdZktORZiemVv8++RkuDkdhLXlyqJrZWzicRYxKmi qEkc4J1JLhq+BXO0E3S2ngjcOd3Mo4M7+DUNU8JJ0HCdO2IRX63+aZH1NLHv2cGdxa gzj31KhXz3UOnkW0j5hgcNWflkqML1Asu+aNQSVSf2otwcmNxd3GTjI6Zm2vqW/ZZy DJ+3zFVDMtnyuDo6oVW8eSd2OXMe1Ib0TD0RNkj0lSMRBvpRVbJmJre3j/ocoGSwCW uqPh4kSrk+X8Q== Date: Sun, 31 Dec 2023 16:50:41 +9900 Subject: [PATCH 03/11] xfs/{030,033,178}: forcibly disable metadata directory trees From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029889.1826032.5600296612089676416.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong The golden output for thests tests encode the xfs_repair output when we fuzz various parts of the filesystem. With metadata directory trees enabled, however, the golden output changes dramatically to reflect reconstruction of the metadata directory tree. To avoid regressions, add a helper to force metadata directories off via MKFS_OPTIONS. Signed-off-by: Darrick J. Wong --- common/xfs | 13 +++++++++++++ tests/xfs/030 | 1 + tests/xfs/033 | 1 + tests/xfs/178 | 1 + 4 files changed, 16 insertions(+) diff --git a/common/xfs b/common/xfs index 48643b7c18..007c8704ce 100644 --- a/common/xfs +++ b/common/xfs @@ -1871,3 +1871,16 @@ _scratch_xfs_find_metafile() echo "${selector}" return 0 } + +# Force metadata directories off. +_scratch_xfs_force_no_metadir() +{ + if echo "$MKFS_OPTIONS" | grep -q 'metadir='; then + MKFS_OPTIONS="$(echo "$MKFS_OPTIONS" | sed -e 's/metadir=\([01]\)/metadir=0/g')" + return + fi + + if grep -q 'metadir=' $MKFS_XFS_PROG; then + MKFS_OPTIONS="-m metadir=0 $MKFS_OPTIONS" + fi +} diff --git a/tests/xfs/030 b/tests/xfs/030 index 201a901579..a62ea4fab3 100755 --- a/tests/xfs/030 +++ b/tests/xfs/030 @@ -50,6 +50,7 @@ _supported_fs xfs _require_scratch _require_no_large_scratch_dev +_scratch_xfs_force_no_metadir DSIZE="-dsize=100m,agcount=6" diff --git a/tests/xfs/033 b/tests/xfs/033 index ef5dc4fa36..e886c15082 100755 --- a/tests/xfs/033 +++ b/tests/xfs/033 @@ -53,6 +53,7 @@ _supported_fs xfs _require_scratch _require_no_large_scratch_dev +_scratch_xfs_force_no_metadir # devzero blows away 512byte blocks, so make 512byte inodes (at least) _scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs >/dev/null diff --git a/tests/xfs/178 b/tests/xfs/178 index fee1e92bf3..4e39cc364c 100755 --- a/tests/xfs/178 +++ b/tests/xfs/178 @@ -52,6 +52,7 @@ _supported_fs xfs # fix filesystem, new mkfs.xfs will be fine. _require_scratch +_scratch_xfs_force_no_metadir _scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs test "${PIPESTATUS[0]}" -eq 0 || _fail "mkfs failed!" From patchwork Wed Dec 27 13:50:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508478 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6CDD37F9; Mon, 1 Jan 2024 00:50:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="juZspp4F" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D7B5C433C7; Mon, 1 Jan 2024 00:50:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070257; bh=zWcZvK5otpvmqwZPIb6vjxtYz/oRQJU1IbLgCJ+PSUg=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=juZspp4FyEFBXsU0bHmBcJyNb23zIOU+B3nAhIzHLohqo0fF4o4HTS0VrRbqW2pPS woxIpvNZtwLn+D21kruflOUe05bfWJm9VjlpTOgwkPMe6h7k1T95Xus03TDiLGS8Tq 4Zl9MZPFGjSDvrTPhr1Ry24NBIJHbrfDJEZb3tFDIWLN21yxoVaz02xxLr20IQMBQh tdODUtuFb2mpYFbDdGKwzISjjbMc+8K1ilt5iAIdtLARcCLbf/Vgd0YIB7//L1+3Gp VVb9yLzXQXx9b0wJQ203wVJ7bfz3cR3nyANmE4emRBH2aFQwoX0vqazAWMs5mCpiUV FpMC9JziXeiig== Date: Sun, 31 Dec 2023 16:50:56 +9900 Subject: [PATCH 04/11] common/repair: patch up repair sb inode value complaints From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029902.1826032.4276950154935936731.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Now that we've refactored xfs_repair to be more consistent in how it reports unexpected superblock inode pointer values, we have to fix up the fstests repair filters to emulate the old golden output. Signed-off-by: Darrick J. Wong --- common/repair | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/repair b/common/repair index 8945d0028c..c3afcfb3e6 100644 --- a/common/repair +++ b/common/repair @@ -28,6 +28,10 @@ _filter_repair() perl -ne ' # for sb /- agno = / && next; # remove each AG line (variable number) +s/realtime bitmap inode pointer/realtime bitmap ino pointer/; +s/sb realtime bitmap inode value/sb realtime bitmap inode/; +s/realtime summary inode pointer/realtime summary ino pointer/; +s/sb realtime summary inode value/sb realtime summary inode/; s/(pointer to) (\d+)/\1 INO/; # Changed inode output in 5.5.0 s/sb root inode value /sb root inode /; From patchwork Wed Dec 27 13:51:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508479 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1BD417ED; Mon, 1 Jan 2024 00:51:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RAToLHxt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E054AC433C7; Mon, 1 Jan 2024 00:51:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070272; bh=RADrQcVQ5hnq6i1FI1tSNwnR/V3ortWIapUM9cZ7++k=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=RAToLHxtBB3v27XX7MnO/vBoxunuMhyxW8U4qw6dgLUdqkLgKdCKAP66Y9XJ5Fyi5 inGpzBOFD7jSCYkII9SFVttPKLDY3XXbhVJdoe8//2yZVirpHZQN89gacD2WmEg1TR c2vfq6Qu0L+FvJOvfnFGahUL6z2fQ+gWtCjh0fS99f/6cThfvtfI/ydReIle7yiMB9 d2teTSdQ0ZIJCEUr9HBP7J8GnTxUinAG9PGRqQe9I1bwhDs5smqbRRPU7A22CpbQnh PrGLVDaV+RE/c7m/aHxp9MSoGyir8oxD+TyobADEYUGTmEnKpLtw2JQ0wwRoFNfsdv T4hNXpZ+G97KA== Date: Sun, 31 Dec 2023 16:51:12 +9900 Subject: [PATCH 05/11] xfs/206: update for metadata directory support From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029916.1826032.4300084170108329048.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Filter 'metadir=' out of the golden output so that metadata directories don't cause this test to regress. Signed-off-by: Darrick J. Wong --- tests/xfs/206 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/xfs/206 b/tests/xfs/206 index f7f12ff1f9..9fd9400daf 100755 --- a/tests/xfs/206 +++ b/tests/xfs/206 @@ -65,7 +65,8 @@ mkfs_filter() -e "s/, lazy-count=[0-9]//" \ -e "/.*crc=/d" \ -e "/^Default configuration/d" \ - -e 's/, parent=[01]//' + -e 's/, parent=[01]//' \ + -e '/metadir=.*/d' } # mkfs slightly smaller than that, small log for speed. From patchwork Wed Dec 27 13:51:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508480 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 065CD7F9; Mon, 1 Jan 2024 00:51:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Awqf3Hab" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 75003C433C7; Mon, 1 Jan 2024 00:51:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070288; bh=eGnebMU3AYPXGsWRbLGxfWhbyDb8nl/NZa+1tdT9atA=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=Awqf3Habpp0R6x8S1yMWwJw0BBqQKrj8aLXa8Mne7NP+57s9itKfezAVYk9gcSiex Zg36EapZcm/QlZ1gzl9pIri3qt+ILN6V1FYznItFNdt3jdRlLyfaSMAOcOblnDTRgb Um3gEoA4B785m7It9Wdk8FI9qD9yAQ4+ew9O2XBd30KTeZ37IsHrXg/fboOq1lX+BW D5yKzelNnUG52AVWEkFbpxhijgYQzS8kimSWIfwZJWchM3PhMf3eUgKpqYQ/6i2oVa 1ZefG7Ehpz+HMpjxXivz8AxhfKDNgZSdZ848WZrDxRC5/QhSke6B1Z98Glp52Tayhy JaGClCPDvm4xg== Date: Sun, 31 Dec 2023 16:51:28 +9900 Subject: [PATCH 06/11] xfs/{050,144,153,299,330}: update quota reports to handle metadir trees From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029929.1826032.12064629466073994470.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Prior to the new metadir feature in XFS, the rtbitmap and rtsummary files were included in icount, though their bcount contribution is zero due to rt and quota not being supported together. With the new metadir feature in XFS, no files in the metadata directory tree are counted in quota. Hence we must adjust the icount of any quota report down by two to avoid breaking golden outputs. Signed-off-by: Darrick J. Wong --- common/filter | 7 +++++-- common/xfs | 29 +++++++++++++++++++++++++++++ tests/xfs/050 | 5 +++++ tests/xfs/153 | 5 +++++ tests/xfs/299 | 1 + tests/xfs/330 | 6 +++++- 6 files changed, 50 insertions(+), 3 deletions(-) diff --git a/common/filter b/common/filter index 509ee95039..904263b3e7 100644 --- a/common/filter +++ b/common/filter @@ -618,11 +618,14 @@ _filter_getcap() # Filter user/group/project id numbers out of quota reports, and standardize # the block counts to use filesystem block size. Callers must set the id and -# bsize variables before calling this function. +# bsize variables before calling this function. The HIDDEN_QUOTA_FILES variable +# (by default zero) is the number of root files to filter out of the inode +# count part of the quota report. _filter_quota_report() { test -n "$id" || echo "id must be set" test -n "$bsize" || echo "block size must be set" + test -n "$HIDDEN_QUOTA_FILES" || HIDDEN_QUOTA_FILES=0 tr -s '[:space:]' | \ perl -npe ' @@ -630,7 +633,7 @@ _filter_quota_report() s/^\#0 \d+ /[ROOT] 0 /g; s/6 days/7 days/g' | perl -npe ' - $val = 0; + $val = '"$HIDDEN_QUOTA_FILES"'; if ($ENV{'LARGE_SCRATCH_DEV'}) { $val = $ENV{'NUM_SPACE_FILES'}; } diff --git a/common/xfs b/common/xfs index 007c8704ce..c6a60119f9 100644 --- a/common/xfs +++ b/common/xfs @@ -1884,3 +1884,32 @@ _scratch_xfs_force_no_metadir() MKFS_OPTIONS="-m metadir=0 $MKFS_OPTIONS" fi } + +# Decide if a mount filesystem has metadata directory trees. +_xfs_mount_has_metadir() { + local mount="$1" + + # spaceman (and its info command) predate metadir + test ! -e "$XFS_SPACEMAN_PROG" && return 1 + $XFS_SPACEMAN_PROG -c "info" "$mount" | grep -q 'metadir=1' +} + +# Compute the number of files that are not counted in quotas. +_xfs_calc_hidden_quota_files() { + local mount="$1" + + if _xfs_mount_has_metadir "$mount"; then + # Prior to the metadir feature, the realtime bitmap and summary + # file were "owned" by root and hence accounted to the root + # dquots. The metadata directory feature stopped accounting + # metadata files to quotas, so we must subtract 2 inodes from + # the repquota golden outputs to keep the tests going. + # + # We needn't adjust the block counts because the kernel doesn't + # support rt quota and hence the rt metadata files will always + # be zero length. + echo -2 + else + echo 0 + fi +} diff --git a/tests/xfs/050 b/tests/xfs/050 index 2220e47016..10294e3f6d 100755 --- a/tests/xfs/050 +++ b/tests/xfs/050 @@ -32,9 +32,14 @@ _require_scratch _require_xfs_quota _scratch_mkfs >/dev/null 2>&1 +orig_mntopts="$MOUNT_OPTIONS" +_qmount_option "uquota" _scratch_mount bsize=$(_get_file_block_size $SCRATCH_MNT) +# needs quota enabled to compute the number of metadata dir files +HIDDEN_QUOTA_FILES=$(_xfs_calc_hidden_quota_files $SCRATCH_MNT) _scratch_unmount +MOUNT_OPTIONS="$orig_mntopts" bsoft=$(( 200 * $bsize )) bhard=$(( 1000 * $bsize )) diff --git a/tests/xfs/153 b/tests/xfs/153 index dbe26b6803..9def579bba 100755 --- a/tests/xfs/153 +++ b/tests/xfs/153 @@ -37,9 +37,14 @@ _require_idmapped_mounts _require_test_program "vfs/mount-idmapped" _scratch_mkfs >/dev/null 2>&1 +orig_mntopts="$MOUNT_OPTIONS" +_qmount_option "uquota" _scratch_mount bsize=$(_get_file_block_size $SCRATCH_MNT) +# needs quota enabled to compute the number of metadata dir files +HIDDEN_QUOTA_FILES=$(_xfs_calc_hidden_quota_files $SCRATCH_MNT) _scratch_unmount +MOUNT_OPTIONS="$orig_mntopts" bsoft=$(( 200 * $bsize )) bhard=$(( 1000 * $bsize )) diff --git a/tests/xfs/299 b/tests/xfs/299 index 4b9df3c6aa..49a6527255 100755 --- a/tests/xfs/299 +++ b/tests/xfs/299 @@ -159,6 +159,7 @@ _qmount_option "uquota,gquota,pquota" _qmount bsize=$(_get_file_block_size $SCRATCH_MNT) +HIDDEN_QUOTA_FILES=$(_xfs_calc_hidden_quota_files $SCRATCH_MNT) bsoft=$(( 100 * $bsize )) bhard=$(( 500 * $bsize )) diff --git a/tests/xfs/330 b/tests/xfs/330 index c6e74e67e8..7ebbffff2a 100755 --- a/tests/xfs/330 +++ b/tests/xfs/330 @@ -26,7 +26,10 @@ _require_nobody do_repquota() { - repquota $SCRATCH_MNT | grep -E '^(fsgqa|root|nobody)' | sort -r + repquota $SCRATCH_MNT | grep -E '^(fsgqa|root|nobody)' | sort -r | \ + perl -npe ' + $val = '"$HIDDEN_QUOTA_FILES"'; + s/(^root\s+--\s+\S+\s+\S+\s+\S+\s+)(\S+)/$1@{[$2 - $val]}/g' } rm -f "$seqres.full" @@ -35,6 +38,7 @@ echo "Format and mount" _scratch_mkfs > "$seqres.full" 2>&1 export MOUNT_OPTIONS="-o usrquota,grpquota $MOUNT_OPTIONS" _scratch_mount >> "$seqres.full" 2>&1 +HIDDEN_QUOTA_FILES=$(_xfs_calc_hidden_quota_files $SCRATCH_MNT) quotacheck -u -g $SCRATCH_MNT 2> /dev/null quotaon $SCRATCH_MNT 2> /dev/null From patchwork Wed Dec 27 13:51:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508481 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5C9C97EF; Mon, 1 Jan 2024 00:51:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="IQeOuqKL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F81DC433C7; Mon, 1 Jan 2024 00:51:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070304; bh=J+wDQk9S7dRGqux9z0+Vowaz4LghVZfn/8EvSMEiWNM=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=IQeOuqKL1xHSQlE+SFgQxYKLkc0+BNfyXXY90oOM3GBrUZb/PJJ76Z0JBBz8ksid/ 9XWPkiP31QpbCKEx9Y6/SxymMGvS8BIuSvZkqpETVV6dcAtKJ0hENlUHJ2HnUdoB5N 6+3psddtgtI7ScM6zNjIIsi4V6RnHrn7Wle58sR73LYhmCXcTLdwUoNkC7oVIAuph2 Isq16ZP8mK1U6MHsLwxT5yVWSW298EdKXI2IhgcAhm9qQd4OEoJTssN7owxqxBRnX8 mAqfnCjtkJQe31PGv1hwAi8c2FlE6Slc3fiQGEspo7uMUQa0JL0s4lwLIX71jssCak H+rE2VFubt7Zw== Date: Sun, 31 Dec 2023 16:51:43 +9900 Subject: [PATCH 07/11] xfs/856: add metadir upgrade to test matrix From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029942.1826032.15570536793461753536.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Add metadata directory trees to the features that this test will try to upgrade. Signed-off-by: Darrick J. Wong --- tests/xfs/1856 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/xfs/1856 b/tests/xfs/1856 index 84e72d7c81..93bdbaa531 100755 --- a/tests/xfs/1856 +++ b/tests/xfs/1856 @@ -173,12 +173,14 @@ if rt_configured; then check_repair_upgrade finobt && FEATURES+=("finobt") check_repair_upgrade inobtcount && FEATURES+=("inobtcount") check_repair_upgrade bigtime && FEATURES+=("bigtime") + check_repair_upgrade metadir && FEATURES+=("metadir") else check_repair_upgrade finobt && FEATURES+=("finobt") check_repair_upgrade rmapbt && FEATURES+=("rmapbt") check_repair_upgrade reflink && FEATURES+=("reflink") check_repair_upgrade inobtcount && FEATURES+=("inobtcount") check_repair_upgrade bigtime && FEATURES+=("bigtime") + check_repair_upgrade metadir && FEATURES+=("metadir") fi test "${#FEATURES[@]}" -eq 0 && \ From patchwork Wed Dec 27 13:51:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508482 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B8BD7EF; Mon, 1 Jan 2024 00:52:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sP/IBduC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CE46AC433C7; Mon, 1 Jan 2024 00:51:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070319; bh=+36B7195VR9jl2Gu3IH7SWLqhI39xRLJcR776BqQRbg=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=sP/IBduCX0RZmRTUkxawCnjkiu+nm2EX9Zrl7dXaQgOPaWPB/KTpQ4jbSPY05JJJY RjjSuPMacyPGWzT8XDprGBTHU0bOVQr90GzGoS4b3djfG28Haw6fuxC/hVQHVgBOcT ECO+bvwPkShF/p/2W7x/CkdkIBnA4TUV/KylOESVJWWWYyPl2MrK8QijGQjnpm7Uqd Qv8Y/bU/6OOiCD5sfZ6isAE66Ogdxoui0tKX8C7W2KYlcYJPQzAcbJBtS21zbT9Tfw tjXDYjQ+Pp2D8cQtw1sWoZVbH53Lwd/dPzLkUXI79VLW/JaJZJsnLl37ST558yrDr1 My+RuWGqQMfrQ== Date: Sun, 31 Dec 2023 16:51:59 +9900 Subject: [PATCH 08/11] xfs/509: adjust inumbers accounting for metadata directories From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029955.1826032.8448465090415123895.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong The INUMBERS ioctl exports data from the inode btree directly -- the number of inodes it reports is taken from ir_freemask and includes all the files in the metadata directory tree. BULKSTAT, on the other hand, only reports non-metadata files. When metadir is enabled, this will (eventually) cause a discrepancy in the inode counts that is large enough to exceed the tolerances, thereby causing a test failure. Correct this by counting the files in the metadata directory and subtracting that from the INUMBERS totals. Signed-off-by: Darrick J. Wong --- tests/xfs/509 | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/tests/xfs/509 b/tests/xfs/509 index d04dfbbfba..b87abef964 100755 --- a/tests/xfs/509 +++ b/tests/xfs/509 @@ -91,13 +91,13 @@ inumbers_count() bstat_versions | while read v_tag v_flag; do echo -n "inumbers all($v_tag): " nr=$(inumbers_fs $SCRATCH_MNT $v_flag) - _within_tolerance "inumbers" $nr $expect $tolerance -v + _within_tolerance "inumbers" $((nr - METADATA_FILES)) $expect $tolerance -v local agcount=$(_xfs_mount_agcount $SCRATCH_MNT) for batchsize in 71 2 1; do echo -n "inumbers $batchsize($v_tag): " nr=$(inumbers_ag $agcount $batchsize $SCRATCH_MNT $v_flag) - _within_tolerance "inumbers" $nr $expect $tolerance -v + _within_tolerance "inumbers" $((nr - METADATA_FILES)) $expect $tolerance -v done done } @@ -143,9 +143,26 @@ _supported_fs xfs DIRCOUNT=8 INOCOUNT=$((2048 / DIRCOUNT)) +# Count everything in the metadata directory tree. +count_metadir_files() { + local metadirs=('/realtime' '/quota') + local db_args=('-f') + + for m in "${metadirs[@]}"; do + db_args+=('-c' "ls -m $m") + done + + local ret=$(_scratch_xfs_db "${db_args[@]}" 2>/dev/null | grep regular | wc -l) + test -z "$ret" && ret=0 + echo $ret +} + _scratch_mkfs "-d agcount=$DIRCOUNT" >> $seqres.full 2>&1 || _fail "mkfs failed" _scratch_mount +METADATA_FILES=$(count_metadir_files) +echo "found $METADATA_FILES metadata files" >> $seqres.full + # Figure out if we have v5 bulkstat/inumbers ioctls. has_v5= bs_root_out="$($XFS_IO_PROG -c 'bulkstat_single root' $SCRATCH_MNT 2>>$seqres.full)" From patchwork Wed Dec 27 13:52:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508483 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA83A7F9; Mon, 1 Jan 2024 00:52:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KDHPOdSc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 770BAC433C7; Mon, 1 Jan 2024 00:52:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070335; bh=/aANm7nvLEKfpkuwErFAb72mKDf0v0lHcinO9RN7UVU=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=KDHPOdScsmEjjHy/APAyFzKfK7fq7E0JLg4cjTth4OGjkC1ZWS5TLC7i35XBhoyRd 90voi+HLsnrXf5vtEdk18CcArr26mGh0xIk0T1N8RCcq2gE95SjrMoSMhp7ZJPWNts ERIrPf5cP4v3lMp20j443MrMFo79D2nL+yzfZnWueMqwLC1xkOqV39Flba6s1JJ97S MdiTdxqyIS7XLimh6rxlRMFRZyTcAMsDnV4737zAlqx880hwtYLWNWtBBAyAaWw9Zg 37+RVUGUYYrQcvz2Kpu097HjQgzHNVNwHfuOv6yK4mjEqvjTZLZjqRv+vWzNV25+Y4 FCMr4u+pozTsQ== Date: Sun, 31 Dec 2023 16:52:15 +9900 Subject: [PATCH 09/11] xfs: create fuzz tests for metadata directories From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029968.1826032.6023234349919842647.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Create fuzz tests to make sure that all the validation works for metadata directories and subdirectories. Signed-off-by: Darrick J. Wong --- common/xfs | 22 ++++++++++++++++++++++ tests/xfs/1546 | 37 +++++++++++++++++++++++++++++++++++++ tests/xfs/1546.out | 4 ++++ tests/xfs/1547 | 37 +++++++++++++++++++++++++++++++++++++ tests/xfs/1547.out | 4 ++++ tests/xfs/1548 | 37 +++++++++++++++++++++++++++++++++++++ tests/xfs/1548.out | 4 ++++ tests/xfs/1549 | 38 ++++++++++++++++++++++++++++++++++++++ tests/xfs/1549.out | 4 ++++ tests/xfs/1550 | 37 +++++++++++++++++++++++++++++++++++++ tests/xfs/1550.out | 4 ++++ tests/xfs/1551 | 37 +++++++++++++++++++++++++++++++++++++ tests/xfs/1551.out | 4 ++++ tests/xfs/1552 | 37 +++++++++++++++++++++++++++++++++++++ tests/xfs/1552.out | 4 ++++ tests/xfs/1553 | 38 ++++++++++++++++++++++++++++++++++++++ tests/xfs/1553.out | 4 ++++ 17 files changed, 352 insertions(+) create mode 100755 tests/xfs/1546 create mode 100644 tests/xfs/1546.out create mode 100755 tests/xfs/1547 create mode 100644 tests/xfs/1547.out create mode 100755 tests/xfs/1548 create mode 100644 tests/xfs/1548.out create mode 100755 tests/xfs/1549 create mode 100644 tests/xfs/1549.out create mode 100755 tests/xfs/1550 create mode 100644 tests/xfs/1550.out create mode 100755 tests/xfs/1551 create mode 100644 tests/xfs/1551.out create mode 100755 tests/xfs/1552 create mode 100644 tests/xfs/1552.out create mode 100755 tests/xfs/1553 create mode 100644 tests/xfs/1553.out diff --git a/common/xfs b/common/xfs index c6a60119f9..b88491666d 100644 --- a/common/xfs +++ b/common/xfs @@ -1913,3 +1913,25 @@ _xfs_calc_hidden_quota_files() { echo 0 fi } + +_require_xfs_mkfs_metadir() +{ + _scratch_mkfs_xfs_supported -m metadir=1 >/dev/null 2>&1 || \ + _notrun "mkfs.xfs doesn't have metadir features" +} + +_require_xfs_scratch_metadir() +{ + _require_xfs_mkfs_metadir + _require_scratch + + _scratch_mkfs -m metadir=1 &> /dev/null + _require_scratch_xfs_features METADIR + _try_scratch_mount + res=$? + if [ $res -ne 0 ]; then + _notrun "mounting with metadir not supported by filesystem type: $FSTYP" + else + _scratch_unmount + fi +} diff --git a/tests/xfs/1546 b/tests/xfs/1546 new file mode 100755 index 0000000000..a370eb7abf --- /dev/null +++ b/tests/xfs/1546 @@ -0,0 +1,37 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2022-2024 Oracle. All Rights Reserved. +# +# FS QA Test No. 1546 +# +# Populate a XFS filesystem and fuzz every metadir root field. +# Use xfs_scrub to fix the corruption. + +. ./common/preamble +_begin_fstest dangerous_fuzzers dangerous_scrub dangerous_online_repair + +_register_cleanup "_cleanup" BUS + +# Import common functions. +. ./common/filter +. ./common/populate +. ./common/fuzzy + +# real QA test starts here +_supported_fs xfs +_require_xfs_scratch_metadir +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /') + +echo "Fuzz metadir root" +_scratch_xfs_fuzz_metadata '' 'online' 'path -m /' >> $seqres.full +echo "Done fuzzing metadir root" + +# success, all done +status=0 +exit diff --git a/tests/xfs/1546.out b/tests/xfs/1546.out new file mode 100644 index 0000000000..b72891a758 --- /dev/null +++ b/tests/xfs/1546.out @@ -0,0 +1,4 @@ +QA output created by 1546 +Format and populate +Fuzz metadir root +Done fuzzing metadir root diff --git a/tests/xfs/1547 b/tests/xfs/1547 new file mode 100755 index 0000000000..0083924b7b --- /dev/null +++ b/tests/xfs/1547 @@ -0,0 +1,37 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2022-2024 Oracle. All Rights Reserved. +# +# FS QA Test No. 1547 +# +# Populate a XFS filesystem and fuzz every metadir root field. +# Use xfs_repair to fix the corruption. + +. ./common/preamble +_begin_fstest dangerous_fuzzers dangerous_scrub dangerous_repair + +_register_cleanup "_cleanup" BUS + +# Import common functions. +. ./common/filter +. ./common/populate +. ./common/fuzzy + +# real QA test starts here +_supported_fs xfs +_require_xfs_scratch_metadir +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /') + +echo "Fuzz metadir root" +_scratch_xfs_fuzz_metadata '' 'offline' 'path -m /' >> $seqres.full +echo "Done fuzzing metadir root" + +# success, all done +status=0 +exit diff --git a/tests/xfs/1547.out b/tests/xfs/1547.out new file mode 100644 index 0000000000..983cc01343 --- /dev/null +++ b/tests/xfs/1547.out @@ -0,0 +1,4 @@ +QA output created by 1547 +Format and populate +Fuzz metadir root +Done fuzzing metadir root diff --git a/tests/xfs/1548 b/tests/xfs/1548 new file mode 100755 index 0000000000..d81c524b07 --- /dev/null +++ b/tests/xfs/1548 @@ -0,0 +1,37 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2022-2024 Oracle. All Rights Reserved. +# +# FS QA Test No. 1548 +# +# Populate a XFS filesystem and fuzz every metadir root field. +# Do not fix the filesystem, to test metadata verifiers. + +. ./common/preamble +_begin_fstest dangerous_fuzzers dangerous_norepair + +_register_cleanup "_cleanup" BUS + +# Import common functions. +. ./common/filter +. ./common/populate +. ./common/fuzzy + +# real QA test starts here +_supported_fs xfs +_require_xfs_scratch_metadir +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /') + +echo "Fuzz metadir root" +_scratch_xfs_fuzz_metadata '' 'none' 'path -m /' >> $seqres.full +echo "Done fuzzing metadir root" + +# success, all done +status=0 +exit diff --git a/tests/xfs/1548.out b/tests/xfs/1548.out new file mode 100644 index 0000000000..9e395bb059 --- /dev/null +++ b/tests/xfs/1548.out @@ -0,0 +1,4 @@ +QA output created by 1548 +Format and populate +Fuzz metadir root +Done fuzzing metadir root diff --git a/tests/xfs/1549 b/tests/xfs/1549 new file mode 100755 index 0000000000..487c73e9e9 --- /dev/null +++ b/tests/xfs/1549 @@ -0,0 +1,38 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2022-2024 Oracle. All Rights Reserved. +# +# FS QA Test No. 1549 +# +# Populate a XFS filesystem and fuzz every metadir root field. +# Try online repair and, if necessary, offline repair, +# to test the most likely usage pattern. + +. ./common/preamble +_begin_fstest dangerous_fuzzers dangerous_bothrepair + +_register_cleanup "_cleanup" BUS + +# Import common functions. +. ./common/filter +. ./common/populate +. ./common/fuzzy + +# real QA test starts here +_supported_fs xfs +_require_xfs_scratch_metadir +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /') + +echo "Fuzz metadir root" +_scratch_xfs_fuzz_metadata '' 'both' 'path -m /' >> $seqres.full +echo "Done fuzzing metadir root" + +# success, all done +status=0 +exit diff --git a/tests/xfs/1549.out b/tests/xfs/1549.out new file mode 100644 index 0000000000..22b3d215e3 --- /dev/null +++ b/tests/xfs/1549.out @@ -0,0 +1,4 @@ +QA output created by 1549 +Format and populate +Fuzz metadir root +Done fuzzing metadir root diff --git a/tests/xfs/1550 b/tests/xfs/1550 new file mode 100755 index 0000000000..8b5b42710c --- /dev/null +++ b/tests/xfs/1550 @@ -0,0 +1,37 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2022-2024 Oracle. All Rights Reserved. +# +# FS QA Test No. 1550 +# +# Populate a XFS filesystem and fuzz every metadir subdir field. +# Use xfs_scrub to fix the corruption. + +. ./common/preamble +_begin_fstest dangerous_fuzzers dangerous_scrub dangerous_online_repair + +_register_cleanup "_cleanup" BUS + +# Import common functions. +. ./common/filter +. ./common/populate +. ./common/fuzzy + +# real QA test starts here +_supported_fs xfs +_require_xfs_scratch_metadir +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime') + +echo "Fuzz metadir subdir" +_scratch_xfs_fuzz_metadata '' 'online' 'path -m /realtime' >> $seqres.full +echo "Done fuzzing metadir subdir" + +# success, all done +status=0 +exit diff --git a/tests/xfs/1550.out b/tests/xfs/1550.out new file mode 100644 index 0000000000..7694cd670b --- /dev/null +++ b/tests/xfs/1550.out @@ -0,0 +1,4 @@ +QA output created by 1550 +Format and populate +Fuzz metadir subdir +Done fuzzing metadir subdir diff --git a/tests/xfs/1551 b/tests/xfs/1551 new file mode 100755 index 0000000000..05b0328ef0 --- /dev/null +++ b/tests/xfs/1551 @@ -0,0 +1,37 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2022-2024 Oracle. All Rights Reserved. +# +# FS QA Test No. 1551 +# +# Populate a XFS filesystem and fuzz every metadir subdir field. +# Use xfs_repair to fix the corruption. + +. ./common/preamble +_begin_fstest dangerous_fuzzers dangerous_scrub dangerous_repair + +_register_cleanup "_cleanup" BUS + +# Import common functions. +. ./common/filter +. ./common/populate +. ./common/fuzzy + +# real QA test starts here +_supported_fs xfs +_require_xfs_scratch_metadir +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime') + +echo "Fuzz metadir subdir" +_scratch_xfs_fuzz_metadata '' 'offline' 'path -m /realtime' >> $seqres.full +echo "Done fuzzing metadir subdir" + +# success, all done +status=0 +exit diff --git a/tests/xfs/1551.out b/tests/xfs/1551.out new file mode 100644 index 0000000000..4c3360d08b --- /dev/null +++ b/tests/xfs/1551.out @@ -0,0 +1,4 @@ +QA output created by 1551 +Format and populate +Fuzz metadir subdir +Done fuzzing metadir subdir diff --git a/tests/xfs/1552 b/tests/xfs/1552 new file mode 100755 index 0000000000..0870837f9c --- /dev/null +++ b/tests/xfs/1552 @@ -0,0 +1,37 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2022-2024 Oracle. All Rights Reserved. +# +# FS QA Test No. 1552 +# +# Populate a XFS filesystem and fuzz every metadir subdir field. +# Do not fix the filesystem, to test metadata verifiers. + +. ./common/preamble +_begin_fstest dangerous_fuzzers dangerous_norepair + +_register_cleanup "_cleanup" BUS + +# Import common functions. +. ./common/filter +. ./common/populate +. ./common/fuzzy + +# real QA test starts here +_supported_fs xfs +_require_xfs_scratch_metadir +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime') + +echo "Fuzz metadir subdir" +_scratch_xfs_fuzz_metadata '' 'none' 'path -m /realtime' >> $seqres.full +echo "Done fuzzing metadir subdir" + +# success, all done +status=0 +exit diff --git a/tests/xfs/1552.out b/tests/xfs/1552.out new file mode 100644 index 0000000000..6636b1b656 --- /dev/null +++ b/tests/xfs/1552.out @@ -0,0 +1,4 @@ +QA output created by 1552 +Format and populate +Fuzz metadir subdir +Done fuzzing metadir subdir diff --git a/tests/xfs/1553 b/tests/xfs/1553 new file mode 100755 index 0000000000..ab15e53e27 --- /dev/null +++ b/tests/xfs/1553 @@ -0,0 +1,38 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2022-2024 Oracle. All Rights Reserved. +# +# FS QA Test No. 1553 +# +# Populate a XFS filesystem and fuzz every metadir subdir field. +# Try online repair and, if necessary, offline repair, +# to test the most likely usage pattern. + +. ./common/preamble +_begin_fstest dangerous_fuzzers dangerous_bothrepair + +_register_cleanup "_cleanup" BUS + +# Import common functions. +. ./common/filter +. ./common/populate +. ./common/fuzzy + +# real QA test starts here +_supported_fs xfs +_require_xfs_scratch_metadir +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" 'path -m /realtime') + +echo "Fuzz metadir subdir" +_scratch_xfs_fuzz_metadata '' 'both' 'path -m /realtime' >> $seqres.full +echo "Done fuzzing metadir subdir" + +# success, all done +status=0 +exit diff --git a/tests/xfs/1553.out b/tests/xfs/1553.out new file mode 100644 index 0000000000..0298fcfddb --- /dev/null +++ b/tests/xfs/1553.out @@ -0,0 +1,4 @@ +QA output created by 1553 +Format and populate +Fuzz metadir subdir +Done fuzzing metadir subdir From patchwork Wed Dec 27 13:52:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508484 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 560EE7EE; Mon, 1 Jan 2024 00:52:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mqGOrNL2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0B1FFC433C8; Mon, 1 Jan 2024 00:52:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070351; bh=bfOryF8ygdVuQkUzO48F25VOHdghEYvNCm3um5+Sw5U=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=mqGOrNL2dEOs/+LathuqqooKwfaT1J/ZOXLM8+qf2FDLlS6LWYeMmCEHhVjukWmYf iLPqza+VXuWvYJBaKrL1A5OyUSwsl16maJvgMHbo9IvlAT3lxBmz3xBkAR+F0Nj2OF 1F/N4+6mMjJVlS2AVFx8Nqx5eSvr0HTFfSS5kuNht7U1QiSCjZzeb/eZDA67bf9crV rvZzwC+x276A7+diqQr5lNR/MZIIxkrOTlnPP2KTeAD+suBZRtmUcAz6LW8MCGYKzk g93OF2is6iThSXJwv+2ltVxmW74sjejb3ifORYXvk4JMg79FbaAIclhlcIcTtRMBYp 7jGN0erwTup3w== Date: Sun, 31 Dec 2023 16:52:30 +9900 Subject: [PATCH 10/11] xfs: baseline golden output for metadata directory fuzz tests From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029982.1826032.1603274280482729337.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Record all the currently known failures of the xfs_scrub check and repair code for the metadata directory fuzz tests. Signed-off-by: Darrick J. Wong --- tests/xfs/1546.out | 312 ++++++++++++++++++++++++++++++++++++++ tests/xfs/1547.out | 32 ++++ tests/xfs/1548.out | 314 ++++++++++++++++++++++++++++++++++++++ tests/xfs/1549.out | 326 +++++++++++++++++++++++++++++++++++++++ tests/xfs/1550.out | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/1551.out | 31 ++++ tests/xfs/1552.out | 339 +++++++++++++++++++++++++++++++++++++++++ tests/xfs/1553.out | 366 ++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 2150 insertions(+) diff --git a/tests/xfs/1546.out b/tests/xfs/1546.out index b72891a758..cdfffd1609 100644 --- a/tests/xfs/1546.out +++ b/tests/xfs/1546.out @@ -1,4 +1,316 @@ QA output created by 1546 Format and populate Fuzz metadir root +core.magic = zeroes: mount failed (32). +core.magic = ones: mount failed (32). +core.magic = firstbit: mount failed (32). +core.magic = middlebit: mount failed (32). +core.magic = lastbit: mount failed (32). +core.magic = add: mount failed (32). +core.magic = sub: mount failed (32). +core.mode = zeroes: mount failed (32). +core.mode = ones: mount failed (32). +core.mode = firstbit: mount failed (32). +core.mode = middlebit: mount failed (32). +core.mode = lastbit: mount failed (32). +core.mode = add: mount failed (32). +core.mode = sub: mount failed (32). +core.version = zeroes: mount failed (32). +core.version = ones: mount failed (32). +core.version = firstbit: mount failed (32). +core.version = middlebit: mount failed (32). +core.version = lastbit: mount failed (32). +core.version = add: mount failed (32). +core.version = sub: mount failed (32). +core.format = zeroes: mount failed (32). +core.format = ones: mount failed (32). +core.format = firstbit: mount failed (32). +core.format = middlebit: mount failed (32). +core.format = lastbit: mount failed (32). +core.format = add: mount failed (32). +core.format = sub: mount failed (32). +core.onlink = ones: mount failed (32). +core.onlink = firstbit: mount failed (32). +core.onlink = middlebit: mount failed (32). +core.onlink = lastbit: mount failed (32). +core.onlink = add: mount failed (32). +core.onlink = sub: mount failed (32). +core.uid = ones: mount failed (32). +core.uid = firstbit: mount failed (32). +core.uid = middlebit: mount failed (32). +core.uid = lastbit: mount failed (32). +core.uid = add: mount failed (32). +core.uid = sub: mount failed (32). +core.gid = ones: mount failed (32). +core.gid = firstbit: mount failed (32). +core.gid = middlebit: mount failed (32). +core.gid = lastbit: mount failed (32). +core.gid = add: mount failed (32). +core.gid = sub: mount failed (32). +core.nlinkv2 = zeroes: mount failed (32). +core.projid_lo = ones: mount failed (32). +core.projid_lo = firstbit: mount failed (32). +core.projid_lo = middlebit: mount failed (32). +core.projid_lo = lastbit: mount failed (32). +core.projid_lo = add: mount failed (32). +core.projid_lo = sub: mount failed (32). +core.projid_hi = ones: mount failed (32). +core.projid_hi = firstbit: mount failed (32). +core.projid_hi = middlebit: mount failed (32). +core.projid_hi = lastbit: mount failed (32). +core.projid_hi = add: mount failed (32). +core.projid_hi = sub: mount failed (32). +core.nextents = ones: mount failed (32). +core.nextents = firstbit: mount failed (32). +core.nextents = middlebit: mount failed (32). +core.nextents = lastbit: mount failed (32). +core.nextents = add: mount failed (32). +core.nextents = sub: mount failed (32). +core.size = zeroes: mount failed (32). +core.size = ones: mount failed (32). +core.size = firstbit: mount failed (32). +core.size = middlebit: mount failed (32). +core.size = lastbit: mount failed (32). +core.size = add: mount failed (32). +core.size = sub: mount failed (32). +core.extsize = ones: mount failed (32). +core.extsize = firstbit: mount failed (32). +core.extsize = middlebit: mount failed (32). +core.extsize = lastbit: mount failed (32). +core.extsize = add: mount failed (32). +core.extsize = sub: mount failed (32). +core.naextents = ones: mount failed (32). +core.naextents = firstbit: mount failed (32). +core.naextents = middlebit: mount failed (32). +core.naextents = lastbit: mount failed (32). +core.naextents = add: mount failed (32). +core.naextents = sub: mount failed (32). +core.forkoff = ones: mount failed (32). +core.forkoff = firstbit: mount failed (32). +core.forkoff = middlebit: online scrub didn't fail. +core.forkoff = lastbit: mount failed (32). +core.forkoff = add: mount failed (32). +core.forkoff = sub: mount failed (32). +core.aformat = zeroes: online scrub didn't fail. +core.aformat = zeroes: offline re-scrub failed (1). +core.aformat = zeroes: offline post-mod scrub failed (1). +core.aformat = ones: mount failed (32). +core.aformat = firstbit: mount failed (32). +core.aformat = middlebit: mount failed (32). +core.aformat = lastbit: mount failed (32). +core.aformat = add: mount failed (32). +core.aformat = sub: mount failed (32). +core.realtime = ones: mount failed (32). +core.realtime = firstbit: mount failed (32). +core.realtime = middlebit: mount failed (32). +core.realtime = lastbit: mount failed (32). +core.realtime = add: mount failed (32). +core.realtime = sub: mount failed (32). +core.rtinherit = ones: online scrub didn't fail. +core.rtinherit = firstbit: online scrub didn't fail. +core.rtinherit = middlebit: online scrub didn't fail. +core.rtinherit = lastbit: online scrub didn't fail. +core.rtinherit = add: online scrub didn't fail. +core.rtinherit = sub: online scrub didn't fail. +core.projinherit = ones: online scrub didn't fail. +core.projinherit = firstbit: online scrub didn't fail. +core.projinherit = middlebit: online scrub didn't fail. +core.projinherit = lastbit: online scrub didn't fail. +core.projinherit = add: online scrub didn't fail. +core.projinherit = sub: online scrub didn't fail. +core.nosymlinks = zeroes: mount failed (32). +core.nosymlinks = firstbit: mount failed (32). +core.nosymlinks = middlebit: mount failed (32). +core.nosymlinks = lastbit: mount failed (32). +core.nosymlinks = add: mount failed (32). +core.nosymlinks = sub: mount failed (32). +core.extsz = ones: mount failed (32). +core.extsz = firstbit: mount failed (32). +core.extsz = middlebit: mount failed (32). +core.extsz = lastbit: mount failed (32). +core.extsz = add: mount failed (32). +core.extsz = sub: mount failed (32). +core.extszinherit = ones: mount failed (32). +core.extszinherit = firstbit: mount failed (32). +core.extszinherit = middlebit: mount failed (32). +core.extszinherit = lastbit: mount failed (32). +core.extszinherit = add: mount failed (32). +core.extszinherit = sub: mount failed (32). +next_unlinked = zeroes: mount failed (32). +next_unlinked = firstbit: mount failed (32). +next_unlinked = middlebit: mount failed (32). +next_unlinked = lastbit: mount failed (32). +next_unlinked = add: online scrub didn't fail. +next_unlinked = add: offline re-scrub failed (1). +next_unlinked = add: offline post-mod scrub failed (1). +next_unlinked = sub: mount failed (32). +v3.crc = zeroes: mount failed (32). +v3.crc = ones: mount failed (32). +v3.crc = firstbit: mount failed (32). +v3.crc = middlebit: mount failed (32). +v3.crc = lastbit: mount failed (32). +v3.crc = add: mount failed (32). +v3.crc = sub: mount failed (32). +v3.change_count = zeroes: online scrub didn't fail. +v3.change_count = ones: online scrub didn't fail. +v3.change_count = firstbit: online scrub didn't fail. +v3.change_count = middlebit: online scrub didn't fail. +v3.change_count = lastbit: online scrub didn't fail. +v3.change_count = add: online scrub didn't fail. +v3.change_count = sub: online scrub didn't fail. +v3.flags2 = zeroes: mount failed (32). +v3.flags2 = ones: mount failed (32). +v3.flags2 = firstbit: mount failed (32). +v3.flags2 = middlebit: online scrub didn't fail. +v3.flags2 = middlebit: offline re-scrub failed (1). +v3.flags2 = middlebit: offline post-mod scrub failed (1). +v3.flags2 = lastbit: mount failed (32). +v3.flags2 = add: mount failed (32). +v3.flags2 = sub: mount failed (32). +v3.cowextsize = ones: mount failed (32). +v3.cowextsize = firstbit: mount failed (32). +v3.cowextsize = middlebit: mount failed (32). +v3.cowextsize = lastbit: mount failed (32). +v3.cowextsize = add: mount failed (32). +v3.cowextsize = sub: mount failed (32). +v3.inumber = zeroes: mount failed (32). +v3.inumber = ones: mount failed (32). +v3.inumber = firstbit: mount failed (32). +v3.inumber = middlebit: mount failed (32). +v3.inumber = lastbit: mount failed (32). +v3.inumber = add: mount failed (32). +v3.inumber = sub: mount failed (32). +v3.uuid = zeroes: mount failed (32). +v3.uuid = ones: mount failed (32). +v3.uuid = firstbit: mount failed (32). +v3.uuid = middlebit: mount failed (32). +v3.uuid = lastbit: mount failed (32). +v3.reflink = ones: mount failed (32). +v3.reflink = firstbit: mount failed (32). +v3.reflink = middlebit: mount failed (32). +v3.reflink = lastbit: mount failed (32). +v3.reflink = add: mount failed (32). +v3.reflink = sub: mount failed (32). +v3.cowextsz = ones: mount failed (32). +v3.cowextsz = firstbit: mount failed (32). +v3.cowextsz = middlebit: mount failed (32). +v3.cowextsz = lastbit: mount failed (32). +v3.cowextsz = add: mount failed (32). +v3.cowextsz = sub: mount failed (32). +v3.nrext64 = zeroes: online scrub didn't fail. +v3.nrext64 = firstbit: online scrub didn't fail. +v3.nrext64 = middlebit: online scrub didn't fail. +v3.nrext64 = lastbit: online scrub didn't fail. +v3.nrext64 = add: online scrub didn't fail. +v3.nrext64 = sub: online scrub didn't fail. +v3.metadir = zeroes: mount failed (32). +v3.metadir = firstbit: mount failed (32). +v3.metadir = middlebit: mount failed (32). +v3.metadir = lastbit: mount failed (32). +v3.metadir = add: mount failed (32). +v3.metadir = sub: mount failed (32). +u3.sfdir3.hdr.count = zeroes: mount failed (32). +u3.sfdir3.hdr.count = ones: mount failed (32). +u3.sfdir3.hdr.count = firstbit: mount failed (32). +u3.sfdir3.hdr.count = middlebit: mount failed (32). +u3.sfdir3.hdr.count = lastbit: mount failed (32). +u3.sfdir3.hdr.count = add: mount failed (32). +u3.sfdir3.hdr.count = sub: mount failed (32). +u3.sfdir3.hdr.i8count = ones: mount failed (32). +u3.sfdir3.hdr.i8count = firstbit: mount failed (32). +u3.sfdir3.hdr.i8count = middlebit: mount failed (32). +u3.sfdir3.hdr.i8count = lastbit: mount failed (32). +u3.sfdir3.hdr.i8count = add: mount failed (32). +u3.sfdir3.hdr.i8count = sub: mount failed (32). +u3.sfdir3.hdr.parent.i4 = zeroes: mount failed (32). +u3.sfdir3.hdr.parent.i4 = ones: mount failed (32). +u3.sfdir3.hdr.parent.i4 = firstbit: mount failed (32). +u3.sfdir3.hdr.parent.i4 = sub: mount failed (32). +u3.sfdir3.list[0].namelen = zeroes: mount failed (32). +u3.sfdir3.list[0].namelen = ones: mount failed (32). +u3.sfdir3.list[0].namelen = firstbit: mount failed (32). +u3.sfdir3.list[0].namelen = middlebit: mount failed (32). +u3.sfdir3.list[0].namelen = lastbit: mount failed (32). +u3.sfdir3.list[0].namelen = add: mount failed (32). +u3.sfdir3.list[0].namelen = sub: mount failed (32). +u3.sfdir3.list[0].offset = zeroes: mount failed (32). +u3.sfdir3.list[0].offset = ones: mount failed (32). +u3.sfdir3.list[0].offset = firstbit: mount failed (32). +u3.sfdir3.list[0].offset = middlebit: mount failed (32). +u3.sfdir3.list[0].offset = lastbit: mount failed (32). +u3.sfdir3.list[0].offset = add: mount failed (32). +u3.sfdir3.list[0].offset = sub: mount failed (32). +u3.sfdir3.list[0].name = zeroes: mount failed (32). +u3.sfdir3.list[0].name = ones: mount failed (32). +u3.sfdir3.list[0].name = firstbit: mount failed (32). +u3.sfdir3.list[0].name = middlebit: mount failed (32). +u3.sfdir3.list[0].name = lastbit: mount failed (32). +u3.sfdir3.list[0].name = add: mount failed (32). +u3.sfdir3.list[0].name = sub: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[0].filetype = zeroes: mount failed (32). +u3.sfdir3.list[0].filetype = ones: mount failed (32). +u3.sfdir3.list[0].filetype = firstbit: mount failed (32). +u3.sfdir3.list[0].filetype = middlebit: mount failed (32). +u3.sfdir3.list[0].filetype = lastbit: mount failed (32). +u3.sfdir3.list[0].filetype = add: mount failed (32). +u3.sfdir3.list[0].filetype = sub: mount failed (32). +u3.sfdir3.list[1].namelen = zeroes: mount failed (32). +u3.sfdir3.list[1].namelen = ones: mount failed (32). +u3.sfdir3.list[1].namelen = firstbit: mount failed (32). +u3.sfdir3.list[1].namelen = middlebit: mount failed (32). +u3.sfdir3.list[1].namelen = lastbit: mount failed (32). +u3.sfdir3.list[1].namelen = add: mount failed (32). +u3.sfdir3.list[1].namelen = sub: mount failed (32). +u3.sfdir3.list[1].offset = zeroes: mount failed (32). +u3.sfdir3.list[1].offset = ones: mount failed (32). +u3.sfdir3.list[1].offset = firstbit: mount failed (32). +u3.sfdir3.list[1].offset = middlebit: online scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: online scrub didn't fail. +u3.sfdir3.list[1].offset = add: online scrub didn't fail. +u3.sfdir3.list[1].offset = sub: mount failed (32). +u3.sfdir3.list[1].name = zeroes: online repair failed (4). +u3.sfdir3.list[1].name = zeroes: online re-scrub failed (4). +u3.sfdir3.list[1].name = zeroes: offline re-scrub failed (1). +u3.sfdir3.list[1].name = zeroes: pre-mod mount failed (32). +u3.sfdir3.list[1].name = ones: online repair failed (4). +u3.sfdir3.list[1].name = ones: online re-scrub failed (4). +u3.sfdir3.list[1].name = ones: offline re-scrub failed (1). +u3.sfdir3.list[1].name = ones: pre-mod mount failed (32). +u3.sfdir3.list[1].name = firstbit: online repair failed (4). +u3.sfdir3.list[1].name = firstbit: online re-scrub failed (4). +u3.sfdir3.list[1].name = firstbit: offline re-scrub failed (1). +u3.sfdir3.list[1].name = firstbit: pre-mod mount failed (32). +u3.sfdir3.list[1].name = lastbit: online repair failed (4). +u3.sfdir3.list[1].name = lastbit: online re-scrub failed (4). +u3.sfdir3.list[1].name = lastbit: offline re-scrub failed (1). +u3.sfdir3.list[1].name = lastbit: pre-mod mount failed (32). +u3.sfdir3.list[1].name = add: online repair failed (4). +u3.sfdir3.list[1].name = add: online re-scrub failed (4). +u3.sfdir3.list[1].name = add: offline re-scrub failed (1). +u3.sfdir3.list[1].name = add: pre-mod mount failed (32). +u3.sfdir3.list[1].name = sub: online repair failed (4). +u3.sfdir3.list[1].name = sub: online re-scrub failed (4). +u3.sfdir3.list[1].name = sub: offline re-scrub failed (1). +u3.sfdir3.list[1].name = sub: pre-mod mount failed (32). +u3.sfdir3.list[1].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[1].filetype = zeroes: mount failed (32). +u3.sfdir3.list[1].filetype = ones: mount failed (32). +u3.sfdir3.list[1].filetype = firstbit: mount failed (32). +u3.sfdir3.list[1].filetype = middlebit: mount failed (32). +u3.sfdir3.list[1].filetype = lastbit: mount failed (32). +u3.sfdir3.list[1].filetype = add: mount failed (32). +u3.sfdir3.list[1].filetype = sub: mount failed (32). Done fuzzing metadir root diff --git a/tests/xfs/1547.out b/tests/xfs/1547.out index 983cc01343..662d04321f 100644 --- a/tests/xfs/1547.out +++ b/tests/xfs/1547.out @@ -1,4 +1,36 @@ QA output created by 1547 Format and populate Fuzz metadir root +core.forkoff = middlebit: offline scrub didn't fail. +core.rtinherit = ones: offline scrub didn't fail. +core.rtinherit = firstbit: offline scrub didn't fail. +core.rtinherit = middlebit: offline scrub didn't fail. +core.rtinherit = lastbit: offline scrub didn't fail. +core.rtinherit = add: offline scrub didn't fail. +core.rtinherit = sub: offline scrub didn't fail. +core.projinherit = ones: offline scrub didn't fail. +core.projinherit = firstbit: offline scrub didn't fail. +core.projinherit = middlebit: offline scrub didn't fail. +core.projinherit = lastbit: offline scrub didn't fail. +core.projinherit = add: offline scrub didn't fail. +core.projinherit = sub: offline scrub didn't fail. +v3.change_count = zeroes: offline scrub didn't fail. +v3.change_count = ones: offline scrub didn't fail. +v3.change_count = firstbit: offline scrub didn't fail. +v3.change_count = middlebit: offline scrub didn't fail. +v3.change_count = lastbit: offline scrub didn't fail. +v3.change_count = add: offline scrub didn't fail. +v3.change_count = sub: offline scrub didn't fail. +v3.nrext64 = zeroes: offline scrub didn't fail. +v3.nrext64 = firstbit: offline scrub didn't fail. +v3.nrext64 = middlebit: offline scrub didn't fail. +v3.nrext64 = lastbit: offline scrub didn't fail. +v3.nrext64 = add: offline scrub didn't fail. +v3.nrext64 = sub: offline scrub didn't fail. +u3.sfdir3.hdr.parent.i4 = middlebit: offline scrub didn't fail. +u3.sfdir3.hdr.parent.i4 = lastbit: offline scrub didn't fail. +u3.sfdir3.hdr.parent.i4 = add: offline scrub didn't fail. +u3.sfdir3.list[1].offset = middlebit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = add: offline scrub didn't fail. Done fuzzing metadir root diff --git a/tests/xfs/1548.out b/tests/xfs/1548.out index 9e395bb059..48ee6c02fb 100644 --- a/tests/xfs/1548.out +++ b/tests/xfs/1548.out @@ -1,4 +1,318 @@ QA output created by 1548 Format and populate Fuzz metadir root +core.magic = zeroes: mount failed (32). +core.magic = ones: mount failed (32). +core.magic = firstbit: mount failed (32). +core.magic = middlebit: mount failed (32). +core.magic = lastbit: mount failed (32). +core.magic = add: mount failed (32). +core.magic = sub: mount failed (32). +core.mode = zeroes: mount failed (32). +core.mode = ones: mount failed (32). +core.mode = firstbit: mount failed (32). +core.mode = middlebit: mount failed (32). +core.mode = lastbit: mount failed (32). +core.mode = add: mount failed (32). +core.mode = sub: mount failed (32). +core.version = zeroes: mount failed (32). +core.version = ones: mount failed (32). +core.version = firstbit: mount failed (32). +core.version = middlebit: mount failed (32). +core.version = lastbit: mount failed (32). +core.version = add: mount failed (32). +core.version = sub: mount failed (32). +core.format = zeroes: mount failed (32). +core.format = ones: mount failed (32). +core.format = firstbit: mount failed (32). +core.format = middlebit: mount failed (32). +core.format = lastbit: mount failed (32). +core.format = add: mount failed (32). +core.format = sub: mount failed (32). +core.onlink = ones: mount failed (32). +core.onlink = firstbit: mount failed (32). +core.onlink = middlebit: mount failed (32). +core.onlink = lastbit: mount failed (32). +core.onlink = add: mount failed (32). +core.onlink = sub: mount failed (32). +core.uid = ones: mount failed (32). +core.uid = firstbit: mount failed (32). +core.uid = middlebit: mount failed (32). +core.uid = lastbit: mount failed (32). +core.uid = add: mount failed (32). +core.uid = sub: mount failed (32). +core.gid = ones: mount failed (32). +core.gid = firstbit: mount failed (32). +core.gid = middlebit: mount failed (32). +core.gid = lastbit: mount failed (32). +core.gid = add: mount failed (32). +core.gid = sub: mount failed (32). +core.nlinkv2 = zeroes: mount failed (32). +core.projid_lo = ones: mount failed (32). +core.projid_lo = firstbit: mount failed (32). +core.projid_lo = middlebit: mount failed (32). +core.projid_lo = lastbit: mount failed (32). +core.projid_lo = add: mount failed (32). +core.projid_lo = sub: mount failed (32). +core.projid_hi = ones: mount failed (32). +core.projid_hi = firstbit: mount failed (32). +core.projid_hi = middlebit: mount failed (32). +core.projid_hi = lastbit: mount failed (32). +core.projid_hi = add: mount failed (32). +core.projid_hi = sub: mount failed (32). +core.nextents = ones: mount failed (32). +core.nextents = firstbit: mount failed (32). +core.nextents = middlebit: mount failed (32). +core.nextents = lastbit: mount failed (32). +core.nextents = add: mount failed (32). +core.nextents = sub: mount failed (32). +core.size = zeroes: mount failed (32). +core.size = ones: mount failed (32). +core.size = firstbit: mount failed (32). +core.size = middlebit: mount failed (32). +core.size = lastbit: mount failed (32). +core.size = add: mount failed (32). +core.size = sub: mount failed (32). +core.extsize = ones: mount failed (32). +core.extsize = firstbit: mount failed (32). +core.extsize = middlebit: mount failed (32). +core.extsize = lastbit: mount failed (32). +core.extsize = add: mount failed (32). +core.extsize = sub: mount failed (32). +core.naextents = ones: mount failed (32). +core.naextents = firstbit: mount failed (32). +core.naextents = middlebit: mount failed (32). +core.naextents = lastbit: mount failed (32). +core.naextents = add: mount failed (32). +core.naextents = sub: mount failed (32). +core.forkoff = ones: mount failed (32). +core.forkoff = firstbit: mount failed (32). +core.forkoff = middlebit: offline scrub didn't fail. +core.forkoff = middlebit: online scrub didn't fail. +core.forkoff = lastbit: mount failed (32). +core.forkoff = add: mount failed (32). +core.forkoff = sub: mount failed (32). +core.aformat = zeroes: online scrub didn't fail. +core.aformat = ones: mount failed (32). +core.aformat = firstbit: mount failed (32). +core.aformat = middlebit: mount failed (32). +core.aformat = lastbit: mount failed (32). +core.aformat = add: mount failed (32). +core.aformat = sub: mount failed (32). +core.realtime = ones: mount failed (32). +core.realtime = firstbit: mount failed (32). +core.realtime = middlebit: mount failed (32). +core.realtime = lastbit: mount failed (32). +core.realtime = add: mount failed (32). +core.realtime = sub: mount failed (32). +core.rtinherit = ones: offline scrub didn't fail. +core.rtinherit = ones: online scrub didn't fail. +core.rtinherit = firstbit: offline scrub didn't fail. +core.rtinherit = firstbit: online scrub didn't fail. +core.rtinherit = middlebit: offline scrub didn't fail. +core.rtinherit = middlebit: online scrub didn't fail. +core.rtinherit = lastbit: offline scrub didn't fail. +core.rtinherit = lastbit: online scrub didn't fail. +core.rtinherit = add: offline scrub didn't fail. +core.rtinherit = add: online scrub didn't fail. +core.rtinherit = sub: offline scrub didn't fail. +core.rtinherit = sub: online scrub didn't fail. +core.projinherit = ones: offline scrub didn't fail. +core.projinherit = ones: online scrub didn't fail. +core.projinherit = firstbit: offline scrub didn't fail. +core.projinherit = firstbit: online scrub didn't fail. +core.projinherit = middlebit: offline scrub didn't fail. +core.projinherit = middlebit: online scrub didn't fail. +core.projinherit = lastbit: offline scrub didn't fail. +core.projinherit = lastbit: online scrub didn't fail. +core.projinherit = add: offline scrub didn't fail. +core.projinherit = add: online scrub didn't fail. +core.projinherit = sub: offline scrub didn't fail. +core.projinherit = sub: online scrub didn't fail. +core.nosymlinks = zeroes: mount failed (32). +core.nosymlinks = firstbit: mount failed (32). +core.nosymlinks = middlebit: mount failed (32). +core.nosymlinks = lastbit: mount failed (32). +core.nosymlinks = add: mount failed (32). +core.nosymlinks = sub: mount failed (32). +core.extsz = ones: mount failed (32). +core.extsz = firstbit: mount failed (32). +core.extsz = middlebit: mount failed (32). +core.extsz = lastbit: mount failed (32). +core.extsz = add: mount failed (32). +core.extsz = sub: mount failed (32). +core.extszinherit = ones: mount failed (32). +core.extszinherit = firstbit: mount failed (32). +core.extszinherit = middlebit: mount failed (32). +core.extszinherit = lastbit: mount failed (32). +core.extszinherit = add: mount failed (32). +core.extszinherit = sub: mount failed (32). +next_unlinked = zeroes: mount failed (32). +next_unlinked = firstbit: mount failed (32). +next_unlinked = middlebit: mount failed (32). +next_unlinked = lastbit: mount failed (32). +next_unlinked = add: online scrub didn't fail. +next_unlinked = sub: mount failed (32). +v3.crc = zeroes: mount failed (32). +v3.crc = ones: mount failed (32). +v3.crc = firstbit: mount failed (32). +v3.crc = middlebit: mount failed (32). +v3.crc = lastbit: mount failed (32). +v3.crc = add: mount failed (32). +v3.crc = sub: mount failed (32). +v3.change_count = zeroes: offline scrub didn't fail. +v3.change_count = zeroes: online scrub didn't fail. +v3.change_count = ones: offline scrub didn't fail. +v3.change_count = ones: online scrub didn't fail. +v3.change_count = firstbit: offline scrub didn't fail. +v3.change_count = firstbit: online scrub didn't fail. +v3.change_count = middlebit: offline scrub didn't fail. +v3.change_count = middlebit: online scrub didn't fail. +v3.change_count = lastbit: offline scrub didn't fail. +v3.change_count = lastbit: online scrub didn't fail. +v3.change_count = add: offline scrub didn't fail. +v3.change_count = add: online scrub didn't fail. +v3.change_count = sub: offline scrub didn't fail. +v3.change_count = sub: online scrub didn't fail. +v3.flags2 = zeroes: mount failed (32). +v3.flags2 = ones: mount failed (32). +v3.flags2 = firstbit: mount failed (32). +v3.flags2 = middlebit: online scrub didn't fail. +v3.flags2 = lastbit: mount failed (32). +v3.flags2 = add: mount failed (32). +v3.flags2 = sub: mount failed (32). +v3.cowextsize = ones: mount failed (32). +v3.cowextsize = firstbit: mount failed (32). +v3.cowextsize = middlebit: mount failed (32). +v3.cowextsize = lastbit: mount failed (32). +v3.cowextsize = add: mount failed (32). +v3.cowextsize = sub: mount failed (32). +v3.inumber = zeroes: mount failed (32). +v3.inumber = ones: mount failed (32). +v3.inumber = firstbit: mount failed (32). +v3.inumber = middlebit: mount failed (32). +v3.inumber = lastbit: mount failed (32). +v3.inumber = add: mount failed (32). +v3.inumber = sub: mount failed (32). +v3.uuid = zeroes: mount failed (32). +v3.uuid = ones: mount failed (32). +v3.uuid = firstbit: mount failed (32). +v3.uuid = middlebit: mount failed (32). +v3.uuid = lastbit: mount failed (32). +v3.reflink = ones: mount failed (32). +v3.reflink = firstbit: mount failed (32). +v3.reflink = middlebit: mount failed (32). +v3.reflink = lastbit: mount failed (32). +v3.reflink = add: mount failed (32). +v3.reflink = sub: mount failed (32). +v3.cowextsz = ones: mount failed (32). +v3.cowextsz = firstbit: mount failed (32). +v3.cowextsz = middlebit: mount failed (32). +v3.cowextsz = lastbit: mount failed (32). +v3.cowextsz = add: mount failed (32). +v3.cowextsz = sub: mount failed (32). +v3.nrext64 = zeroes: offline scrub didn't fail. +v3.nrext64 = zeroes: online scrub didn't fail. +v3.nrext64 = firstbit: offline scrub didn't fail. +v3.nrext64 = firstbit: online scrub didn't fail. +v3.nrext64 = middlebit: offline scrub didn't fail. +v3.nrext64 = middlebit: online scrub didn't fail. +v3.nrext64 = lastbit: offline scrub didn't fail. +v3.nrext64 = lastbit: online scrub didn't fail. +v3.nrext64 = add: offline scrub didn't fail. +v3.nrext64 = add: online scrub didn't fail. +v3.nrext64 = sub: offline scrub didn't fail. +v3.nrext64 = sub: online scrub didn't fail. +v3.metadir = zeroes: mount failed (32). +v3.metadir = firstbit: mount failed (32). +v3.metadir = middlebit: mount failed (32). +v3.metadir = lastbit: mount failed (32). +v3.metadir = add: mount failed (32). +v3.metadir = sub: mount failed (32). +u3.sfdir3.hdr.count = zeroes: mount failed (32). +u3.sfdir3.hdr.count = ones: mount failed (32). +u3.sfdir3.hdr.count = firstbit: mount failed (32). +u3.sfdir3.hdr.count = middlebit: mount failed (32). +u3.sfdir3.hdr.count = lastbit: mount failed (32). +u3.sfdir3.hdr.count = add: mount failed (32). +u3.sfdir3.hdr.count = sub: mount failed (32). +u3.sfdir3.hdr.i8count = ones: mount failed (32). +u3.sfdir3.hdr.i8count = firstbit: mount failed (32). +u3.sfdir3.hdr.i8count = middlebit: mount failed (32). +u3.sfdir3.hdr.i8count = lastbit: mount failed (32). +u3.sfdir3.hdr.i8count = add: mount failed (32). +u3.sfdir3.hdr.i8count = sub: mount failed (32). +u3.sfdir3.hdr.parent.i4 = zeroes: mount failed (32). +u3.sfdir3.hdr.parent.i4 = ones: mount failed (32). +u3.sfdir3.hdr.parent.i4 = firstbit: mount failed (32). +u3.sfdir3.hdr.parent.i4 = middlebit: offline scrub didn't fail. +u3.sfdir3.hdr.parent.i4 = lastbit: offline scrub didn't fail. +u3.sfdir3.hdr.parent.i4 = add: offline scrub didn't fail. +u3.sfdir3.hdr.parent.i4 = sub: mount failed (32). +u3.sfdir3.list[0].namelen = zeroes: mount failed (32). +u3.sfdir3.list[0].namelen = ones: mount failed (32). +u3.sfdir3.list[0].namelen = firstbit: mount failed (32). +u3.sfdir3.list[0].namelen = middlebit: mount failed (32). +u3.sfdir3.list[0].namelen = lastbit: mount failed (32). +u3.sfdir3.list[0].namelen = add: mount failed (32). +u3.sfdir3.list[0].namelen = sub: mount failed (32). +u3.sfdir3.list[0].offset = zeroes: mount failed (32). +u3.sfdir3.list[0].offset = ones: mount failed (32). +u3.sfdir3.list[0].offset = firstbit: mount failed (32). +u3.sfdir3.list[0].offset = middlebit: mount failed (32). +u3.sfdir3.list[0].offset = lastbit: mount failed (32). +u3.sfdir3.list[0].offset = add: mount failed (32). +u3.sfdir3.list[0].offset = sub: mount failed (32). +u3.sfdir3.list[0].name = zeroes: mount failed (32). +u3.sfdir3.list[0].name = ones: mount failed (32). +u3.sfdir3.list[0].name = firstbit: mount failed (32). +u3.sfdir3.list[0].name = middlebit: mount failed (32). +u3.sfdir3.list[0].name = lastbit: mount failed (32). +u3.sfdir3.list[0].name = add: mount failed (32). +u3.sfdir3.list[0].name = sub: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[0].filetype = zeroes: mount failed (32). +u3.sfdir3.list[0].filetype = ones: mount failed (32). +u3.sfdir3.list[0].filetype = firstbit: mount failed (32). +u3.sfdir3.list[0].filetype = middlebit: mount failed (32). +u3.sfdir3.list[0].filetype = lastbit: mount failed (32). +u3.sfdir3.list[0].filetype = add: mount failed (32). +u3.sfdir3.list[0].filetype = sub: mount failed (32). +u3.sfdir3.list[1].namelen = zeroes: mount failed (32). +u3.sfdir3.list[1].namelen = ones: mount failed (32). +u3.sfdir3.list[1].namelen = firstbit: mount failed (32). +u3.sfdir3.list[1].namelen = middlebit: mount failed (32). +u3.sfdir3.list[1].namelen = lastbit: mount failed (32). +u3.sfdir3.list[1].namelen = add: mount failed (32). +u3.sfdir3.list[1].namelen = sub: mount failed (32). +u3.sfdir3.list[1].offset = zeroes: mount failed (32). +u3.sfdir3.list[1].offset = ones: mount failed (32). +u3.sfdir3.list[1].offset = firstbit: mount failed (32). +u3.sfdir3.list[1].offset = middlebit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = middlebit: online scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: online scrub didn't fail. +u3.sfdir3.list[1].offset = add: offline scrub didn't fail. +u3.sfdir3.list[1].offset = add: online scrub didn't fail. +u3.sfdir3.list[1].offset = sub: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[1].filetype = zeroes: mount failed (32). +u3.sfdir3.list[1].filetype = ones: mount failed (32). +u3.sfdir3.list[1].filetype = firstbit: mount failed (32). +u3.sfdir3.list[1].filetype = middlebit: mount failed (32). +u3.sfdir3.list[1].filetype = lastbit: mount failed (32). +u3.sfdir3.list[1].filetype = add: mount failed (32). +u3.sfdir3.list[1].filetype = sub: mount failed (32). Done fuzzing metadir root diff --git a/tests/xfs/1549.out b/tests/xfs/1549.out index 22b3d215e3..c35f47c31a 100644 --- a/tests/xfs/1549.out +++ b/tests/xfs/1549.out @@ -1,4 +1,330 @@ QA output created by 1549 Format and populate Fuzz metadir root +core.magic = zeroes: mount failed (32). +core.magic = ones: mount failed (32). +core.magic = firstbit: mount failed (32). +core.magic = middlebit: mount failed (32). +core.magic = lastbit: mount failed (32). +core.magic = add: mount failed (32). +core.magic = sub: mount failed (32). +core.mode = zeroes: mount failed (32). +core.mode = ones: mount failed (32). +core.mode = firstbit: mount failed (32). +core.mode = middlebit: mount failed (32). +core.mode = lastbit: mount failed (32). +core.mode = add: mount failed (32). +core.mode = sub: mount failed (32). +core.version = zeroes: mount failed (32). +core.version = ones: mount failed (32). +core.version = firstbit: mount failed (32). +core.version = middlebit: mount failed (32). +core.version = lastbit: mount failed (32). +core.version = add: mount failed (32). +core.version = sub: mount failed (32). +core.format = zeroes: mount failed (32). +core.format = ones: mount failed (32). +core.format = firstbit: mount failed (32). +core.format = middlebit: mount failed (32). +core.format = lastbit: mount failed (32). +core.format = add: mount failed (32). +core.format = sub: mount failed (32). +core.onlink = ones: mount failed (32). +core.onlink = firstbit: mount failed (32). +core.onlink = middlebit: mount failed (32). +core.onlink = lastbit: mount failed (32). +core.onlink = add: mount failed (32). +core.onlink = sub: mount failed (32). +core.uid = ones: mount failed (32). +core.uid = firstbit: mount failed (32). +core.uid = middlebit: mount failed (32). +core.uid = lastbit: mount failed (32). +core.uid = add: mount failed (32). +core.uid = sub: mount failed (32). +core.gid = ones: mount failed (32). +core.gid = firstbit: mount failed (32). +core.gid = middlebit: mount failed (32). +core.gid = lastbit: mount failed (32). +core.gid = add: mount failed (32). +core.gid = sub: mount failed (32). +core.nlinkv2 = zeroes: mount failed (32). +core.projid_lo = ones: mount failed (32). +core.projid_lo = firstbit: mount failed (32). +core.projid_lo = middlebit: mount failed (32). +core.projid_lo = lastbit: mount failed (32). +core.projid_lo = add: mount failed (32). +core.projid_lo = sub: mount failed (32). +core.projid_hi = ones: mount failed (32). +core.projid_hi = firstbit: mount failed (32). +core.projid_hi = middlebit: mount failed (32). +core.projid_hi = lastbit: mount failed (32). +core.projid_hi = add: mount failed (32). +core.projid_hi = sub: mount failed (32). +core.nextents = ones: mount failed (32). +core.nextents = firstbit: mount failed (32). +core.nextents = middlebit: mount failed (32). +core.nextents = lastbit: mount failed (32). +core.nextents = add: mount failed (32). +core.nextents = sub: mount failed (32). +core.size = zeroes: mount failed (32). +core.size = ones: mount failed (32). +core.size = firstbit: mount failed (32). +core.size = middlebit: mount failed (32). +core.size = lastbit: mount failed (32). +core.size = add: mount failed (32). +core.size = sub: mount failed (32). +core.extsize = ones: mount failed (32). +core.extsize = firstbit: mount failed (32). +core.extsize = middlebit: mount failed (32). +core.extsize = lastbit: mount failed (32). +core.extsize = add: mount failed (32). +core.extsize = sub: mount failed (32). +core.naextents = ones: mount failed (32). +core.naextents = firstbit: mount failed (32). +core.naextents = middlebit: mount failed (32). +core.naextents = lastbit: mount failed (32). +core.naextents = add: mount failed (32). +core.naextents = sub: mount failed (32). +core.forkoff = ones: mount failed (32). +core.forkoff = firstbit: mount failed (32). +core.forkoff = middlebit: offline scrub didn't fail. +core.forkoff = middlebit: online scrub didn't fail. +core.forkoff = lastbit: mount failed (32). +core.forkoff = add: mount failed (32). +core.forkoff = sub: mount failed (32). +core.aformat = zeroes: online scrub didn't fail. +core.aformat = zeroes: offline re-scrub failed (1). +core.aformat = zeroes: offline post-mod scrub failed (1). +core.aformat = ones: mount failed (32). +core.aformat = firstbit: mount failed (32). +core.aformat = middlebit: mount failed (32). +core.aformat = lastbit: mount failed (32). +core.aformat = add: mount failed (32). +core.aformat = sub: mount failed (32). +core.realtime = ones: mount failed (32). +core.realtime = firstbit: mount failed (32). +core.realtime = middlebit: mount failed (32). +core.realtime = lastbit: mount failed (32). +core.realtime = add: mount failed (32). +core.realtime = sub: mount failed (32). +core.rtinherit = ones: offline scrub didn't fail. +core.rtinherit = ones: online scrub didn't fail. +core.rtinherit = firstbit: offline scrub didn't fail. +core.rtinherit = firstbit: online scrub didn't fail. +core.rtinherit = middlebit: offline scrub didn't fail. +core.rtinherit = middlebit: online scrub didn't fail. +core.rtinherit = lastbit: offline scrub didn't fail. +core.rtinherit = lastbit: online scrub didn't fail. +core.rtinherit = add: offline scrub didn't fail. +core.rtinherit = add: online scrub didn't fail. +core.rtinherit = sub: offline scrub didn't fail. +core.rtinherit = sub: online scrub didn't fail. +core.projinherit = ones: offline scrub didn't fail. +core.projinherit = ones: online scrub didn't fail. +core.projinherit = firstbit: offline scrub didn't fail. +core.projinherit = firstbit: online scrub didn't fail. +core.projinherit = middlebit: offline scrub didn't fail. +core.projinherit = middlebit: online scrub didn't fail. +core.projinherit = lastbit: offline scrub didn't fail. +core.projinherit = lastbit: online scrub didn't fail. +core.projinherit = add: offline scrub didn't fail. +core.projinherit = add: online scrub didn't fail. +core.projinherit = sub: offline scrub didn't fail. +core.projinherit = sub: online scrub didn't fail. +core.nosymlinks = zeroes: mount failed (32). +core.nosymlinks = firstbit: mount failed (32). +core.nosymlinks = middlebit: mount failed (32). +core.nosymlinks = lastbit: mount failed (32). +core.nosymlinks = add: mount failed (32). +core.nosymlinks = sub: mount failed (32). +core.extsz = ones: mount failed (32). +core.extsz = firstbit: mount failed (32). +core.extsz = middlebit: mount failed (32). +core.extsz = lastbit: mount failed (32). +core.extsz = add: mount failed (32). +core.extsz = sub: mount failed (32). +core.extszinherit = ones: mount failed (32). +core.extszinherit = firstbit: mount failed (32). +core.extszinherit = middlebit: mount failed (32). +core.extszinherit = lastbit: mount failed (32). +core.extszinherit = add: mount failed (32). +core.extszinherit = sub: mount failed (32). +next_unlinked = zeroes: mount failed (32). +next_unlinked = firstbit: mount failed (32). +next_unlinked = middlebit: mount failed (32). +next_unlinked = lastbit: mount failed (32). +next_unlinked = add: online scrub didn't fail. +next_unlinked = add: offline re-scrub failed (1). +next_unlinked = add: offline post-mod scrub failed (1). +next_unlinked = sub: mount failed (32). +v3.crc = zeroes: mount failed (32). +v3.crc = ones: mount failed (32). +v3.crc = firstbit: mount failed (32). +v3.crc = middlebit: mount failed (32). +v3.crc = lastbit: mount failed (32). +v3.crc = add: mount failed (32). +v3.crc = sub: mount failed (32). +v3.change_count = zeroes: offline scrub didn't fail. +v3.change_count = zeroes: online scrub didn't fail. +v3.change_count = ones: offline scrub didn't fail. +v3.change_count = ones: online scrub didn't fail. +v3.change_count = firstbit: offline scrub didn't fail. +v3.change_count = firstbit: online scrub didn't fail. +v3.change_count = middlebit: offline scrub didn't fail. +v3.change_count = middlebit: online scrub didn't fail. +v3.change_count = lastbit: offline scrub didn't fail. +v3.change_count = lastbit: online scrub didn't fail. +v3.change_count = add: offline scrub didn't fail. +v3.change_count = add: online scrub didn't fail. +v3.change_count = sub: offline scrub didn't fail. +v3.change_count = sub: online scrub didn't fail. +v3.flags2 = zeroes: mount failed (32). +v3.flags2 = ones: mount failed (32). +v3.flags2 = firstbit: mount failed (32). +v3.flags2 = middlebit: online scrub didn't fail. +v3.flags2 = middlebit: offline re-scrub failed (1). +v3.flags2 = middlebit: offline post-mod scrub failed (1). +v3.flags2 = lastbit: mount failed (32). +v3.flags2 = add: mount failed (32). +v3.flags2 = sub: mount failed (32). +v3.cowextsize = ones: mount failed (32). +v3.cowextsize = firstbit: mount failed (32). +v3.cowextsize = middlebit: mount failed (32). +v3.cowextsize = lastbit: mount failed (32). +v3.cowextsize = add: mount failed (32). +v3.cowextsize = sub: mount failed (32). +v3.inumber = zeroes: mount failed (32). +v3.inumber = ones: mount failed (32). +v3.inumber = firstbit: mount failed (32). +v3.inumber = middlebit: mount failed (32). +v3.inumber = lastbit: mount failed (32). +v3.inumber = add: mount failed (32). +v3.inumber = sub: mount failed (32). +v3.uuid = zeroes: mount failed (32). +v3.uuid = ones: mount failed (32). +v3.uuid = firstbit: mount failed (32). +v3.uuid = middlebit: mount failed (32). +v3.uuid = lastbit: mount failed (32). +v3.reflink = ones: mount failed (32). +v3.reflink = firstbit: mount failed (32). +v3.reflink = middlebit: mount failed (32). +v3.reflink = lastbit: mount failed (32). +v3.reflink = add: mount failed (32). +v3.reflink = sub: mount failed (32). +v3.cowextsz = ones: mount failed (32). +v3.cowextsz = firstbit: mount failed (32). +v3.cowextsz = middlebit: mount failed (32). +v3.cowextsz = lastbit: mount failed (32). +v3.cowextsz = add: mount failed (32). +v3.cowextsz = sub: mount failed (32). +v3.nrext64 = zeroes: offline scrub didn't fail. +v3.nrext64 = zeroes: online scrub didn't fail. +v3.nrext64 = firstbit: offline scrub didn't fail. +v3.nrext64 = firstbit: online scrub didn't fail. +v3.nrext64 = middlebit: offline scrub didn't fail. +v3.nrext64 = middlebit: online scrub didn't fail. +v3.nrext64 = lastbit: offline scrub didn't fail. +v3.nrext64 = lastbit: online scrub didn't fail. +v3.nrext64 = add: offline scrub didn't fail. +v3.nrext64 = add: online scrub didn't fail. +v3.nrext64 = sub: offline scrub didn't fail. +v3.nrext64 = sub: online scrub didn't fail. +v3.metadir = zeroes: mount failed (32). +v3.metadir = firstbit: mount failed (32). +v3.metadir = middlebit: mount failed (32). +v3.metadir = lastbit: mount failed (32). +v3.metadir = add: mount failed (32). +v3.metadir = sub: mount failed (32). +u3.sfdir3.hdr.count = zeroes: mount failed (32). +u3.sfdir3.hdr.count = ones: mount failed (32). +u3.sfdir3.hdr.count = firstbit: mount failed (32). +u3.sfdir3.hdr.count = middlebit: mount failed (32). +u3.sfdir3.hdr.count = lastbit: mount failed (32). +u3.sfdir3.hdr.count = add: mount failed (32). +u3.sfdir3.hdr.count = sub: mount failed (32). +u3.sfdir3.hdr.i8count = ones: mount failed (32). +u3.sfdir3.hdr.i8count = firstbit: mount failed (32). +u3.sfdir3.hdr.i8count = middlebit: mount failed (32). +u3.sfdir3.hdr.i8count = lastbit: mount failed (32). +u3.sfdir3.hdr.i8count = add: mount failed (32). +u3.sfdir3.hdr.i8count = sub: mount failed (32). +u3.sfdir3.hdr.parent.i4 = zeroes: mount failed (32). +u3.sfdir3.hdr.parent.i4 = ones: mount failed (32). +u3.sfdir3.hdr.parent.i4 = firstbit: mount failed (32). +u3.sfdir3.hdr.parent.i4 = middlebit: offline scrub didn't fail. +u3.sfdir3.hdr.parent.i4 = lastbit: offline scrub didn't fail. +u3.sfdir3.hdr.parent.i4 = add: offline scrub didn't fail. +u3.sfdir3.hdr.parent.i4 = sub: mount failed (32). +u3.sfdir3.list[0].namelen = zeroes: mount failed (32). +u3.sfdir3.list[0].namelen = ones: mount failed (32). +u3.sfdir3.list[0].namelen = firstbit: mount failed (32). +u3.sfdir3.list[0].namelen = middlebit: mount failed (32). +u3.sfdir3.list[0].namelen = lastbit: mount failed (32). +u3.sfdir3.list[0].namelen = add: mount failed (32). +u3.sfdir3.list[0].namelen = sub: mount failed (32). +u3.sfdir3.list[0].offset = zeroes: mount failed (32). +u3.sfdir3.list[0].offset = ones: mount failed (32). +u3.sfdir3.list[0].offset = firstbit: mount failed (32). +u3.sfdir3.list[0].offset = middlebit: mount failed (32). +u3.sfdir3.list[0].offset = lastbit: mount failed (32). +u3.sfdir3.list[0].offset = add: mount failed (32). +u3.sfdir3.list[0].offset = sub: mount failed (32). +u3.sfdir3.list[0].name = zeroes: mount failed (32). +u3.sfdir3.list[0].name = ones: mount failed (32). +u3.sfdir3.list[0].name = firstbit: mount failed (32). +u3.sfdir3.list[0].name = middlebit: mount failed (32). +u3.sfdir3.list[0].name = lastbit: mount failed (32). +u3.sfdir3.list[0].name = add: mount failed (32). +u3.sfdir3.list[0].name = sub: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[0].filetype = zeroes: mount failed (32). +u3.sfdir3.list[0].filetype = ones: mount failed (32). +u3.sfdir3.list[0].filetype = firstbit: mount failed (32). +u3.sfdir3.list[0].filetype = middlebit: mount failed (32). +u3.sfdir3.list[0].filetype = lastbit: mount failed (32). +u3.sfdir3.list[0].filetype = add: mount failed (32). +u3.sfdir3.list[0].filetype = sub: mount failed (32). +u3.sfdir3.list[1].namelen = zeroes: mount failed (32). +u3.sfdir3.list[1].namelen = ones: mount failed (32). +u3.sfdir3.list[1].namelen = firstbit: mount failed (32). +u3.sfdir3.list[1].namelen = middlebit: mount failed (32). +u3.sfdir3.list[1].namelen = lastbit: mount failed (32). +u3.sfdir3.list[1].namelen = add: mount failed (32). +u3.sfdir3.list[1].namelen = sub: mount failed (32). +u3.sfdir3.list[1].offset = zeroes: mount failed (32). +u3.sfdir3.list[1].offset = ones: mount failed (32). +u3.sfdir3.list[1].offset = firstbit: mount failed (32). +u3.sfdir3.list[1].offset = middlebit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = middlebit: online scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: online scrub didn't fail. +u3.sfdir3.list[1].offset = add: offline scrub didn't fail. +u3.sfdir3.list[1].offset = add: online scrub didn't fail. +u3.sfdir3.list[1].offset = sub: mount failed (32). +u3.sfdir3.list[1].name = zeroes: online repair failed (4). +u3.sfdir3.list[1].name = firstbit: online repair failed (4). +u3.sfdir3.list[1].name = middlebit: online repair failed (4). +u3.sfdir3.list[1].name = lastbit: online repair failed (4). +u3.sfdir3.list[1].name = add: online repair failed (4). +u3.sfdir3.list[1].name = sub: online repair failed (4). +u3.sfdir3.list[1].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[1].filetype = zeroes: mount failed (32). +u3.sfdir3.list[1].filetype = ones: mount failed (32). +u3.sfdir3.list[1].filetype = firstbit: mount failed (32). +u3.sfdir3.list[1].filetype = middlebit: mount failed (32). +u3.sfdir3.list[1].filetype = lastbit: mount failed (32). +u3.sfdir3.list[1].filetype = add: mount failed (32). +u3.sfdir3.list[1].filetype = sub: mount failed (32). Done fuzzing metadir root diff --git a/tests/xfs/1550.out b/tests/xfs/1550.out index 7694cd670b..166e165538 100644 --- a/tests/xfs/1550.out +++ b/tests/xfs/1550.out @@ -1,4 +1,434 @@ QA output created by 1550 Format and populate Fuzz metadir subdir +core.magic = zeroes: mount failed (32). +core.magic = ones: mount failed (32). +core.magic = firstbit: mount failed (32). +core.magic = middlebit: mount failed (32). +core.magic = lastbit: mount failed (32). +core.magic = add: mount failed (32). +core.magic = sub: mount failed (32). +core.mode = zeroes: mount failed (32). +core.mode = ones: mount failed (32). +core.mode = firstbit: mount failed (32). +core.mode = middlebit: mount failed (32). +core.mode = lastbit: mount failed (32). +core.mode = add: mount failed (32). +core.mode = sub: mount failed (32). +core.version = zeroes: mount failed (32). +core.version = ones: mount failed (32). +core.version = firstbit: mount failed (32). +core.version = middlebit: mount failed (32). +core.version = lastbit: mount failed (32). +core.version = add: mount failed (32). +core.version = sub: mount failed (32). +core.format = zeroes: mount failed (32). +core.format = ones: mount failed (32). +core.format = firstbit: mount failed (32). +core.format = middlebit: mount failed (32). +core.format = lastbit: mount failed (32). +core.format = add: mount failed (32). +core.format = sub: mount failed (32). +core.onlink = ones: mount failed (32). +core.onlink = firstbit: mount failed (32). +core.onlink = middlebit: mount failed (32). +core.onlink = lastbit: mount failed (32). +core.onlink = add: mount failed (32). +core.onlink = sub: mount failed (32). +core.uid = ones: mount failed (32). +core.uid = firstbit: mount failed (32). +core.uid = middlebit: mount failed (32). +core.uid = lastbit: mount failed (32). +core.uid = add: mount failed (32). +core.uid = sub: mount failed (32). +core.gid = ones: mount failed (32). +core.gid = firstbit: mount failed (32). +core.gid = middlebit: mount failed (32). +core.gid = lastbit: mount failed (32). +core.gid = add: mount failed (32). +core.gid = sub: mount failed (32). +core.nlinkv2 = zeroes: mount failed (32). +core.projid_lo = ones: mount failed (32). +core.projid_lo = firstbit: mount failed (32). +core.projid_lo = middlebit: mount failed (32). +core.projid_lo = lastbit: mount failed (32). +core.projid_lo = add: mount failed (32). +core.projid_lo = sub: mount failed (32). +core.projid_hi = ones: mount failed (32). +core.projid_hi = firstbit: mount failed (32). +core.projid_hi = middlebit: mount failed (32). +core.projid_hi = lastbit: mount failed (32). +core.projid_hi = add: mount failed (32). +core.projid_hi = sub: mount failed (32). +core.nextents = ones: mount failed (32). +core.nextents = firstbit: mount failed (32). +core.nextents = middlebit: mount failed (32). +core.nextents = lastbit: mount failed (32). +core.nextents = add: mount failed (32). +core.nextents = sub: mount failed (32). +core.size = zeroes: mount failed (32). +core.size = ones: mount failed (32). +core.size = firstbit: mount failed (32). +core.size = middlebit: mount failed (32). +core.size = lastbit: mount failed (32). +core.size = add: mount failed (32). +core.size = sub: mount failed (32). +core.extsize = ones: mount failed (32). +core.extsize = firstbit: mount failed (32). +core.extsize = middlebit: mount failed (32). +core.extsize = lastbit: mount failed (32). +core.extsize = add: mount failed (32). +core.extsize = sub: mount failed (32). +core.naextents = ones: mount failed (32). +core.naextents = firstbit: mount failed (32). +core.naextents = middlebit: mount failed (32). +core.naextents = lastbit: mount failed (32). +core.naextents = add: mount failed (32). +core.naextents = sub: mount failed (32). +core.forkoff = zeroes: mount failed (32). +core.forkoff = ones: mount failed (32). +core.forkoff = firstbit: mount failed (32). +core.forkoff = middlebit: mount failed (32). +core.forkoff = lastbit: mount failed (32). +core.forkoff = add: mount failed (32). +core.forkoff = sub: mount failed (32). +core.aformat = zeroes: mount failed (32). +core.aformat = ones: mount failed (32). +core.aformat = firstbit: mount failed (32). +core.aformat = middlebit: mount failed (32). +core.aformat = lastbit: mount failed (32). +core.aformat = add: mount failed (32). +core.aformat = sub: mount failed (32). +core.realtime = ones: mount failed (32). +core.realtime = firstbit: mount failed (32). +core.realtime = middlebit: mount failed (32). +core.realtime = lastbit: mount failed (32). +core.realtime = add: mount failed (32). +core.realtime = sub: mount failed (32). +core.rtinherit = ones: online scrub didn't fail. +core.rtinherit = firstbit: online scrub didn't fail. +core.rtinherit = middlebit: online scrub didn't fail. +core.rtinherit = lastbit: online scrub didn't fail. +core.rtinherit = add: online scrub didn't fail. +core.rtinherit = sub: online scrub didn't fail. +core.projinherit = ones: online scrub didn't fail. +core.projinherit = firstbit: online scrub didn't fail. +core.projinherit = middlebit: online scrub didn't fail. +core.projinherit = lastbit: online scrub didn't fail. +core.projinherit = add: online scrub didn't fail. +core.projinherit = sub: online scrub didn't fail. +core.nosymlinks = zeroes: mount failed (32). +core.nosymlinks = firstbit: mount failed (32). +core.nosymlinks = middlebit: mount failed (32). +core.nosymlinks = lastbit: mount failed (32). +core.nosymlinks = add: mount failed (32). +core.nosymlinks = sub: mount failed (32). +core.extsz = ones: mount failed (32). +core.extsz = firstbit: mount failed (32). +core.extsz = middlebit: mount failed (32). +core.extsz = lastbit: mount failed (32). +core.extsz = add: mount failed (32). +core.extsz = sub: mount failed (32). +core.extszinherit = ones: mount failed (32). +core.extszinherit = firstbit: mount failed (32). +core.extszinherit = middlebit: mount failed (32). +core.extszinherit = lastbit: mount failed (32). +core.extszinherit = add: mount failed (32). +core.extszinherit = sub: mount failed (32). +next_unlinked = zeroes: mount failed (32). +next_unlinked = firstbit: mount failed (32). +next_unlinked = middlebit: mount failed (32). +next_unlinked = lastbit: mount failed (32). +next_unlinked = add: online scrub didn't fail. +next_unlinked = add: offline re-scrub failed (1). +next_unlinked = add: offline post-mod scrub failed (1). +next_unlinked = sub: mount failed (32). +v3.crc = zeroes: mount failed (32). +v3.crc = ones: mount failed (32). +v3.crc = firstbit: mount failed (32). +v3.crc = middlebit: mount failed (32). +v3.crc = lastbit: mount failed (32). +v3.crc = add: mount failed (32). +v3.crc = sub: mount failed (32). +v3.change_count = zeroes: online scrub didn't fail. +v3.change_count = ones: online scrub didn't fail. +v3.change_count = firstbit: online scrub didn't fail. +v3.change_count = middlebit: online scrub didn't fail. +v3.change_count = lastbit: online scrub didn't fail. +v3.change_count = add: online scrub didn't fail. +v3.change_count = sub: online scrub didn't fail. +v3.flags2 = zeroes: mount failed (32). +v3.flags2 = ones: mount failed (32). +v3.flags2 = firstbit: mount failed (32). +v3.flags2 = middlebit: online scrub didn't fail. +v3.flags2 = middlebit: offline re-scrub failed (1). +v3.flags2 = middlebit: offline post-mod scrub failed (1). +v3.flags2 = lastbit: mount failed (32). +v3.flags2 = add: mount failed (32). +v3.flags2 = sub: mount failed (32). +v3.cowextsize = ones: mount failed (32). +v3.cowextsize = firstbit: mount failed (32). +v3.cowextsize = middlebit: mount failed (32). +v3.cowextsize = lastbit: mount failed (32). +v3.cowextsize = add: mount failed (32). +v3.cowextsize = sub: mount failed (32). +v3.inumber = zeroes: mount failed (32). +v3.inumber = ones: mount failed (32). +v3.inumber = firstbit: mount failed (32). +v3.inumber = middlebit: mount failed (32). +v3.inumber = lastbit: mount failed (32). +v3.inumber = add: mount failed (32). +v3.inumber = sub: mount failed (32). +v3.uuid = zeroes: mount failed (32). +v3.uuid = ones: mount failed (32). +v3.uuid = firstbit: mount failed (32). +v3.uuid = middlebit: mount failed (32). +v3.uuid = lastbit: mount failed (32). +v3.reflink = ones: mount failed (32). +v3.reflink = firstbit: mount failed (32). +v3.reflink = middlebit: mount failed (32). +v3.reflink = lastbit: mount failed (32). +v3.reflink = add: mount failed (32). +v3.reflink = sub: mount failed (32). +v3.cowextsz = ones: mount failed (32). +v3.cowextsz = firstbit: mount failed (32). +v3.cowextsz = middlebit: mount failed (32). +v3.cowextsz = lastbit: mount failed (32). +v3.cowextsz = add: mount failed (32). +v3.cowextsz = sub: mount failed (32). +v3.nrext64 = zeroes: online scrub didn't fail. +v3.nrext64 = firstbit: online scrub didn't fail. +v3.nrext64 = middlebit: online scrub didn't fail. +v3.nrext64 = lastbit: online scrub didn't fail. +v3.nrext64 = add: online scrub didn't fail. +v3.nrext64 = sub: online scrub didn't fail. +v3.metadir = zeroes: mount failed (32). +v3.metadir = firstbit: mount failed (32). +v3.metadir = middlebit: mount failed (32). +v3.metadir = lastbit: mount failed (32). +v3.metadir = add: mount failed (32). +v3.metadir = sub: mount failed (32). +u3.sfdir3.hdr.count = zeroes: mount failed (32). +u3.sfdir3.hdr.count = ones: mount failed (32). +u3.sfdir3.hdr.count = firstbit: mount failed (32). +u3.sfdir3.hdr.count = middlebit: mount failed (32). +u3.sfdir3.hdr.count = lastbit: mount failed (32). +u3.sfdir3.hdr.count = add: mount failed (32). +u3.sfdir3.hdr.count = sub: mount failed (32). +u3.sfdir3.hdr.i8count = ones: mount failed (32). +u3.sfdir3.hdr.i8count = firstbit: mount failed (32). +u3.sfdir3.hdr.i8count = middlebit: mount failed (32). +u3.sfdir3.hdr.i8count = lastbit: mount failed (32). +u3.sfdir3.hdr.i8count = add: mount failed (32). +u3.sfdir3.hdr.i8count = sub: mount failed (32). +u3.sfdir3.hdr.parent.i4 = zeroes: mount failed (32). +u3.sfdir3.hdr.parent.i4 = ones: mount failed (32). +u3.sfdir3.hdr.parent.i4 = firstbit: mount failed (32). +u3.sfdir3.hdr.parent.i4 = sub: mount failed (32). +u3.sfdir3.list[0].namelen = zeroes: mount failed (32). +u3.sfdir3.list[0].namelen = ones: mount failed (32). +u3.sfdir3.list[0].namelen = firstbit: mount failed (32). +u3.sfdir3.list[0].namelen = middlebit: mount failed (32). +u3.sfdir3.list[0].namelen = lastbit: mount failed (32). +u3.sfdir3.list[0].namelen = add: mount failed (32). +u3.sfdir3.list[0].namelen = sub: mount failed (32). +u3.sfdir3.list[0].offset = zeroes: mount failed (32). +u3.sfdir3.list[0].offset = ones: mount failed (32). +u3.sfdir3.list[0].offset = firstbit: mount failed (32). +u3.sfdir3.list[0].offset = middlebit: mount failed (32). +u3.sfdir3.list[0].offset = lastbit: mount failed (32). +u3.sfdir3.list[0].offset = add: mount failed (32). +u3.sfdir3.list[0].offset = sub: mount failed (32). +u3.sfdir3.list[0].name = zeroes: mount failed (32). +u3.sfdir3.list[0].name = ones: mount failed (32). +u3.sfdir3.list[0].name = firstbit: mount failed (32). +u3.sfdir3.list[0].name = middlebit: mount failed (32). +u3.sfdir3.list[0].name = lastbit: mount failed (32). +u3.sfdir3.list[0].name = add: mount failed (32). +u3.sfdir3.list[0].name = sub: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[0].filetype = zeroes: mount failed (32). +u3.sfdir3.list[0].filetype = ones: mount failed (32). +u3.sfdir3.list[0].filetype = firstbit: mount failed (32). +u3.sfdir3.list[0].filetype = middlebit: mount failed (32). +u3.sfdir3.list[0].filetype = lastbit: mount failed (32). +u3.sfdir3.list[0].filetype = add: mount failed (32). +u3.sfdir3.list[0].filetype = sub: mount failed (32). +u3.sfdir3.list[1].namelen = zeroes: mount failed (32). +u3.sfdir3.list[1].namelen = ones: mount failed (32). +u3.sfdir3.list[1].namelen = firstbit: mount failed (32). +u3.sfdir3.list[1].namelen = middlebit: mount failed (32). +u3.sfdir3.list[1].namelen = lastbit: mount failed (32). +u3.sfdir3.list[1].namelen = add: mount failed (32). +u3.sfdir3.list[1].namelen = sub: mount failed (32). +u3.sfdir3.list[1].offset = zeroes: mount failed (32). +u3.sfdir3.list[1].offset = ones: mount failed (32). +u3.sfdir3.list[1].offset = firstbit: mount failed (32). +u3.sfdir3.list[1].offset = middlebit: online scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: online scrub didn't fail. +u3.sfdir3.list[1].offset = add: online scrub didn't fail. +u3.sfdir3.list[1].offset = sub: mount failed (32). +u3.sfdir3.list[1].name = zeroes: mount failed (32). +u3.sfdir3.list[1].name = ones: mount failed (32). +u3.sfdir3.list[1].name = firstbit: mount failed (32). +u3.sfdir3.list[1].name = middlebit: mount failed (32). +u3.sfdir3.list[1].name = lastbit: mount failed (32). +u3.sfdir3.list[1].name = add: mount failed (32). +u3.sfdir3.list[1].name = sub: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[1].filetype = zeroes: mount failed (32). +u3.sfdir3.list[1].filetype = ones: mount failed (32). +u3.sfdir3.list[1].filetype = firstbit: mount failed (32). +u3.sfdir3.list[1].filetype = middlebit: mount failed (32). +u3.sfdir3.list[1].filetype = lastbit: mount failed (32). +u3.sfdir3.list[1].filetype = add: mount failed (32). +u3.sfdir3.list[1].filetype = sub: mount failed (32). +a.sfattr.hdr.totsize = zeroes: mount failed (32). +a.sfattr.hdr.totsize = ones: mount failed (32). +a.sfattr.hdr.totsize = firstbit: mount failed (32). +a.sfattr.hdr.totsize = middlebit: mount failed (32). +a.sfattr.hdr.totsize = lastbit: mount failed (32). +a.sfattr.hdr.totsize = add: mount failed (32). +a.sfattr.hdr.totsize = sub: mount failed (32). +a.sfattr.hdr.count = zeroes: mount failed (32). +a.sfattr.hdr.count = ones: mount failed (32). +a.sfattr.hdr.count = firstbit: mount failed (32). +a.sfattr.hdr.count = middlebit: mount failed (32). +a.sfattr.hdr.count = lastbit: mount failed (32). +a.sfattr.hdr.count = add: mount failed (32). +a.sfattr.hdr.count = sub: mount failed (32). +a.sfattr.list[0].namelen = zeroes: mount failed (32). +a.sfattr.list[0].namelen = ones: mount failed (32). +a.sfattr.list[0].namelen = firstbit: mount failed (32). +a.sfattr.list[0].namelen = middlebit: mount failed (32). +a.sfattr.list[0].namelen = lastbit: mount failed (32). +a.sfattr.list[0].namelen = add: mount failed (32). +a.sfattr.list[0].namelen = sub: mount failed (32). +a.sfattr.list[0].parent = zeroes: online repair failed (1). +a.sfattr.list[0].parent = zeroes: online re-scrub failed (5). +a.sfattr.list[0].parent = zeroes: offline re-scrub failed (1). +a.sfattr.list[0].parent = zeroes: online post-mod scrub failed (1). +a.sfattr.list[0].parent = zeroes: offline post-mod scrub failed (1). +a.sfattr.list[0].parent = lastbit: online repair failed (1). +a.sfattr.list[0].parent = lastbit: online re-scrub failed (5). +a.sfattr.list[0].parent = lastbit: offline re-scrub failed (1). +a.sfattr.list[0].parent = lastbit: online post-mod scrub failed (1). +a.sfattr.list[0].parent = lastbit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent = sub: online repair failed (1). +a.sfattr.list[0].parent = sub: online re-scrub failed (5). +a.sfattr.list[0].parent = sub: offline re-scrub failed (1). +a.sfattr.list[0].parent = sub: online post-mod scrub failed (1). +a.sfattr.list[0].parent = sub: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_ino = lastbit: online repair failed (1). +a.sfattr.list[0].parent_ino = lastbit: online re-scrub failed (5). +a.sfattr.list[0].parent_ino = lastbit: offline re-scrub failed (1). +a.sfattr.list[0].parent_ino = lastbit: online post-mod scrub failed (1). +a.sfattr.list[0].parent_ino = lastbit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_ino = add: online repair failed (1). +a.sfattr.list[0].parent_ino = add: online re-scrub failed (5). +a.sfattr.list[0].parent_ino = add: offline re-scrub failed (1). +a.sfattr.list[0].parent_ino = add: online post-mod scrub failed (1). +a.sfattr.list[0].parent_ino = add: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_ino = sub: online repair failed (1). +a.sfattr.list[0].parent_ino = sub: online re-scrub failed (5). +a.sfattr.list[0].parent_ino = sub: offline re-scrub failed (1). +a.sfattr.list[0].parent_ino = sub: online post-mod scrub failed (1). +a.sfattr.list[0].parent_ino = sub: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = ones: online repair failed (1). +a.sfattr.list[0].parent_gen = ones: online re-scrub failed (5). +a.sfattr.list[0].parent_gen = ones: offline re-scrub failed (1). +a.sfattr.list[0].parent_gen = ones: online post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = ones: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = firstbit: online repair failed (1). +a.sfattr.list[0].parent_gen = firstbit: online re-scrub failed (5). +a.sfattr.list[0].parent_gen = firstbit: offline re-scrub failed (1). +a.sfattr.list[0].parent_gen = firstbit: online post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = firstbit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = middlebit: online repair failed (1). +a.sfattr.list[0].parent_gen = middlebit: online re-scrub failed (5). +a.sfattr.list[0].parent_gen = middlebit: offline re-scrub failed (1). +a.sfattr.list[0].parent_gen = middlebit: online post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = middlebit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = lastbit: online repair failed (1). +a.sfattr.list[0].parent_gen = lastbit: online re-scrub failed (5). +a.sfattr.list[0].parent_gen = lastbit: offline re-scrub failed (1). +a.sfattr.list[0].parent_gen = lastbit: online post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = lastbit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = add: online repair failed (1). +a.sfattr.list[0].parent_gen = add: online re-scrub failed (5). +a.sfattr.list[0].parent_gen = add: offline re-scrub failed (1). +a.sfattr.list[0].parent_gen = add: online post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = add: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = sub: online repair failed (1). +a.sfattr.list[0].parent_gen = sub: online re-scrub failed (5). +a.sfattr.list[0].parent_gen = sub: offline re-scrub failed (1). +a.sfattr.list[0].parent_gen = sub: online post-mod scrub failed (1). +a.sfattr.list[0].parent_gen = sub: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = zeroes: online repair failed (1). +a.sfattr.list[0].parent_namehash = zeroes: online re-scrub failed (5). +a.sfattr.list[0].parent_namehash = zeroes: offline re-scrub failed (1). +a.sfattr.list[0].parent_namehash = zeroes: online post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = zeroes: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = firstbit: online repair failed (1). +a.sfattr.list[0].parent_namehash = firstbit: online re-scrub failed (5). +a.sfattr.list[0].parent_namehash = firstbit: offline re-scrub failed (1). +a.sfattr.list[0].parent_namehash = firstbit: online post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = firstbit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = lastbit: online repair failed (1). +a.sfattr.list[0].parent_namehash = lastbit: online re-scrub failed (5). +a.sfattr.list[0].parent_namehash = lastbit: offline re-scrub failed (1). +a.sfattr.list[0].parent_namehash = lastbit: online post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = lastbit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = add: online repair failed (1). +a.sfattr.list[0].parent_namehash = add: online re-scrub failed (5). +a.sfattr.list[0].parent_namehash = add: offline re-scrub failed (1). +a.sfattr.list[0].parent_namehash = add: online post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = add: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = sub: online repair failed (1). +a.sfattr.list[0].parent_namehash = sub: online re-scrub failed (5). +a.sfattr.list[0].parent_namehash = sub: offline re-scrub failed (1). +a.sfattr.list[0].parent_namehash = sub: online post-mod scrub failed (1). +a.sfattr.list[0].parent_namehash = sub: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_name = ones: online repair failed (1). +a.sfattr.list[0].parent_name = ones: online re-scrub failed (5). +a.sfattr.list[0].parent_name = ones: offline re-scrub failed (1). +a.sfattr.list[0].parent_name = ones: online post-mod scrub failed (1). +a.sfattr.list[0].parent_name = ones: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_name = firstbit: online repair failed (1). +a.sfattr.list[0].parent_name = firstbit: online re-scrub failed (5). +a.sfattr.list[0].parent_name = firstbit: offline re-scrub failed (1). +a.sfattr.list[0].parent_name = firstbit: online post-mod scrub failed (1). +a.sfattr.list[0].parent_name = firstbit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_name = middlebit: online repair failed (1). +a.sfattr.list[0].parent_name = middlebit: online re-scrub failed (5). +a.sfattr.list[0].parent_name = middlebit: offline re-scrub failed (1). +a.sfattr.list[0].parent_name = middlebit: online post-mod scrub failed (1). +a.sfattr.list[0].parent_name = middlebit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_name = lastbit: online repair failed (1). +a.sfattr.list[0].parent_name = lastbit: online re-scrub failed (5). +a.sfattr.list[0].parent_name = lastbit: offline re-scrub failed (1). +a.sfattr.list[0].parent_name = lastbit: online post-mod scrub failed (1). +a.sfattr.list[0].parent_name = lastbit: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_name = add: online repair failed (1). +a.sfattr.list[0].parent_name = add: online re-scrub failed (5). +a.sfattr.list[0].parent_name = add: offline re-scrub failed (1). +a.sfattr.list[0].parent_name = add: online post-mod scrub failed (1). +a.sfattr.list[0].parent_name = add: offline post-mod scrub failed (1). +a.sfattr.list[0].parent_name = sub: online repair failed (1). +a.sfattr.list[0].parent_name = sub: online re-scrub failed (5). +a.sfattr.list[0].parent_name = sub: offline re-scrub failed (1). +a.sfattr.list[0].parent_name = sub: online post-mod scrub failed (1). +a.sfattr.list[0].parent_name = sub: offline post-mod scrub failed (1). Done fuzzing metadir subdir diff --git a/tests/xfs/1551.out b/tests/xfs/1551.out index 4c3360d08b..fedbe7ad69 100644 --- a/tests/xfs/1551.out +++ b/tests/xfs/1551.out @@ -1,4 +1,35 @@ QA output created by 1551 Format and populate Fuzz metadir subdir +core.rtinherit = ones: offline scrub didn't fail. +core.rtinherit = firstbit: offline scrub didn't fail. +core.rtinherit = middlebit: offline scrub didn't fail. +core.rtinherit = lastbit: offline scrub didn't fail. +core.rtinherit = add: offline scrub didn't fail. +core.rtinherit = sub: offline scrub didn't fail. +core.projinherit = ones: offline scrub didn't fail. +core.projinherit = firstbit: offline scrub didn't fail. +core.projinherit = middlebit: offline scrub didn't fail. +core.projinherit = lastbit: offline scrub didn't fail. +core.projinherit = add: offline scrub didn't fail. +core.projinherit = sub: offline scrub didn't fail. +v3.change_count = zeroes: offline scrub didn't fail. +v3.change_count = ones: offline scrub didn't fail. +v3.change_count = firstbit: offline scrub didn't fail. +v3.change_count = middlebit: offline scrub didn't fail. +v3.change_count = lastbit: offline scrub didn't fail. +v3.change_count = add: offline scrub didn't fail. +v3.change_count = sub: offline scrub didn't fail. +v3.nrext64 = zeroes: offline scrub didn't fail. +v3.nrext64 = firstbit: offline scrub didn't fail. +v3.nrext64 = middlebit: offline scrub didn't fail. +v3.nrext64 = lastbit: offline scrub didn't fail. +v3.nrext64 = add: offline scrub didn't fail. +v3.nrext64 = sub: offline scrub didn't fail. +u3.sfdir3.list[0].inumber.i4 = lastbit: offline repair failed (1). +u3.sfdir3.list[0].inumber.i4 = lastbit: offline re-scrub failed (1). +u3.sfdir3.list[0].inumber.i4 = lastbit: pre-mod mount failed (32). +u3.sfdir3.list[1].offset = middlebit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = add: offline scrub didn't fail. Done fuzzing metadir subdir diff --git a/tests/xfs/1552.out b/tests/xfs/1552.out index 6636b1b656..35cc60d261 100644 --- a/tests/xfs/1552.out +++ b/tests/xfs/1552.out @@ -1,4 +1,343 @@ QA output created by 1552 Format and populate Fuzz metadir subdir +core.magic = zeroes: mount failed (32). +core.magic = ones: mount failed (32). +core.magic = firstbit: mount failed (32). +core.magic = middlebit: mount failed (32). +core.magic = lastbit: mount failed (32). +core.magic = add: mount failed (32). +core.magic = sub: mount failed (32). +core.mode = zeroes: mount failed (32). +core.mode = ones: mount failed (32). +core.mode = firstbit: mount failed (32). +core.mode = middlebit: mount failed (32). +core.mode = lastbit: mount failed (32). +core.mode = add: mount failed (32). +core.mode = sub: mount failed (32). +core.version = zeroes: mount failed (32). +core.version = ones: mount failed (32). +core.version = firstbit: mount failed (32). +core.version = middlebit: mount failed (32). +core.version = lastbit: mount failed (32). +core.version = add: mount failed (32). +core.version = sub: mount failed (32). +core.format = zeroes: mount failed (32). +core.format = ones: mount failed (32). +core.format = firstbit: mount failed (32). +core.format = middlebit: mount failed (32). +core.format = lastbit: mount failed (32). +core.format = add: mount failed (32). +core.format = sub: mount failed (32). +core.onlink = ones: mount failed (32). +core.onlink = firstbit: mount failed (32). +core.onlink = middlebit: mount failed (32). +core.onlink = lastbit: mount failed (32). +core.onlink = add: mount failed (32). +core.onlink = sub: mount failed (32). +core.uid = ones: mount failed (32). +core.uid = firstbit: mount failed (32). +core.uid = middlebit: mount failed (32). +core.uid = lastbit: mount failed (32). +core.uid = add: mount failed (32). +core.uid = sub: mount failed (32). +core.gid = ones: mount failed (32). +core.gid = firstbit: mount failed (32). +core.gid = middlebit: mount failed (32). +core.gid = lastbit: mount failed (32). +core.gid = add: mount failed (32). +core.gid = sub: mount failed (32). +core.nlinkv2 = zeroes: mount failed (32). +core.projid_lo = ones: mount failed (32). +core.projid_lo = firstbit: mount failed (32). +core.projid_lo = middlebit: mount failed (32). +core.projid_lo = lastbit: mount failed (32). +core.projid_lo = add: mount failed (32). +core.projid_lo = sub: mount failed (32). +core.projid_hi = ones: mount failed (32). +core.projid_hi = firstbit: mount failed (32). +core.projid_hi = middlebit: mount failed (32). +core.projid_hi = lastbit: mount failed (32). +core.projid_hi = add: mount failed (32). +core.projid_hi = sub: mount failed (32). +core.nextents = ones: mount failed (32). +core.nextents = firstbit: mount failed (32). +core.nextents = middlebit: mount failed (32). +core.nextents = lastbit: mount failed (32). +core.nextents = add: mount failed (32). +core.nextents = sub: mount failed (32). +core.size = zeroes: mount failed (32). +core.size = ones: mount failed (32). +core.size = firstbit: mount failed (32). +core.size = middlebit: mount failed (32). +core.size = lastbit: mount failed (32). +core.size = add: mount failed (32). +core.size = sub: mount failed (32). +core.extsize = ones: mount failed (32). +core.extsize = firstbit: mount failed (32). +core.extsize = middlebit: mount failed (32). +core.extsize = lastbit: mount failed (32). +core.extsize = add: mount failed (32). +core.extsize = sub: mount failed (32). +core.naextents = ones: mount failed (32). +core.naextents = firstbit: mount failed (32). +core.naextents = middlebit: mount failed (32). +core.naextents = lastbit: mount failed (32). +core.naextents = add: mount failed (32). +core.naextents = sub: mount failed (32). +core.forkoff = zeroes: mount failed (32). +core.forkoff = ones: mount failed (32). +core.forkoff = firstbit: mount failed (32). +core.forkoff = middlebit: mount failed (32). +core.forkoff = lastbit: mount failed (32). +core.forkoff = add: mount failed (32). +core.forkoff = sub: mount failed (32). +core.aformat = zeroes: mount failed (32). +core.aformat = ones: mount failed (32). +core.aformat = firstbit: mount failed (32). +core.aformat = middlebit: mount failed (32). +core.aformat = lastbit: mount failed (32). +core.aformat = add: mount failed (32). +core.aformat = sub: mount failed (32). +core.realtime = ones: mount failed (32). +core.realtime = firstbit: mount failed (32). +core.realtime = middlebit: mount failed (32). +core.realtime = lastbit: mount failed (32). +core.realtime = add: mount failed (32). +core.realtime = sub: mount failed (32). +core.rtinherit = ones: offline scrub didn't fail. +core.rtinherit = ones: online scrub didn't fail. +core.rtinherit = firstbit: offline scrub didn't fail. +core.rtinherit = firstbit: online scrub didn't fail. +core.rtinherit = middlebit: offline scrub didn't fail. +core.rtinherit = middlebit: online scrub didn't fail. +core.rtinherit = lastbit: offline scrub didn't fail. +core.rtinherit = lastbit: online scrub didn't fail. +core.rtinherit = add: offline scrub didn't fail. +core.rtinherit = add: online scrub didn't fail. +core.rtinherit = sub: offline scrub didn't fail. +core.rtinherit = sub: online scrub didn't fail. +core.projinherit = ones: offline scrub didn't fail. +core.projinherit = ones: online scrub didn't fail. +core.projinherit = firstbit: offline scrub didn't fail. +core.projinherit = firstbit: online scrub didn't fail. +core.projinherit = middlebit: offline scrub didn't fail. +core.projinherit = middlebit: online scrub didn't fail. +core.projinherit = lastbit: offline scrub didn't fail. +core.projinherit = lastbit: online scrub didn't fail. +core.projinherit = add: offline scrub didn't fail. +core.projinherit = add: online scrub didn't fail. +core.projinherit = sub: offline scrub didn't fail. +core.projinherit = sub: online scrub didn't fail. +core.nosymlinks = zeroes: mount failed (32). +core.nosymlinks = firstbit: mount failed (32). +core.nosymlinks = middlebit: mount failed (32). +core.nosymlinks = lastbit: mount failed (32). +core.nosymlinks = add: mount failed (32). +core.nosymlinks = sub: mount failed (32). +core.extsz = ones: mount failed (32). +core.extsz = firstbit: mount failed (32). +core.extsz = middlebit: mount failed (32). +core.extsz = lastbit: mount failed (32). +core.extsz = add: mount failed (32). +core.extsz = sub: mount failed (32). +core.extszinherit = ones: mount failed (32). +core.extszinherit = firstbit: mount failed (32). +core.extszinherit = middlebit: mount failed (32). +core.extszinherit = lastbit: mount failed (32). +core.extszinherit = add: mount failed (32). +core.extszinherit = sub: mount failed (32). +next_unlinked = zeroes: mount failed (32). +next_unlinked = firstbit: mount failed (32). +next_unlinked = middlebit: mount failed (32). +next_unlinked = lastbit: mount failed (32). +next_unlinked = add: online scrub didn't fail. +next_unlinked = sub: mount failed (32). +v3.crc = zeroes: mount failed (32). +v3.crc = ones: mount failed (32). +v3.crc = firstbit: mount failed (32). +v3.crc = middlebit: mount failed (32). +v3.crc = lastbit: mount failed (32). +v3.crc = add: mount failed (32). +v3.crc = sub: mount failed (32). +v3.change_count = zeroes: offline scrub didn't fail. +v3.change_count = zeroes: online scrub didn't fail. +v3.change_count = ones: offline scrub didn't fail. +v3.change_count = ones: online scrub didn't fail. +v3.change_count = firstbit: offline scrub didn't fail. +v3.change_count = firstbit: online scrub didn't fail. +v3.change_count = middlebit: offline scrub didn't fail. +v3.change_count = middlebit: online scrub didn't fail. +v3.change_count = lastbit: offline scrub didn't fail. +v3.change_count = lastbit: online scrub didn't fail. +v3.change_count = add: offline scrub didn't fail. +v3.change_count = add: online scrub didn't fail. +v3.change_count = sub: offline scrub didn't fail. +v3.change_count = sub: online scrub didn't fail. +v3.flags2 = zeroes: mount failed (32). +v3.flags2 = ones: mount failed (32). +v3.flags2 = firstbit: mount failed (32). +v3.flags2 = middlebit: online scrub didn't fail. +v3.flags2 = lastbit: mount failed (32). +v3.flags2 = add: mount failed (32). +v3.flags2 = sub: mount failed (32). +v3.cowextsize = ones: mount failed (32). +v3.cowextsize = firstbit: mount failed (32). +v3.cowextsize = middlebit: mount failed (32). +v3.cowextsize = lastbit: mount failed (32). +v3.cowextsize = add: mount failed (32). +v3.cowextsize = sub: mount failed (32). +v3.inumber = zeroes: mount failed (32). +v3.inumber = ones: mount failed (32). +v3.inumber = firstbit: mount failed (32). +v3.inumber = middlebit: mount failed (32). +v3.inumber = lastbit: mount failed (32). +v3.inumber = add: mount failed (32). +v3.inumber = sub: mount failed (32). +v3.uuid = zeroes: mount failed (32). +v3.uuid = ones: mount failed (32). +v3.uuid = firstbit: mount failed (32). +v3.uuid = middlebit: mount failed (32). +v3.uuid = lastbit: mount failed (32). +v3.reflink = ones: mount failed (32). +v3.reflink = firstbit: mount failed (32). +v3.reflink = middlebit: mount failed (32). +v3.reflink = lastbit: mount failed (32). +v3.reflink = add: mount failed (32). +v3.reflink = sub: mount failed (32). +v3.cowextsz = ones: mount failed (32). +v3.cowextsz = firstbit: mount failed (32). +v3.cowextsz = middlebit: mount failed (32). +v3.cowextsz = lastbit: mount failed (32). +v3.cowextsz = add: mount failed (32). +v3.cowextsz = sub: mount failed (32). +v3.nrext64 = zeroes: offline scrub didn't fail. +v3.nrext64 = zeroes: online scrub didn't fail. +v3.nrext64 = firstbit: offline scrub didn't fail. +v3.nrext64 = firstbit: online scrub didn't fail. +v3.nrext64 = middlebit: offline scrub didn't fail. +v3.nrext64 = middlebit: online scrub didn't fail. +v3.nrext64 = lastbit: offline scrub didn't fail. +v3.nrext64 = lastbit: online scrub didn't fail. +v3.nrext64 = add: offline scrub didn't fail. +v3.nrext64 = add: online scrub didn't fail. +v3.nrext64 = sub: offline scrub didn't fail. +v3.nrext64 = sub: online scrub didn't fail. +v3.metadir = zeroes: mount failed (32). +v3.metadir = firstbit: mount failed (32). +v3.metadir = middlebit: mount failed (32). +v3.metadir = lastbit: mount failed (32). +v3.metadir = add: mount failed (32). +v3.metadir = sub: mount failed (32). +u3.sfdir3.hdr.count = zeroes: mount failed (32). +u3.sfdir3.hdr.count = ones: mount failed (32). +u3.sfdir3.hdr.count = firstbit: mount failed (32). +u3.sfdir3.hdr.count = middlebit: mount failed (32). +u3.sfdir3.hdr.count = lastbit: mount failed (32). +u3.sfdir3.hdr.count = add: mount failed (32). +u3.sfdir3.hdr.count = sub: mount failed (32). +u3.sfdir3.hdr.i8count = ones: mount failed (32). +u3.sfdir3.hdr.i8count = firstbit: mount failed (32). +u3.sfdir3.hdr.i8count = middlebit: mount failed (32). +u3.sfdir3.hdr.i8count = lastbit: mount failed (32). +u3.sfdir3.hdr.i8count = add: mount failed (32). +u3.sfdir3.hdr.i8count = sub: mount failed (32). +u3.sfdir3.hdr.parent.i4 = zeroes: mount failed (32). +u3.sfdir3.hdr.parent.i4 = ones: mount failed (32). +u3.sfdir3.hdr.parent.i4 = firstbit: mount failed (32). +u3.sfdir3.hdr.parent.i4 = sub: mount failed (32). +u3.sfdir3.list[0].namelen = zeroes: mount failed (32). +u3.sfdir3.list[0].namelen = ones: mount failed (32). +u3.sfdir3.list[0].namelen = firstbit: mount failed (32). +u3.sfdir3.list[0].namelen = middlebit: mount failed (32). +u3.sfdir3.list[0].namelen = lastbit: mount failed (32). +u3.sfdir3.list[0].namelen = add: mount failed (32). +u3.sfdir3.list[0].namelen = sub: mount failed (32). +u3.sfdir3.list[0].offset = zeroes: mount failed (32). +u3.sfdir3.list[0].offset = ones: mount failed (32). +u3.sfdir3.list[0].offset = firstbit: mount failed (32). +u3.sfdir3.list[0].offset = middlebit: mount failed (32). +u3.sfdir3.list[0].offset = lastbit: mount failed (32). +u3.sfdir3.list[0].offset = add: mount failed (32). +u3.sfdir3.list[0].offset = sub: mount failed (32). +u3.sfdir3.list[0].name = zeroes: mount failed (32). +u3.sfdir3.list[0].name = ones: mount failed (32). +u3.sfdir3.list[0].name = firstbit: mount failed (32). +u3.sfdir3.list[0].name = middlebit: mount failed (32). +u3.sfdir3.list[0].name = lastbit: mount failed (32). +u3.sfdir3.list[0].name = add: mount failed (32). +u3.sfdir3.list[0].name = sub: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[0].filetype = zeroes: mount failed (32). +u3.sfdir3.list[0].filetype = ones: mount failed (32). +u3.sfdir3.list[0].filetype = firstbit: mount failed (32). +u3.sfdir3.list[0].filetype = middlebit: mount failed (32). +u3.sfdir3.list[0].filetype = lastbit: mount failed (32). +u3.sfdir3.list[0].filetype = add: mount failed (32). +u3.sfdir3.list[0].filetype = sub: mount failed (32). +u3.sfdir3.list[1].namelen = zeroes: mount failed (32). +u3.sfdir3.list[1].namelen = ones: mount failed (32). +u3.sfdir3.list[1].namelen = firstbit: mount failed (32). +u3.sfdir3.list[1].namelen = middlebit: mount failed (32). +u3.sfdir3.list[1].namelen = lastbit: mount failed (32). +u3.sfdir3.list[1].namelen = add: mount failed (32). +u3.sfdir3.list[1].namelen = sub: mount failed (32). +u3.sfdir3.list[1].offset = zeroes: mount failed (32). +u3.sfdir3.list[1].offset = ones: mount failed (32). +u3.sfdir3.list[1].offset = firstbit: mount failed (32). +u3.sfdir3.list[1].offset = middlebit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = middlebit: online scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: online scrub didn't fail. +u3.sfdir3.list[1].offset = add: offline scrub didn't fail. +u3.sfdir3.list[1].offset = add: online scrub didn't fail. +u3.sfdir3.list[1].offset = sub: mount failed (32). +u3.sfdir3.list[1].name = zeroes: mount failed (32). +u3.sfdir3.list[1].name = ones: mount failed (32). +u3.sfdir3.list[1].name = firstbit: mount failed (32). +u3.sfdir3.list[1].name = middlebit: mount failed (32). +u3.sfdir3.list[1].name = lastbit: mount failed (32). +u3.sfdir3.list[1].name = add: mount failed (32). +u3.sfdir3.list[1].name = sub: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[1].filetype = zeroes: mount failed (32). +u3.sfdir3.list[1].filetype = ones: mount failed (32). +u3.sfdir3.list[1].filetype = firstbit: mount failed (32). +u3.sfdir3.list[1].filetype = middlebit: mount failed (32). +u3.sfdir3.list[1].filetype = lastbit: mount failed (32). +u3.sfdir3.list[1].filetype = add: mount failed (32). +u3.sfdir3.list[1].filetype = sub: mount failed (32). +a.sfattr.hdr.totsize = zeroes: mount failed (32). +a.sfattr.hdr.totsize = ones: mount failed (32). +a.sfattr.hdr.totsize = firstbit: mount failed (32). +a.sfattr.hdr.totsize = middlebit: mount failed (32). +a.sfattr.hdr.totsize = lastbit: mount failed (32). +a.sfattr.hdr.totsize = add: mount failed (32). +a.sfattr.hdr.totsize = sub: mount failed (32). +a.sfattr.hdr.count = zeroes: mount failed (32). +a.sfattr.hdr.count = ones: mount failed (32). +a.sfattr.hdr.count = firstbit: mount failed (32). +a.sfattr.hdr.count = middlebit: mount failed (32). +a.sfattr.hdr.count = lastbit: mount failed (32). +a.sfattr.hdr.count = add: mount failed (32). +a.sfattr.hdr.count = sub: mount failed (32). +a.sfattr.list[0].namelen = zeroes: mount failed (32). +a.sfattr.list[0].namelen = ones: mount failed (32). +a.sfattr.list[0].namelen = firstbit: mount failed (32). +a.sfattr.list[0].namelen = middlebit: mount failed (32). +a.sfattr.list[0].namelen = lastbit: mount failed (32). +a.sfattr.list[0].namelen = add: mount failed (32). +a.sfattr.list[0].namelen = sub: mount failed (32). Done fuzzing metadir subdir diff --git a/tests/xfs/1553.out b/tests/xfs/1553.out index 0298fcfddb..e406b598b9 100644 --- a/tests/xfs/1553.out +++ b/tests/xfs/1553.out @@ -1,4 +1,370 @@ QA output created by 1553 Format and populate Fuzz metadir subdir +core.magic = zeroes: mount failed (32). +core.magic = ones: mount failed (32). +core.magic = firstbit: mount failed (32). +core.magic = middlebit: mount failed (32). +core.magic = lastbit: mount failed (32). +core.magic = add: mount failed (32). +core.magic = sub: mount failed (32). +core.mode = zeroes: mount failed (32). +core.mode = ones: mount failed (32). +core.mode = firstbit: mount failed (32). +core.mode = middlebit: mount failed (32). +core.mode = lastbit: mount failed (32). +core.mode = add: mount failed (32). +core.mode = sub: mount failed (32). +core.version = zeroes: mount failed (32). +core.version = ones: mount failed (32). +core.version = firstbit: mount failed (32). +core.version = middlebit: mount failed (32). +core.version = lastbit: mount failed (32). +core.version = add: mount failed (32). +core.version = sub: mount failed (32). +core.format = zeroes: mount failed (32). +core.format = ones: mount failed (32). +core.format = firstbit: mount failed (32). +core.format = middlebit: mount failed (32). +core.format = lastbit: mount failed (32). +core.format = add: mount failed (32). +core.format = sub: mount failed (32). +core.onlink = ones: mount failed (32). +core.onlink = firstbit: mount failed (32). +core.onlink = middlebit: mount failed (32). +core.onlink = lastbit: mount failed (32). +core.onlink = add: mount failed (32). +core.onlink = sub: mount failed (32). +core.uid = ones: mount failed (32). +core.uid = firstbit: mount failed (32). +core.uid = middlebit: mount failed (32). +core.uid = lastbit: mount failed (32). +core.uid = add: mount failed (32). +core.uid = sub: mount failed (32). +core.gid = ones: mount failed (32). +core.gid = firstbit: mount failed (32). +core.gid = middlebit: mount failed (32). +core.gid = lastbit: mount failed (32). +core.gid = add: mount failed (32). +core.gid = sub: mount failed (32). +core.nlinkv2 = zeroes: mount failed (32). +core.projid_lo = ones: mount failed (32). +core.projid_lo = firstbit: mount failed (32). +core.projid_lo = middlebit: mount failed (32). +core.projid_lo = lastbit: mount failed (32). +core.projid_lo = add: mount failed (32). +core.projid_lo = sub: mount failed (32). +core.projid_hi = ones: mount failed (32). +core.projid_hi = firstbit: mount failed (32). +core.projid_hi = middlebit: mount failed (32). +core.projid_hi = lastbit: mount failed (32). +core.projid_hi = add: mount failed (32). +core.projid_hi = sub: mount failed (32). +core.nextents = ones: mount failed (32). +core.nextents = firstbit: mount failed (32). +core.nextents = middlebit: mount failed (32). +core.nextents = lastbit: mount failed (32). +core.nextents = add: mount failed (32). +core.nextents = sub: mount failed (32). +core.size = zeroes: mount failed (32). +core.size = ones: mount failed (32). +core.size = firstbit: mount failed (32). +core.size = middlebit: mount failed (32). +core.size = lastbit: mount failed (32). +core.size = add: mount failed (32). +core.size = sub: mount failed (32). +core.extsize = ones: mount failed (32). +core.extsize = firstbit: mount failed (32). +core.extsize = middlebit: mount failed (32). +core.extsize = lastbit: mount failed (32). +core.extsize = add: mount failed (32). +core.extsize = sub: mount failed (32). +core.naextents = ones: mount failed (32). +core.naextents = firstbit: mount failed (32). +core.naextents = middlebit: mount failed (32). +core.naextents = lastbit: mount failed (32). +core.naextents = add: mount failed (32). +core.naextents = sub: mount failed (32). +core.forkoff = zeroes: mount failed (32). +core.forkoff = ones: mount failed (32). +core.forkoff = firstbit: mount failed (32). +core.forkoff = middlebit: mount failed (32). +core.forkoff = lastbit: mount failed (32). +core.forkoff = add: mount failed (32). +core.forkoff = sub: mount failed (32). +core.aformat = zeroes: mount failed (32). +core.aformat = ones: mount failed (32). +core.aformat = firstbit: mount failed (32). +core.aformat = middlebit: mount failed (32). +core.aformat = lastbit: mount failed (32). +core.aformat = add: mount failed (32). +core.aformat = sub: mount failed (32). +core.realtime = ones: mount failed (32). +core.realtime = firstbit: mount failed (32). +core.realtime = middlebit: mount failed (32). +core.realtime = lastbit: mount failed (32). +core.realtime = add: mount failed (32). +core.realtime = sub: mount failed (32). +core.rtinherit = ones: offline scrub didn't fail. +core.rtinherit = ones: online scrub didn't fail. +core.rtinherit = firstbit: offline scrub didn't fail. +core.rtinherit = firstbit: online scrub didn't fail. +core.rtinherit = middlebit: offline scrub didn't fail. +core.rtinherit = middlebit: online scrub didn't fail. +core.rtinherit = lastbit: offline scrub didn't fail. +core.rtinherit = lastbit: online scrub didn't fail. +core.rtinherit = add: offline scrub didn't fail. +core.rtinherit = add: online scrub didn't fail. +core.rtinherit = sub: offline scrub didn't fail. +core.rtinherit = sub: online scrub didn't fail. +core.projinherit = ones: offline scrub didn't fail. +core.projinherit = ones: online scrub didn't fail. +core.projinherit = firstbit: offline scrub didn't fail. +core.projinherit = firstbit: online scrub didn't fail. +core.projinherit = middlebit: offline scrub didn't fail. +core.projinherit = middlebit: online scrub didn't fail. +core.projinherit = lastbit: offline scrub didn't fail. +core.projinherit = lastbit: online scrub didn't fail. +core.projinherit = add: offline scrub didn't fail. +core.projinherit = add: online scrub didn't fail. +core.projinherit = sub: offline scrub didn't fail. +core.projinherit = sub: online scrub didn't fail. +core.nosymlinks = zeroes: mount failed (32). +core.nosymlinks = firstbit: mount failed (32). +core.nosymlinks = middlebit: mount failed (32). +core.nosymlinks = lastbit: mount failed (32). +core.nosymlinks = add: mount failed (32). +core.nosymlinks = sub: mount failed (32). +core.extsz = ones: mount failed (32). +core.extsz = firstbit: mount failed (32). +core.extsz = middlebit: mount failed (32). +core.extsz = lastbit: mount failed (32). +core.extsz = add: mount failed (32). +core.extsz = sub: mount failed (32). +core.extszinherit = ones: mount failed (32). +core.extszinherit = firstbit: mount failed (32). +core.extszinherit = middlebit: mount failed (32). +core.extszinherit = lastbit: mount failed (32). +core.extszinherit = add: mount failed (32). +core.extszinherit = sub: mount failed (32). +next_unlinked = zeroes: mount failed (32). +next_unlinked = firstbit: mount failed (32). +next_unlinked = middlebit: mount failed (32). +next_unlinked = lastbit: mount failed (32). +next_unlinked = add: online scrub didn't fail. +next_unlinked = add: offline re-scrub failed (1). +next_unlinked = add: offline post-mod scrub failed (1). +next_unlinked = sub: mount failed (32). +v3.crc = zeroes: mount failed (32). +v3.crc = ones: mount failed (32). +v3.crc = firstbit: mount failed (32). +v3.crc = middlebit: mount failed (32). +v3.crc = lastbit: mount failed (32). +v3.crc = add: mount failed (32). +v3.crc = sub: mount failed (32). +v3.change_count = zeroes: offline scrub didn't fail. +v3.change_count = zeroes: online scrub didn't fail. +v3.change_count = ones: offline scrub didn't fail. +v3.change_count = ones: online scrub didn't fail. +v3.change_count = firstbit: offline scrub didn't fail. +v3.change_count = firstbit: online scrub didn't fail. +v3.change_count = middlebit: offline scrub didn't fail. +v3.change_count = middlebit: online scrub didn't fail. +v3.change_count = lastbit: offline scrub didn't fail. +v3.change_count = lastbit: online scrub didn't fail. +v3.change_count = add: offline scrub didn't fail. +v3.change_count = add: online scrub didn't fail. +v3.change_count = sub: offline scrub didn't fail. +v3.change_count = sub: online scrub didn't fail. +v3.flags2 = zeroes: mount failed (32). +v3.flags2 = ones: mount failed (32). +v3.flags2 = firstbit: mount failed (32). +v3.flags2 = middlebit: online scrub didn't fail. +v3.flags2 = middlebit: offline re-scrub failed (1). +v3.flags2 = middlebit: offline post-mod scrub failed (1). +v3.flags2 = lastbit: mount failed (32). +v3.flags2 = add: mount failed (32). +v3.flags2 = sub: mount failed (32). +v3.cowextsize = ones: mount failed (32). +v3.cowextsize = firstbit: mount failed (32). +v3.cowextsize = middlebit: mount failed (32). +v3.cowextsize = lastbit: mount failed (32). +v3.cowextsize = add: mount failed (32). +v3.cowextsize = sub: mount failed (32). +v3.inumber = zeroes: mount failed (32). +v3.inumber = ones: mount failed (32). +v3.inumber = firstbit: mount failed (32). +v3.inumber = middlebit: mount failed (32). +v3.inumber = lastbit: mount failed (32). +v3.inumber = add: mount failed (32). +v3.inumber = sub: mount failed (32). +v3.uuid = zeroes: mount failed (32). +v3.uuid = ones: mount failed (32). +v3.uuid = firstbit: mount failed (32). +v3.uuid = middlebit: mount failed (32). +v3.uuid = lastbit: mount failed (32). +v3.reflink = ones: mount failed (32). +v3.reflink = firstbit: mount failed (32). +v3.reflink = middlebit: mount failed (32). +v3.reflink = lastbit: mount failed (32). +v3.reflink = add: mount failed (32). +v3.reflink = sub: mount failed (32). +v3.cowextsz = ones: mount failed (32). +v3.cowextsz = firstbit: mount failed (32). +v3.cowextsz = middlebit: mount failed (32). +v3.cowextsz = lastbit: mount failed (32). +v3.cowextsz = add: mount failed (32). +v3.cowextsz = sub: mount failed (32). +v3.nrext64 = zeroes: offline scrub didn't fail. +v3.nrext64 = zeroes: online scrub didn't fail. +v3.nrext64 = firstbit: offline scrub didn't fail. +v3.nrext64 = firstbit: online scrub didn't fail. +v3.nrext64 = middlebit: offline scrub didn't fail. +v3.nrext64 = middlebit: online scrub didn't fail. +v3.nrext64 = lastbit: offline scrub didn't fail. +v3.nrext64 = lastbit: online scrub didn't fail. +v3.nrext64 = add: offline scrub didn't fail. +v3.nrext64 = add: online scrub didn't fail. +v3.nrext64 = sub: offline scrub didn't fail. +v3.nrext64 = sub: online scrub didn't fail. +v3.metadir = zeroes: mount failed (32). +v3.metadir = firstbit: mount failed (32). +v3.metadir = middlebit: mount failed (32). +v3.metadir = lastbit: mount failed (32). +v3.metadir = add: mount failed (32). +v3.metadir = sub: mount failed (32). +u3.sfdir3.hdr.count = zeroes: mount failed (32). +u3.sfdir3.hdr.count = ones: mount failed (32). +u3.sfdir3.hdr.count = firstbit: mount failed (32). +u3.sfdir3.hdr.count = middlebit: mount failed (32). +u3.sfdir3.hdr.count = lastbit: mount failed (32). +u3.sfdir3.hdr.count = add: mount failed (32). +u3.sfdir3.hdr.count = sub: mount failed (32). +u3.sfdir3.hdr.i8count = ones: mount failed (32). +u3.sfdir3.hdr.i8count = firstbit: mount failed (32). +u3.sfdir3.hdr.i8count = middlebit: mount failed (32). +u3.sfdir3.hdr.i8count = lastbit: mount failed (32). +u3.sfdir3.hdr.i8count = add: mount failed (32). +u3.sfdir3.hdr.i8count = sub: mount failed (32). +u3.sfdir3.hdr.parent.i4 = zeroes: mount failed (32). +u3.sfdir3.hdr.parent.i4 = ones: mount failed (32). +u3.sfdir3.hdr.parent.i4 = firstbit: mount failed (32). +u3.sfdir3.hdr.parent.i4 = sub: mount failed (32). +u3.sfdir3.list[0].namelen = zeroes: mount failed (32). +u3.sfdir3.list[0].namelen = ones: mount failed (32). +u3.sfdir3.list[0].namelen = firstbit: mount failed (32). +u3.sfdir3.list[0].namelen = middlebit: mount failed (32). +u3.sfdir3.list[0].namelen = lastbit: mount failed (32). +u3.sfdir3.list[0].namelen = add: mount failed (32). +u3.sfdir3.list[0].namelen = sub: mount failed (32). +u3.sfdir3.list[0].offset = zeroes: mount failed (32). +u3.sfdir3.list[0].offset = ones: mount failed (32). +u3.sfdir3.list[0].offset = firstbit: mount failed (32). +u3.sfdir3.list[0].offset = middlebit: mount failed (32). +u3.sfdir3.list[0].offset = lastbit: mount failed (32). +u3.sfdir3.list[0].offset = add: mount failed (32). +u3.sfdir3.list[0].offset = sub: mount failed (32). +u3.sfdir3.list[0].name = zeroes: mount failed (32). +u3.sfdir3.list[0].name = ones: mount failed (32). +u3.sfdir3.list[0].name = firstbit: mount failed (32). +u3.sfdir3.list[0].name = middlebit: mount failed (32). +u3.sfdir3.list[0].name = lastbit: mount failed (32). +u3.sfdir3.list[0].name = add: mount failed (32). +u3.sfdir3.list[0].name = sub: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = lastbit: offline repair failed (1). +u3.sfdir3.list[0].inumber.i4 = lastbit: offline re-scrub failed (1). +u3.sfdir3.list[0].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[0].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[0].filetype = zeroes: mount failed (32). +u3.sfdir3.list[0].filetype = ones: mount failed (32). +u3.sfdir3.list[0].filetype = firstbit: mount failed (32). +u3.sfdir3.list[0].filetype = middlebit: mount failed (32). +u3.sfdir3.list[0].filetype = lastbit: mount failed (32). +u3.sfdir3.list[0].filetype = add: mount failed (32). +u3.sfdir3.list[0].filetype = sub: mount failed (32). +u3.sfdir3.list[1].namelen = zeroes: mount failed (32). +u3.sfdir3.list[1].namelen = ones: mount failed (32). +u3.sfdir3.list[1].namelen = firstbit: mount failed (32). +u3.sfdir3.list[1].namelen = middlebit: mount failed (32). +u3.sfdir3.list[1].namelen = lastbit: mount failed (32). +u3.sfdir3.list[1].namelen = add: mount failed (32). +u3.sfdir3.list[1].namelen = sub: mount failed (32). +u3.sfdir3.list[1].offset = zeroes: mount failed (32). +u3.sfdir3.list[1].offset = ones: mount failed (32). +u3.sfdir3.list[1].offset = firstbit: mount failed (32). +u3.sfdir3.list[1].offset = middlebit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = middlebit: online scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: offline scrub didn't fail. +u3.sfdir3.list[1].offset = lastbit: online scrub didn't fail. +u3.sfdir3.list[1].offset = add: offline scrub didn't fail. +u3.sfdir3.list[1].offset = add: online scrub didn't fail. +u3.sfdir3.list[1].offset = sub: mount failed (32). +u3.sfdir3.list[1].name = zeroes: mount failed (32). +u3.sfdir3.list[1].name = ones: mount failed (32). +u3.sfdir3.list[1].name = firstbit: mount failed (32). +u3.sfdir3.list[1].name = middlebit: mount failed (32). +u3.sfdir3.list[1].name = lastbit: mount failed (32). +u3.sfdir3.list[1].name = add: mount failed (32). +u3.sfdir3.list[1].name = sub: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = zeroes: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = ones: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = firstbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = middlebit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = lastbit: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = add: mount failed (32). +u3.sfdir3.list[1].inumber.i4 = sub: mount failed (32). +u3.sfdir3.list[1].filetype = zeroes: mount failed (32). +u3.sfdir3.list[1].filetype = ones: mount failed (32). +u3.sfdir3.list[1].filetype = firstbit: mount failed (32). +u3.sfdir3.list[1].filetype = middlebit: mount failed (32). +u3.sfdir3.list[1].filetype = lastbit: mount failed (32). +u3.sfdir3.list[1].filetype = add: mount failed (32). +u3.sfdir3.list[1].filetype = sub: mount failed (32). +a.sfattr.hdr.totsize = zeroes: mount failed (32). +a.sfattr.hdr.totsize = ones: mount failed (32). +a.sfattr.hdr.totsize = firstbit: mount failed (32). +a.sfattr.hdr.totsize = middlebit: mount failed (32). +a.sfattr.hdr.totsize = lastbit: mount failed (32). +a.sfattr.hdr.totsize = add: mount failed (32). +a.sfattr.hdr.totsize = sub: mount failed (32). +a.sfattr.hdr.count = zeroes: mount failed (32). +a.sfattr.hdr.count = ones: mount failed (32). +a.sfattr.hdr.count = firstbit: mount failed (32). +a.sfattr.hdr.count = middlebit: mount failed (32). +a.sfattr.hdr.count = lastbit: mount failed (32). +a.sfattr.hdr.count = add: mount failed (32). +a.sfattr.hdr.count = sub: mount failed (32). +a.sfattr.list[0].namelen = zeroes: mount failed (32). +a.sfattr.list[0].namelen = ones: mount failed (32). +a.sfattr.list[0].namelen = firstbit: mount failed (32). +a.sfattr.list[0].namelen = middlebit: mount failed (32). +a.sfattr.list[0].namelen = lastbit: mount failed (32). +a.sfattr.list[0].namelen = add: mount failed (32). +a.sfattr.list[0].namelen = sub: mount failed (32). +a.sfattr.list[0].parent = zeroes: online repair failed (1). +a.sfattr.list[0].parent = add: online repair failed (1). +a.sfattr.list[0].parent_ino = zeroes: online repair failed (1). +a.sfattr.list[0].parent_ino = firstbit: online repair failed (1). +a.sfattr.list[0].parent_ino = middlebit: online repair failed (1). +a.sfattr.list[0].parent_ino = lastbit: online repair failed (1). +a.sfattr.list[0].parent_ino = add: online repair failed (1). +a.sfattr.list[0].parent_gen = ones: online repair failed (1). +a.sfattr.list[0].parent_gen = firstbit: online repair failed (1). +a.sfattr.list[0].parent_gen = middlebit: online repair failed (1). +a.sfattr.list[0].parent_gen = lastbit: online repair failed (1). +a.sfattr.list[0].parent_gen = add: online repair failed (1). +a.sfattr.list[0].parent_namehash = zeroes: online repair failed (1). +a.sfattr.list[0].parent_namehash = firstbit: online repair failed (1). +a.sfattr.list[0].parent_namehash = middlebit: online repair failed (1). +a.sfattr.list[0].parent_namehash = lastbit: online repair failed (1). +a.sfattr.list[0].parent_name = firstbit: online repair failed (1). +a.sfattr.list[0].parent_name = middlebit: online repair failed (1). +a.sfattr.list[0].parent_name = add: online repair failed (1). +a.sfattr.list[0].parent_name = sub: online repair failed (1). Done fuzzing metadir subdir From patchwork Wed Dec 27 13:52:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13508504 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4FBA17ED; Mon, 1 Jan 2024 00:52:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SApRtcAp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C9456C433C8; Mon, 1 Jan 2024 00:52:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704070366; bh=tPy+L+JF0wSvbyGlgNcV0r3z6+erjEBI3a7qJgCBLhQ=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=SApRtcApRCp5Wggwr+ZSRbOfxC01jTUYtloQg0HJIOwn4OZ4lVhKB+1ZQtDKhIZ7I mPxX+5L2Mne/PKu1d2WhQkQZVQD0Xfko50Hy9/RBOmVcZ76QEFLfLXUmqsh0Ds4np9 UP2bWcU5cid0pkgYxMDrG159qQV0kJRasiZCeQtsszagHatKCtN/aTnVGiwZhJiQPi ofGwYbkSZAMElJqdiPLAnMV5v2r/JvJYtBU6og9mLVTZn4JQL39BfjsJzlWSG3I6rD HAswKJV9KtWR5mRDpT04LgfjuDAEBjTxkAB+NQeySwhWoKGv7G6qJn57f0CGLE5yc5 BEdrkD7+tAMRg== Date: Sun, 31 Dec 2023 16:52:46 +9900 Subject: [PATCH 11/11] xfs: test metapath repairs From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: guan@eryu.me, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <170405029995.1826032.5475480252505208153.stgit@frogsfrogsfrogs> In-Reply-To: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> References: <170405029843.1826032.12205800164831698648.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Functional testing for metadir path checking and repairs. Signed-off-by: Darrick J. Wong --- tests/xfs/1874 | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/1874.out | 16 ++++++ 2 files changed, 148 insertions(+) create mode 100755 tests/xfs/1874 create mode 100644 tests/xfs/1874.out diff --git a/tests/xfs/1874 b/tests/xfs/1874 new file mode 100755 index 0000000000..a00b58773f --- /dev/null +++ b/tests/xfs/1874 @@ -0,0 +1,132 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2023-2024 Oracle. All Rights Reserved. +# +# FS QA Test 1874 +# +# Functional test of using online repair to fix metadir paths. +# +. ./common/preamble +_begin_fstest auto online_repair + +# Override the default cleanup function. +# _cleanup() +# { +# cd / +# rm -r -f $tmp.* +# } + +# Import common functions. +source ./common/filter +source ./common/inject +source ./common/fuzzy +source ./common/quota + +# real QA test starts here + +# Modify as appropriate. +_supported_fs xfs +_require_xfs_db_command "link" +_require_xfs_db_command "unlink" +_require_scratch +_require_xfs_stress_online_repair + +prepare_fs() { + # Format filesystem + _scratch_mkfs | _filter_mkfs 2> $tmp.mkfs >> $seqres.full + _scratch_mount + + $XFS_INFO_PROG $SCRATCH_MNT | grep -q 'metadir=1' || \ + _notrun "metadata directories must be enabled" + + $XFS_INFO_PROG $SCRATCH_MNT | grep -q 'parent=1' || \ + _notrun "parent pointers must be enabled" + + root_inum="$(stat -c '%i' $SCRATCH_MNT)" + __stress_scrub_check_commands "%dir%" '' '' 'scrub metapath' + _scratch_unmount + + # Stash the /realtime inode number and gen + rt_metadir_inum=$(_scratch_xfs_get_metadata_field v3.inumber 'path -m /realtime') + rt_metadir_gen=$(_scratch_xfs_get_metadata_field core.gen 'path -m /realtime') + + # Stash the /realtime/bitmap inode number and gen + rbm_inum=$(_scratch_xfs_get_metadata_field v3.inumber 'path -m /realtime/bitmap') + rbm_gen=$(_scratch_xfs_get_metadata_field core.gen 'path -m /realtime/bitmap') + + # Fuzz parent pointer in rtbitmap file + _scratch_xfs_db -x \ + -c 'path -m /realtime/bitmap' \ + -c "write -d a.sfattr.list[0].parent_ino $root_inum" >> $seqres.full. +} + +simple_online_repair() { + echo "check /realtime dir" | _tee_kernlog + $XFS_IO_PROG -c "scrub directory $rt_metadir_inum $rt_metadir_gen" $SCRATCH_MNT + + echo "check /realtime/bitmap pptr" | _tee_kernlog + $XFS_IO_PROG -c "scrub parent $rbm_inum $rbm_gen" $SCRATCH_MNT + + echo "check /realtime/bitmap metapath" | _tee_kernlog + $XFS_IO_PROG -c "scrub metapath rtbitmap" $SCRATCH_MNT + + echo "check nlinks" | _tee_kernlog + $XFS_IO_PROG -c "scrub nlinks" $SCRATCH_MNT + + # Destroying a metadir path (e.g. /realtime/bitmap) cannot be done + # offline because then the mount will fail. Hence we must use a + # specific sequence of online repairs to remove the metadir path link. + # Only then can we use the metapath scrubber to restore the link. + + # Force repair the parent directory. Since /realtime/bitmap has a bad + # parent pointer, the "bitmap" entry in /realtime will not be created. + echo "fix /realtime dir" | _tee_kernlog + $XFS_IO_PROG -x -c "repair -R directory $rt_metadir_inum $rt_metadir_gen" $SCRATCH_MNT + + # Force repair the parent pointer. Since the "bitmap" entry in + # /realtime no longer exists and no other directories count the + # rtbitmap as a parent, this will fail cross-referencing after the + # repair. + echo "fix /realtime/bitmap pptr" | _tee_kernlog + $XFS_IO_PROG -x -c "repair -R parent $rbm_inum $rbm_gen" $SCRATCH_MNT + + # Now that we've completely erased the /realtime/bitmap path, check + # that the link is indeed lost, and restore the link. + echo "fix /realtime/bitmap metapath" | _tee_kernlog + $XFS_IO_PROG -x -c "repair metapath rtbitmap" $SCRATCH_MNT + + # Make sure we're not missing any link count + echo "fix nlinks" | _tee_kernlog + $XFS_IO_PROG -x -c "repair nlinks" $SCRATCH_MNT +} + +# Part 1: Use raw ioctls to detect the error and fix it. +prepare_fs +_scratch_mount +simple_online_repair +_check_scratch_fs +_scratch_unmount + +# Part 2: Use xfs_scrub to detect the error and fix it. +prepare_fs +_scratch_mount +echo "fix with xfs_scrub" | _tee_kernlog +_scratch_scrub &>> $seqres.full +echo "xfs_scrub returned $?" >> $seqres.full +_check_scratch_fs +_scratch_unmount + +# Part 3: Use xfs_repair to detect the error and fix it. +prepare_fs +echo "fix with xfs_repair" | _tee_kernlog +echo repair?? >> $seqres.full +_scratch_xfs_repair &>> $seqres.full +echo "xfs_repair returned $?" >> $seqres.full +_scratch_mount +_check_scratch_fs +_scratch_unmount + +echo "done with test" | _tee_kernlog +# success, all done +status=0 +exit diff --git a/tests/xfs/1874.out b/tests/xfs/1874.out new file mode 100644 index 0000000000..1c29698283 --- /dev/null +++ b/tests/xfs/1874.out @@ -0,0 +1,16 @@ +QA output created by 1874 +check /realtime dir +Corruption detected during cross-referencing. +check /realtime/bitmap pptr +Corruption detected during cross-referencing. +check /realtime/bitmap metapath +check nlinks +fix /realtime dir +fix /realtime/bitmap pptr +Corruption remains. +Corruption still detected during cross-referencing. +fix /realtime/bitmap metapath +fix nlinks +fix with xfs_scrub +fix with xfs_repair +done with test