From patchwork Tue Oct 29 12:09:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sheng Yong X-Patchwork-Id: 13854829 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 lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4373AD2AB30 for ; Tue, 29 Oct 2024 12:12:15 +0000 (UTC) Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1t5l54-00044k-TZ; Tue, 29 Oct 2024 12:12:14 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1t5l53-00044N-Qp for linux-f2fs-devel@lists.sourceforge.net; Tue, 29 Oct 2024 12:12:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=MIME-Version:Content-Type:Content-Transfer-Encoding :References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=mjkCV3Ra+l0qYLj4JLSUG7YBWRHNs95IifUoKflIWOw=; b=nWHOuaP3nA5PfIuyUhZ4xUb2Ix 25K4aRsrH05GoW+2xcXi0D5Z586NvLnraiVsStXoxj8pzNL2U13lEi4ee5Qql5gBbXNDrXKCoAA9w 1kE5o2ciRkNslMdi1iMZUNRufw1/2u+Q8C0JTN4Pz0CJKUuARYHYsKvKBfFlCFCEFTbE=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=MIME-Version:Content-Type:Content-Transfer-Encoding:References: In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=mjkCV3Ra+l0qYLj4JLSUG7YBWRHNs95IifUoKflIWOw=; b=SKLAZCoqu3I3dqphBsADdFcQr6 tCQ97739nYndxK+BIhVWekbeM67cwm4g/B2tMhW6PT4xSim4gej2SUYJJf6cECmBSC6t876sEiTfV hFpV/U+fC9Z6K38c09CUPrODYFrFUbD0pQqTZUzDpa4s3Vx6fNwdxhNXVyiE7/Hyvfvk=; Received: from mail-koreacentralazon11013051.outbound.protection.outlook.com ([40.107.44.51] helo=SEYPR02CU001.outbound.protection.outlook.com) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1t5l50-0007Sn-8R for linux-f2fs-devel@lists.sourceforge.net; Tue, 29 Oct 2024 12:12:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CJX9Yjv+zyJUF8/QG3ocouApFIzv7lMIYskLzrtYT/BtX6p3Cx01SYdwq91EIbzBBJSX4P7JlWODG0Ur0gx+SoMqBnStAmkvUFyTgf0ulmsREsETNVZVealBFkfCK8+VN1c2mzYRnVq+ct2sm4sSqb7tVPf8un9pv4sNaE/2/rY8iz5IPUEweIOTCTocz//u/iQbEeMONkSulvOrP1/kmzbYXTzWAhKA7XDuLvRuHvh+GLIZS7ga4ksKQ57ol21wn5ENb7iMltLxRCJ8x+CO6RfmeiGWyqu9lH9xLtxcdNZYh3d68obXQCPjfoHTP75CIdpFwDoiYeSxeeq7gNSBgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mjkCV3Ra+l0qYLj4JLSUG7YBWRHNs95IifUoKflIWOw=; b=LXrfUDtCDOxa+ZnmMicUr/M0JOZXP94YFApeM5wen1fHx1k2r2qXfKs8yo1dKiq8sumDA7G8HhzUv+X7MibpsOyD9T4P1mV697BgIuX+5En5wdTipIUe+aXwjeUbLIxOu0Y8Tg8pnB8W0chGRRNdiDp5fv6hbl5VNZ7UAGmojYFlkgSkFxL5P6JxiUFNnTsW3Rdz6r+FRAGCG9dMyB/5HJ29vj+P42m4F6twHZsQaeMAdr0CmSNjhoSgrMZ2oGEJno0pUHqiURtV+yCMUyhrUsFWhqQvGDoAbj+0FC8sB3aFh47AQC8Kao+/TdiLEvttjLF3mtPu70JgePaxZRTOqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oppo.com; dmarc=pass action=none header.from=oppo.com; dkim=pass header.d=oppo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oppo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mjkCV3Ra+l0qYLj4JLSUG7YBWRHNs95IifUoKflIWOw=; b=apmJYLEslMll7yAlnTEgI1GkwtlA1IzaYBGyTDr9DmUgkdphRKnP/UgfJw6rUp0qjiWTOzFSyquYcrCHWIaH2XdVf+O7jth50/BZUmJaGox7/8cjATmKrDy+sLwg5zUQxW0V0BlitjLTn6wwQiDW0UfEnhbMz57wOu6VQTaSsWY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oppo.com; Received: from SEYPR02MB6014.apcprd02.prod.outlook.com (2603:1096:101:6b::10) by TY0PR02MB6982.apcprd02.prod.outlook.com (2603:1096:405:e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.25; Tue, 29 Oct 2024 12:11:56 +0000 Received: from SEYPR02MB6014.apcprd02.prod.outlook.com ([fe80::bb06:c283:a50:7796]) by SEYPR02MB6014.apcprd02.prod.outlook.com ([fe80::bb06:c283:a50:7796%7]) with mapi id 15.20.8093.023; Tue, 29 Oct 2024 12:11:56 +0000 To: jaegeuk@kernel.org, chao@kernel.org Date: Tue, 29 Oct 2024 20:09:56 +0800 Message-Id: <20241029120956.4186731-25-shengyong@oppo.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20241029120956.4186731-1-shengyong@oppo.com> References: <20241029120956.4186731-1-shengyong@oppo.com> X-ClientProxiedBy: SG2PR01CA0175.apcprd01.prod.exchangelabs.com (2603:1096:4:28::31) To SEYPR02MB6014.apcprd02.prod.outlook.com (2603:1096:101:6b::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SEYPR02MB6014:EE_|TY0PR02MB6982:EE_ X-MS-Office365-Filtering-Correlation-Id: 8629016b-d582-4065-2cfc-08dcf812e1dd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|376014|52116014|38350700014; X-Microsoft-Antispam-Message-Info: C+C39dUzposgteov/UCzYd7aXi4qkE1KWzjf61aiW3syoy3LnZWI2kWnZXsjc2+EFRLqHl7ExeeHEcTe3Oy6kJPJzxQDXMYuEKOlbWEAVI/7JvNihHGMV8rwnNWUAQEMfCdRq0dbXHAGPFz0nP1bwyHzKFJnaFKN0IkVJlyOS0ypz2PbsEMvwlgA4TfLwd66UOd3wRlNw0SSkkj35+wT1ObdYFb2UF3pwItG7bASqCSIawv34+Z75QuhrDOhKnLI5sKJbYWyzotrJ4fYWNLDyb903UpE/SNjnQB1L5lccwaB6TMxQQbg1Q6GeXndlw67SApWgJ1deBD2ImYBzu9TppR/aFbQzV0kgmWXhsmH5O0MT45PpJq9MCUYWXN3nrOYI8XetMnoOFHbb4EWN+PqdKFYnaAR39UF0lYkRZ5GTYcsQVlTJ4Uxmh52u8K6aI8CJxK0ovUnyacKLuVlyP1Yl6aQhJnIf3AGi3gQewWb+3EjmKYiNee7yrMV9rwn9vijSDVu+lAEZmCqg+a0QDMWHEzSkkmOcJQZ3H4gLzcTzkI3ysb5s/EYAKOUa0xRFauCSAiV540KfVwywifbgM99snVkXSk4jR/fkYqAUAKajXZcQRN3NU6Di30GRKgB8kroyLmG0KCpcLVyA4v9tJR+XlfxTM8VeWQJe9UmnKiuhBD+gkb8kj4BFe1/clGMsLpY3kn4ti+ZiUOtoG8T84KUjq8m+7dj4bmSR75XwmGBjvZh9Va+H1wMDd3/oOIzS+kGFNKq0cdWk1rhlEyHqVzAVQLy29i2PgpNm0+I6vAUB6yNdP4JCtl31WhtngkfFdZb06ni9Q2Azgob2eeul0hLNPAhFGH9iG2vkKiOMBoRz4k5EaSB2MBmPV4DFvYlT1a+mV6xb9fRC5S04SFxVcCIeu8VtQ3GQdvWxVbUxp9YxNOdAdtXNI3BYDura/WJVzFcaMvkqKAF54T5+jA3ewpYeqMYy5W67vcWzMogTpQVsPMEH4cpJzCMNZaflussvR0QvN+LA9zPybAonSsmP5TUeKEwFAZIvEzSrkTp7IRcG4/iNUN963BOOjoA/cBCCfusUOH43CuWcBmio/+6sptS6LE7tIZu9VaPczG3PHoGvq0gLZAjqpVZAzjHQ3O6+m1K9kR8UsVOMgz4yGI9lugiRYltgCC684vpgVisAu5TVVE9trH2Vy5dSr0E+W4dlVDh4TsGP0eMsebk7EgNOJ0iQz1QE133C29VDxgIm4dgsGPg8/ssIAKCl3imTrdlK7G4CWnrvMY0LXIeVpKyoRJtQbklXjv5/0LNhoKZD9DePr7cq5PENEQIUTThHq49h3JE5Q/WHJpOyB6chuBb1BD/uY2PDHay6YItsAsBpfKXdGw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SEYPR02MB6014.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(52116014)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: t5MEyStuM9AY8B9JIM1o6K7YDUahXf8tqzqF48Akp+wTP6qB9i26nBFsaeV0aeFwTDUfnRlxDjDbW2eR1K1pl8Xl+n/EqZV+sWVGWt4rF8zaGYg8Pb7nVLkx7t6THaYgUY7j/nnkouaO1VOChiZfdLv4liOYv54Q++ZxW3h+YwF/cUU07iuKCxuj1mmY+/V5yNcs2EPKjYTbTYNRGnkbtl1RoeOdV+GcjzmaJTliypS7JUYwddZZN3lfVvTQ1BUxrsMbYNuKxoz5AKNq11CPLtJ50IMyHajMn0fxNa47fSlrx+vrzylSbFvfwf/L479HHPz7jS/oVthG3i2YRloRC5x0k9tFwqgtUKhiHt2I0PsxZszvBVpU8c1TauerSYfjG6Hn0pzJ6waEc6sGs+lqNBflSj7faJ6CY0ABl3Q1VjPdhuW0fpYJg3NyPxilFR0OIbmLATQzq+SD4kkLbG7bS3v1cJGAtr0VrzEK7WXWUvpkJ0PwYULgmbLU4MhwR5iVOeMDekq9n5MmiVlrRa9nY7+lP4CO7zpxcad5Fk5VQbp7IdBd3bHpfAUlARpgTalOEM5Nk0GYlixY1SogiYVUwJq3XmN1uAJjX87s0Dbv0ZdUx8+/Gf2M4aq+Ykc9sCLWBhejXdhwoaslt2stysOLruD+rMD1Qlr+1SWjTX8llyrq+rNNFizjohnoXABuvrNX2hcx9WSwZDGhbHIdpPwBHf4guaG0oyqnO2hJn9z5gURZWMEsZ8ogfVrgT12tHoPdCTi6YGlsBbZQOFlv7Qc2ski2tMsriRfLqrETs5vw0KWusy1kUNNVVX1mhPEc0AhML+tWkZVA5Z3+STsqcScPNgKlL0gzVG8/iMsY3oOfz7RUmdbGT3+/V/RavJ3h5U0VQSM+6HzWh8r4nsyChoPlrD+A03fwd38MSqSBrok7MBjKNrgrJSrXdoDAA2cEtr8Qc/lTpV6wVfd7xsZinzsCuQQIfjOOvG7He25zqzAt5a11oP3DnzywhpVkGj0Meaj3TSC85dzx3SwQX/bLoMr0knFfKJsbtRTBiD1KCLY2fMvAW8h7OFqs7FkkpMI008HwYgztHUaf91dzFcnDiu9sfgxMYs0PDJElGZbUAjCw7ttY3HxqQ9WFjY9DlrxShsoAC2UQ9kqFufg8sbJGonO+xi38xsnRJFFEkhnhRWLqp3bmpXNkIWLe7QAMsnseu6dgXZkzOPNDiHDETPxCm3cTaqWGEEPQOqowMU00vOFowkqzCtlP1+xwmd3KDXD0v1pcvFLHqznHV6oL3onNt6l2qua5h/qVUgt/ZTU2q0ZFIZfN3DMM0rKpbGLhs8i3dcjFYT9mWNCXoDRGspBhCBLJpoPQCs8O7m1heqQj4YH9nXKYNaUU7VE4b0rQ7ineQxqwPWSLY1ywcrfr+u+0g8IwEVDdnsQ882QI1ZyvchgYNRMifL0Nv4T3uBKsL9kT3nBE/EuxLgEAdr+bh+rcXAoJnJD/EgFXmeGg37lIp1TK0tiIUbksnU6AgVPFSIxtAIpXa2EvkBLrvy+6cbWqtS0cjvgLfJaACphEHERpsbxQeowGDTDOfMOaH7sVAQN2/5wm X-OriginatorOrg: oppo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8629016b-d582-4065-2cfc-08dcf812e1dd X-MS-Exchange-CrossTenant-AuthSource: SEYPR02MB6014.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2024 12:11:56.4879 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f1905eb1-c353-41c5-9516-62b4a54b5ee6 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rz02QyiTZnMXGEczMfAOuk58y0OwbYTxkLXf5f9Skn0zz4ZrARQUi/wPZ5D6YPd3h5FtCMHpo00nC+ry9EX2cg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR02MB6982 X-Headers-End: 1t5l50-0007Sn-8R Subject: [f2fs-dev] [RFC PATCH 24/24] tests: add fsck testcase of fixing loop fsync dnodes X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Sheng Yong via Linux-f2fs-devel From: Sheng Yong Reply-To: Sheng Yong Cc: linux-f2fs-devel@lists.sourceforge.net Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net Signed-off-by: Sheng Yong --- tests/f_loop_fsync_dnodes/README | 39 +++++++++++++++++++++++++ tests/f_loop_fsync_dnodes/expect.in | 40 ++++++++++++++++++++++++++ tests/f_loop_fsync_dnodes/imgs.tar.gz | Bin 0 -> 173228 bytes tests/f_loop_fsync_dnodes/script | 16 +++++++++++ 4 files changed, 95 insertions(+) create mode 100644 tests/f_loop_fsync_dnodes/README create mode 100644 tests/f_loop_fsync_dnodes/expect.in create mode 100644 tests/f_loop_fsync_dnodes/imgs.tar.gz create mode 100644 tests/f_loop_fsync_dnodes/script diff --git a/tests/f_loop_fsync_dnodes/README b/tests/f_loop_fsync_dnodes/README new file mode 100644 index 000000000000..77dcba497f2d --- /dev/null +++ b/tests/f_loop_fsync_dnodes/README @@ -0,0 +1,39 @@ +1. prepare f2fs image with fsync dnodes: + + mkfs.f2fs $MKFS_OPTS $META + mkdir mntdir + mount $META mntdir -o mode=lfs + touch mntdir/testfile + f2fs_io checkpoint mntdir/testfile + fio -rw=write -bs=4k -direct=0 -size=4k -numjobs=10 -name=testfile -fsync_on_close=1 -group_reporting -stats=0 --output=/dev/null -directory=mntdir + f2fs_io shutdown 2 mntdir/testfile + umount mntdir + +2. inject fsync dnodes to generate a loop + + inject.f2fs --dry-run --cp 0 --mb next_blkaddr --idx 1 --val 0 $META + [inject_cp: 592] [ 0] blkaddr:0x1201 + [inject_cp: 592] [ 1] blkaddr:0x1202 + [inject_cp: 592] [ 2] blkaddr:0x1203 + [inject_cp: 592] [ 3] blkaddr:0x1204 + [inject_cp: 592] [ 4] blkaddr:0x1205 + [inject_cp: 592] [ 5] blkaddr:0x1206 + [inject_cp: 592] [ 6] blkaddr:0x1207 + [inject_cp: 592] [ 7] blkaddr:0x1208 + [inject_cp: 592] [ 8] blkaddr:0x1209 + [inject_cp: 592] [ 9] blkaddr:0x120a + inject.f2fs --cp 0 --mb next_blkaddr --idx 6 --val 0x1202 $META + [inject_cp: 592] [ 0] blkaddr:0x1201 + [inject_cp: 592] [ 1] blkaddr:0x1202 + [inject_cp: 592] [ 2] blkaddr:0x1203 + [inject_cp: 592] [ 3] blkaddr:0x1204 + [inject_cp: 592] [ 4] blkaddr:0x1205 + [inject_cp: 592] [ 5] blkaddr:0x1206 + [inject_cp: 592] [ 6] blkaddr:0x1207 + [inject_cp: 592] [ 7] blkaddr:0x1208 + [inject_cp: 592] [ 8] blkaddr:0x1209 + [inject_cp: 592] [ 9] blkaddr:0x120a + Info: inject next_blkaddr[6] of cp 2: 0x1207 -> 0x1202 + tar cf - meta.img | gzip -9 - > imgs.tar.gz + +3. fsck fixes fsync dnodes by breaking the loop diff --git a/tests/f_loop_fsync_dnodes/expect.in b/tests/f_loop_fsync_dnodes/expect.in new file mode 100644 index 000000000000..3f0790224663 --- /dev/null +++ b/tests/f_loop_fsync_dnodes/expect.in @@ -0,0 +1,40 @@ +Info: Force to fix corruption +[ASSERT] (sanity_check_node_chain:x) --> detect looped node chain, blkaddr:4615 + +[FIX] (loop_node_chain_fix:x) --> Fix looped node chain on blkaddr 4615 + +Info: Write valid nat_bits in checkpoint +Info: checkpoint state = x : nat_bits crc compacted_summary sudden-power-off + +[FSCK] Unreachable nat entries [Ok..] [x] +[FSCK] SIT valid block bitmap checking [Ok..] +[FSCK] Hard link checking for regular file [Ok..] [x] +[FSCK] valid_block_count matching with CP [Ok..] [x] +[FSCK] valid_node_count matching with CP (de lookup) [Ok..] [x] +[FSCK] valid_node_count matching with CP (nat lookup) [Ok..] [x] +[FSCK] valid_inode_count matched with CP [Ok..] [x] +[FSCK] free segment_count matched with CP [Ok..] [x] +[FSCK] next block offset is free [Ok..] +[FSCK] fixing SIT types +[FSCK] other corrupted bugs [Fail] +Info: Duplicate valid checkpoint to mirror position x -> x +Info: Write valid nat_bits in checkpoint +Info: write_checkpoint() cur_cp:x +Info: Write valid nat_bits in checkpoint +Info: fix_checkpoint() cur_cp:x + +Info: Force to fix corruption +Info: checkpoint state = x : allow_nocrc nat_bits sudden-power-off + +[FSCK] Unreachable nat entries [Ok..] [x] +[FSCK] SIT valid block bitmap checking [Ok..] +[FSCK] Hard link checking for regular file [Ok..] [x] +[FSCK] valid_block_count matching with CP [Ok..] [x] +[FSCK] valid_node_count matching with CP (de lookup) [Ok..] [x] +[FSCK] valid_node_count matching with CP (nat lookup) [Ok..] [x] +[FSCK] valid_inode_count matched with CP [Ok..] [x] +[FSCK] free segment_count matched with CP [Ok..] [x] +[FSCK] next block offset is free [Ok..] +[FSCK] fixing SIT types +[FSCK] other corrupted bugs [Ok..] + diff --git a/tests/f_loop_fsync_dnodes/imgs.tar.gz b/tests/f_loop_fsync_dnodes/imgs.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a4e5d75b002377f23ef5f69f6928396e24afcb7 GIT binary patch literal 173228 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%0D3EHBTn((Za+xzN(Bj<0xISgyCz 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 C*7Aw~ literal 0 HcmV?d00001 diff --git a/tests/f_loop_fsync_dnodes/script b/tests/f_loop_fsync_dnodes/script new file mode 100644 index 000000000000..adce57c686c6 --- /dev/null +++ b/tests/f_loop_fsync_dnodes/script @@ -0,0 +1,16 @@ +#!/bin/bash + +DESC="recover loop fsync dnodes" + +. $TOPDIR/tests/helpers + +cleanup pre > $LOG 2>&1 + +tar xf $TESTDIR/imgs.tar.gz -C $TESTDIR/../ + +$FSCK $FSCK_OPTS -f $META > $OUT 2>&1 +$FSCK $FSCK_OPTS -f $META >> $OUT 2>&1 +cat $OUT >> $LOG + +check_result +cleanup post >> $LOG 2>&1