From patchwork Tue Dec 13 19:45:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13072377 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 80A3FC4332F for ; Tue, 13 Dec 2022 19:45:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235584AbiLMTpT (ORCPT ); Tue, 13 Dec 2022 14:45:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236674AbiLMTpT (ORCPT ); Tue, 13 Dec 2022 14:45:19 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BC2A2494A; Tue, 13 Dec 2022 11:45:18 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id C48F3B815B1; Tue, 13 Dec 2022 19:45:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 85B94C433EF; Tue, 13 Dec 2022 19:45:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1670960715; bh=NHGfY35oR8EUPomUFOSE8wOPn7JdR+FoqlMQtXdmSMU=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=uR9/DP7L2uDAqlVUE8aGfyK71vLzOJdmIR/l9imEqXd2k6JsUuvHZ1O5EgPf1KmSv 8obVemZkBv1voc52Y86Emv/15cXmCGI6jout3NwbTOuFFaHmHuK/8KqAS3T+f/9bSF zR9pIk1AtvqfSiFefLTYDL/ONwDwQan/0SSahQgm8D4Wa4oB3PYKRad4cHuiHu8Xh1 tFPPItJIAkyLpf6v3Fp2ZI2NANJIHd9n8gameNH1wN5/hWI/dBdF818FP5YOS0Payy XfXy//i00y+/hE4/1xUd42Fed0W4DBpKQadXJrPb5lWXnjKkE5cghrUiQbtk+j7xPf h2HxPk+WP4e2w== Subject: [PATCH 1/4] common/populate: create helpers to handle restoring metadumps From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org, guan@eryu.me Date: Tue, 13 Dec 2022 11:45:15 -0800 Message-ID: <167096071510.1750373.2221240504175764288.stgit@magnolia> In-Reply-To: <167096070957.1750373.5715692265711468248.stgit@magnolia> References: <167096070957.1750373.5715692265711468248.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org From: Darrick J. Wong Refactor _scratch_populate_restore_cached so that the actual commands for restoring metadumps are filesystem-specific helpers. Signed-off-by: Darrick J. Wong Reviewed-by: Zorro Lang --- common/ext4 | 10 ++++++++++ common/fuzzy | 2 +- common/populate | 4 ++-- common/xfs | 9 +++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/common/ext4 b/common/ext4 index 4a2eaa157f..dc2e4e59cc 100644 --- a/common/ext4 +++ b/common/ext4 @@ -125,6 +125,16 @@ _ext4_metadump() $DUMP_COMPRESSOR -f "$dumpfile" &>> "$seqres.full" } +_ext4_mdrestore() +{ + local metadump="$1" + local device="$2" + shift; shift + local options="$@" + + $E2IMAGE_PROG $options -r "${metadump}" "${SCRATCH_DEV}" +} + # this test requires the ext4 kernel support crc feature on scratch device # _require_scratch_ext4_crc() diff --git a/common/fuzzy b/common/fuzzy index 2d688fd27b..fad79124e5 100644 --- a/common/fuzzy +++ b/common/fuzzy @@ -159,7 +159,7 @@ __scratch_xfs_fuzz_mdrestore() test -e "${POPULATE_METADUMP}" || _fail "Need to set POPULATE_METADUMP" __scratch_xfs_fuzz_unmount - $XFS_MDRESTORE_PROG "${POPULATE_METADUMP}" "${SCRATCH_DEV}" + _xfs_mdrestore "${POPULATE_METADUMP}" "${SCRATCH_DEV}" } __fuzz_notify() { diff --git a/common/populate b/common/populate index 6e00499734..f382c40aca 100644 --- a/common/populate +++ b/common/populate @@ -861,7 +861,7 @@ _scratch_populate_restore_cached() { case "${FSTYP}" in "xfs") - $XFS_MDRESTORE_PROG "${metadump}" "${SCRATCH_DEV}" + _xfs_mdrestore "${metadump}" "${SCRATCH_DEV}" res=$? test $res -ne 0 && return $res @@ -876,7 +876,7 @@ _scratch_populate_restore_cached() { return $res ;; "ext2"|"ext3"|"ext4") - $E2IMAGE_PROG -r "${metadump}" "${SCRATCH_DEV}" + _ext4_mdrestore "${metadump}" "${SCRATCH_DEV}" ret=$? test $ret -ne 0 && return $ret diff --git a/common/xfs b/common/xfs index f466d2c42f..27d6ac84e3 100644 --- a/common/xfs +++ b/common/xfs @@ -638,6 +638,15 @@ _xfs_metadump() { return $res } +_xfs_mdrestore() { + local metadump="$1" + local device="$2" + shift; shift + local options="$@" + + $XFS_MDRESTORE_PROG $options "${metadump}" "${device}" +} + # Snapshot the metadata on the scratch device _scratch_xfs_metadump() { From patchwork Tue Dec 13 19:45:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13072378 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9230EC4332F for ; Tue, 13 Dec 2022 19:45:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236595AbiLMTp0 (ORCPT ); Tue, 13 Dec 2022 14:45:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48220 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235551AbiLMTpY (ORCPT ); Tue, 13 Dec 2022 14:45:24 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3801EDFF6; Tue, 13 Dec 2022 11:45:24 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id CBE6C6171D; Tue, 13 Dec 2022 19:45:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3CA31C433EF; Tue, 13 Dec 2022 19:45:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1670960723; bh=JMP/OHGwFRI2ZlExeb50OJGCkOsRRZ+fywXAeZ+AJ40=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=UbJpoJF9CqCyrTtBWy0SKYnFno9Qb7orHMapb5gDgZMcqkqPXLxIRe4YFuqaEmGrf PTtsre8krKrbBNY5gs3i1WMufcK1FEr9C91Og80p1RcAL9yKs3Tvds/g3FCx9cnoDy c5e2Voe0qM7V9poUhFC7Pm3M8ZnHmJl94MZKt72j/E2/a6C7Cy/FKG/BT04BZyNjK9 4Caqn3ykgfv5yjUi1KqMl7olyY9g1SVJbu/YIT849mq1q33G7fDdokiOYQkH8W//Ab em0sWMVtCHYevsqqOAjMd7dBLgt5Lm0RE91uhvlGmDAzR60X62iVSQQW1PZY1rWiHc /Lmugm7NkNidg== Subject: [PATCH 2/4] common/xfs: create a helper for restoring metadumps to the scratch devs From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org, guan@eryu.me Date: Tue, 13 Dec 2022 11:45:20 -0800 Message-ID: <167096072069.1750373.18446461395763381324.stgit@magnolia> In-Reply-To: <167096070957.1750373.5715692265711468248.stgit@magnolia> References: <167096070957.1750373.5715692265711468248.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org From: Darrick J. Wong Refactor the open-coded $XFS_MDRESTORE_PROG calls into a proper _scratch_xfs_mdrestore helper. Signed-off-by: Darrick J. Wong Reviewed-by: Zorro Lang --- common/xfs | 9 +++++++++ tests/xfs/129 | 2 +- tests/xfs/234 | 2 +- tests/xfs/253 | 2 +- tests/xfs/284 | 2 +- tests/xfs/291 | 2 +- tests/xfs/336 | 2 +- tests/xfs/432 | 2 +- tests/xfs/503 | 8 ++++---- 9 files changed, 20 insertions(+), 11 deletions(-) diff --git a/common/xfs b/common/xfs index 27d6ac84e3..216dab3bcd 100644 --- a/common/xfs +++ b/common/xfs @@ -660,6 +660,15 @@ _scratch_xfs_metadump() _xfs_metadump "$metadump" "$SCRATCH_DEV" "$logdev" nocompress "$@" } +# Restore snapshotted metadata on the scratch device +_scratch_xfs_mdrestore() +{ + local metadump=$1 + shift + + _xfs_mdrestore "$metadump" "$SCRATCH_DEV" "$@" +} + # run xfs_check and friends on a FS. _check_xfs_filesystem() { diff --git a/tests/xfs/129 b/tests/xfs/129 index 09d40630d0..6f2ef5640d 100755 --- a/tests/xfs/129 +++ b/tests/xfs/129 @@ -53,7 +53,7 @@ _scratch_xfs_metadump $metadump_file # Now restore the obfuscated one back and take a look around echo "Restore metadump" -$XFS_MDRESTORE_PROG $metadump_file $TEST_DIR/image +SCRATCH_DEV=$TEST_DIR/image _scratch_xfs_mdrestore $metadump_file SCRATCH_DEV=$TEST_DIR/image _scratch_mount SCRATCH_DEV=$TEST_DIR/image _scratch_unmount diff --git a/tests/xfs/234 b/tests/xfs/234 index cc1ee9a8ca..57d447c056 100755 --- a/tests/xfs/234 +++ b/tests/xfs/234 @@ -53,7 +53,7 @@ _scratch_xfs_metadump $metadump_file # Now restore the obfuscated one back and take a look around echo "Restore metadump" -$XFS_MDRESTORE_PROG $metadump_file $TEST_DIR/image +SCRATCH_DEV=$TEST_DIR/image _scratch_xfs_mdrestore $metadump_file SCRATCH_DEV=$TEST_DIR/image _scratch_mount SCRATCH_DEV=$TEST_DIR/image _scratch_unmount diff --git a/tests/xfs/253 b/tests/xfs/253 index 1cfc218088..ce90247777 100755 --- a/tests/xfs/253 +++ b/tests/xfs/253 @@ -152,7 +152,7 @@ _scratch_unmount _scratch_xfs_metadump $METADUMP_FILE # Now restore the obfuscated one back and take a look around -$XFS_MDRESTORE_PROG "${METADUMP_FILE}" "${SCRATCH_DEV}" +_scratch_xfs_mdrestore "$METADUMP_FILE" _scratch_mount diff --git a/tests/xfs/284 b/tests/xfs/284 index e2bd05d4c7..58f330035e 100755 --- a/tests/xfs/284 +++ b/tests/xfs/284 @@ -49,7 +49,7 @@ _scratch_unmount # xfs_mdrestore should refuse to restore to a mounted device _scratch_xfs_metadump $METADUMP_FILE _scratch_mount -$XFS_MDRESTORE_PROG $METADUMP_FILE $SCRATCH_DEV 2>&1 | filter_mounted +_scratch_xfs_mdrestore $METADUMP_FILE 2>&1 | filter_mounted _scratch_unmount # Test xfs_copy to a mounted device diff --git a/tests/xfs/291 b/tests/xfs/291 index f5fea7f9a5..600dcb2eba 100755 --- a/tests/xfs/291 +++ b/tests/xfs/291 @@ -93,7 +93,7 @@ _scratch_xfs_check >> $seqres.full 2>&1 || _fail "xfs_check failed" # Yes they can! Now... # Can xfs_metadump cope with this monster? _scratch_xfs_metadump $tmp.metadump || _fail "xfs_metadump failed" -$XFS_MDRESTORE_PROG $tmp.metadump $tmp.img || _fail "xfs_mdrestore failed" +SCRATCH_DEV=$tmp.img _scratch_xfs_mdrestore $tmp.metadump || _fail "xfs_mdrestore failed" SCRATCH_DEV=$tmp.img _scratch_xfs_repair -f &>> $seqres.full || \ _fail "xfs_repair of metadump failed" diff --git a/tests/xfs/336 b/tests/xfs/336 index ee8ec649cb..5bcac976e4 100755 --- a/tests/xfs/336 +++ b/tests/xfs/336 @@ -65,7 +65,7 @@ _scratch_xfs_metadump $metadump_file # Now restore the obfuscated one back and take a look around echo "Restore metadump" -$XFS_MDRESTORE_PROG $metadump_file $TEST_DIR/image +SCRATCH_DEV=$TEST_DIR/image _scratch_xfs_mdrestore $metadump_file SCRATCH_DEV=$TEST_DIR/image _scratch_mount SCRATCH_DEV=$TEST_DIR/image _scratch_unmount diff --git a/tests/xfs/432 b/tests/xfs/432 index 676be9bd8a..66315b0398 100755 --- a/tests/xfs/432 +++ b/tests/xfs/432 @@ -87,7 +87,7 @@ test -n "$extlen" || _notrun "could not create dir extent > 1000 blocks" echo "Try to metadump" _scratch_xfs_metadump $metadump_file -w -$XFS_MDRESTORE_PROG $metadump_file $metadump_img +SCRATCH_DEV=$metadump_img _scratch_xfs_mdrestore $metadump_file echo "Check restored metadump image" SCRATCH_DEV=$metadump_img _scratch_xfs_repair -n &>> $seqres.full || \ diff --git a/tests/xfs/503 b/tests/xfs/503 index 18bd8694c8..c786b04ccd 100755 --- a/tests/xfs/503 +++ b/tests/xfs/503 @@ -66,25 +66,25 @@ _check_scratch_fs _scratch_unmount echo mdrestore -$XFS_MDRESTORE_PROG $metadump_file $SCRATCH_DEV +_scratch_xfs_mdrestore $metadump_file _scratch_mount _check_scratch_fs _scratch_unmount echo mdrestore a -$XFS_MDRESTORE_PROG $metadump_file_a $SCRATCH_DEV +_scratch_xfs_mdrestore $metadump_file_a _scratch_mount _check_scratch_fs _scratch_unmount echo mdrestore g -$XFS_MDRESTORE_PROG $metadump_file_g $SCRATCH_DEV +_scratch_xfs_mdrestore $metadump_file_g _scratch_mount _check_scratch_fs _scratch_unmount echo mdrestore ag -$XFS_MDRESTORE_PROG $metadump_file_ag $SCRATCH_DEV +_scratch_xfs_mdrestore $metadump_file_ag _scratch_mount _check_scratch_fs _scratch_unmount From patchwork Tue Dec 13 19:45:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13072379 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B59FC4167B for ; Tue, 13 Dec 2022 19:45:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236698AbiLMTpg (ORCPT ); Tue, 13 Dec 2022 14:45:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48242 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236598AbiLMTpc (ORCPT ); Tue, 13 Dec 2022 14:45:32 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 44B7DDFF6; Tue, 13 Dec 2022 11:45:31 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 063A7B815B8; Tue, 13 Dec 2022 19:45:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C5684C433EF; Tue, 13 Dec 2022 19:45:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1670960728; bh=Jq4mcCZHzQr3OwJ4AuuydW8oYpvMvT5dI8HY95TkQAc=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=m64SX0Y1Ana7UB8t5x2E7pXC0jwripDkhD/CPkUPvTxT/ABah8tl0lLslkjy2FBYP TqMZ3nYOoCl3w+ajO/wis4oI4waDkdBcmA37g3WXT4mhekI9ExiaTtflkbX4ezthKV /uP+LsiscCE2w7BcpN5NvpQeOLpztX3evpPD/JxMm0xzomVD9v/Z5KIjqqmmsJ79pR /ZXH+FOOntBATRW2bxsNtPuCTtubcZtwwkdKrLITK1zUHjxh3/u8l3FeWkNgT8Jgx2 cV2MZE5zgsP2PaqBXt7F06F19qauzTslm6WT8tWf+yWpiTsZH5IJOz8gqhqh1HVmK5 xlr97QuaD+XjQ== Subject: [PATCH 3/4] common/populate: move decompression code to _{xfs,ext4}_mdrestore From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org, guan@eryu.me Date: Tue, 13 Dec 2022 11:45:28 -0800 Message-ID: <167096072838.1750373.11954125201906427521.stgit@magnolia> In-Reply-To: <167096070957.1750373.5715692265711468248.stgit@magnolia> References: <167096070957.1750373.5715692265711468248.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org From: Darrick J. Wong Move the metadump decompression code to the per-filesystem mdrestore commands so that everyone can take advantage of them. This enables the XFS and ext4 _mdrestore helpers to handle metadata dumps compressed with their respective _metadump helpers. In turn, this means that the xfs fuzz tests can now handle the compressed metadumps created by the _scratch_populate_cached helper. This is key to unbreaking fuzz testing for xfs. Signed-off-by: Darrick J. Wong --- common/ext4 | 13 ++++++++++++- common/fuzzy | 2 +- common/populate | 15 ++------------- common/xfs | 15 +++++++++++++-- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/common/ext4 b/common/ext4 index dc2e4e59cc..cadf1a7974 100644 --- a/common/ext4 +++ b/common/ext4 @@ -129,9 +129,20 @@ _ext4_mdrestore() { local metadump="$1" local device="$2" - shift; shift + local compressopt="$3" + shift; shift; shift local options="$@" + # If we're configured for compressed dumps and there isn't already an + # uncompressed dump, see if we can use DUMP_COMPRESSOR to decompress + # something. + if [ ! -e "$metadump" ] && [ -n "$DUMP_COMPRESSOR" ]; then + for compr in "$metadump".*; do + [ -e "$compr" ] && $DUMP_COMPRESSOR -d -f -k "$compr" && break + done + fi + test -r "$metadump" || return 1 + $E2IMAGE_PROG $options -r "${metadump}" "${SCRATCH_DEV}" } diff --git a/common/fuzzy b/common/fuzzy index fad79124e5..e634815eec 100644 --- a/common/fuzzy +++ b/common/fuzzy @@ -159,7 +159,7 @@ __scratch_xfs_fuzz_mdrestore() test -e "${POPULATE_METADUMP}" || _fail "Need to set POPULATE_METADUMP" __scratch_xfs_fuzz_unmount - _xfs_mdrestore "${POPULATE_METADUMP}" "${SCRATCH_DEV}" + _xfs_mdrestore "${POPULATE_METADUMP}" "${SCRATCH_DEV}" compress } __fuzz_notify() { diff --git a/common/populate b/common/populate index f382c40aca..96866ee4cf 100644 --- a/common/populate +++ b/common/populate @@ -848,20 +848,9 @@ _scratch_populate_cache_tag() { _scratch_populate_restore_cached() { local metadump="$1" - # If we're configured for compressed dumps and there isn't already an - # uncompressed dump, see if we can use DUMP_COMPRESSOR to decompress - # something. - if [ -n "$DUMP_COMPRESSOR" ]; then - for compr in "$metadump".*; do - [ -e "$compr" ] && $DUMP_COMPRESSOR -d -f -k "$compr" && break - done - fi - - test -r "$metadump" || return 1 - case "${FSTYP}" in "xfs") - _xfs_mdrestore "${metadump}" "${SCRATCH_DEV}" + _xfs_mdrestore "${metadump}" "${SCRATCH_DEV}" compress res=$? test $res -ne 0 && return $res @@ -876,7 +865,7 @@ _scratch_populate_restore_cached() { return $res ;; "ext2"|"ext3"|"ext4") - _ext4_mdrestore "${metadump}" "${SCRATCH_DEV}" + _ext4_mdrestore "${metadump}" "${SCRATCH_DEV}" compress ret=$? test $ret -ne 0 && return $ret diff --git a/common/xfs b/common/xfs index 216dab3bcd..833c2f4368 100644 --- a/common/xfs +++ b/common/xfs @@ -641,9 +641,20 @@ _xfs_metadump() { _xfs_mdrestore() { local metadump="$1" local device="$2" - shift; shift + local compressopt="$3" + shift; shift; shift local options="$@" + # If we're configured for compressed dumps and there isn't already an + # uncompressed dump, see if we can use DUMP_COMPRESSOR to decompress + # something. + if [ ! -e "$metadump" ] && [ -n "$DUMP_COMPRESSOR" ]; then + for compr in "$metadump".*; do + [ -e "$compr" ] && $DUMP_COMPRESSOR -d -f -k "$compr" && break + done + fi + test -r "$metadump" || return 1 + $XFS_MDRESTORE_PROG $options "${metadump}" "${device}" } @@ -666,7 +677,7 @@ _scratch_xfs_mdrestore() local metadump=$1 shift - _xfs_mdrestore "$metadump" "$SCRATCH_DEV" "$@" + _xfs_mdrestore "$metadump" "$SCRATCH_DEV" nocompress "$@" } # run xfs_check and friends on a FS. From patchwork Tue Dec 13 19:45:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13072380 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C4405C10F31 for ; Tue, 13 Dec 2022 19:45:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236598AbiLMTph (ORCPT ); Tue, 13 Dec 2022 14:45:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236663AbiLMTpg (ORCPT ); Tue, 13 Dec 2022 14:45:36 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 598D02495F; Tue, 13 Dec 2022 11:45:35 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id E9C5161714; Tue, 13 Dec 2022 19:45:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 52538C433D2; Tue, 13 Dec 2022 19:45:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1670960734; bh=ltWqaiufNC3gpMLFPtfkgj/+btiwZFyTbXZV4MkwhP8=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=Kh1+AJvsjOcMJ+7Rmjd2tTPcxqCQjLn++kljYUjCvHTKHEa3HILzMDnnYEj81SqLh NVEvR5nrhvIr9kxQca4MjgOPRDS0Q2lt8Ys59qzmUj0lT/8sXslJY9yoSHhcMnN4ej SWyb2N6jNSDOtVX1Lb2Uk6zp0ILY+19mR4MSokzdnDZsVuBhtVVWqtss7qG7TSZVIN ZsqaPXKxkVHHRQaIPZYEvJYriV7X0cYSW7rWnsZF6aWiIqMUP0gNp2QpseXE4IPADl O51r7GxdqOebvfu110BYEV8yH5aDNB4Csh+LI6ntBVdL91Y6hKrHZL1/kyy2xw+1gc YEVumQ3vW+ewg== Subject: [PATCH 4/4] fuzzy: don't fail on compressed metadumps From: "Darrick J. Wong" To: djwong@kernel.org, zlang@redhat.com Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org, guan@eryu.me Date: Tue, 13 Dec 2022 11:45:33 -0800 Message-ID: <167096073394.1750373.2942809607367883189.stgit@magnolia> In-Reply-To: <167096070957.1750373.5715692265711468248.stgit@magnolia> References: <167096070957.1750373.5715692265711468248.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org From: Darrick J. Wong This line in __scratch_xfs_fuzz_mdrestore: test -e "${POPULATE_METADUMP}" Breaks spectacularly on a setup that uses DUMP_COMPRESSOR to compress the metadump files, because the metadump files get the compression program added to the name (e.g. "${POPULATE_METADUMP}.xz"). The check is wrong, and since the naming policy is an implementation detail of _xfs_mdrestore, let's get rid of the -e test. However, we still need a way to fail the test if the metadump cannot be restored. _xfs_mdrestore returns nonzero on failure, so use that instead. Signed-off-by: Darrick J. Wong Reviewed-by: Zorro Lang --- common/fuzzy | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/fuzzy b/common/fuzzy index e634815eec..49c850f2d5 100644 --- a/common/fuzzy +++ b/common/fuzzy @@ -156,10 +156,9 @@ __scratch_xfs_fuzz_unmount() # Restore metadata to scratch device prior to field-fuzzing. __scratch_xfs_fuzz_mdrestore() { - test -e "${POPULATE_METADUMP}" || _fail "Need to set POPULATE_METADUMP" - __scratch_xfs_fuzz_unmount - _xfs_mdrestore "${POPULATE_METADUMP}" "${SCRATCH_DEV}" compress + _xfs_mdrestore "${POPULATE_METADUMP}" "${SCRATCH_DEV}" compress || \ + _fail "${POPULATE_METADUMP}: Could not find metadump to restore?" } __fuzz_notify() {