From patchwork Mon Jun 24 13:55:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sheng Yong X-Patchwork-Id: 13709540 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 3FAA1C2BD09 for ; Mon, 24 Jun 2024 13:56:10 +0000 (UTC) Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1sLkAx-00026d-AL; Mon, 24 Jun 2024 13:56:07 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1sLkAw-00026M-2D for linux-f2fs-devel@lists.sourceforge.net; Mon, 24 Jun 2024 13:56:06 +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 :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:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=9GkPvUNVsdFXB93WA+bb+Fjm+hmAqDXEKGA+foASdLQ=; b=XeEH/v3k+42pLZdjSXRZGZhQas ABtaivk5LYpVrNKtb9X5CsGFIFRBcaV4iXDLm0y1nLUAadJNdmxqPbCUKx2xQzbSmIOaqFiSK0NyE gLbJ6CJj8rhEHVsMTpOs740mn4gUjmq+Kf5nigbaxQmhJYqGTb4gjbuQxXYBaXGw7bFY=; 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: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:In-Reply-To: References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post: List-Owner:List-Archive; bh=9GkPvUNVsdFXB93WA+bb+Fjm+hmAqDXEKGA+foASdLQ=; b=Z EZU6aVt+Yp+OI6tI1SxqUEBdGtWLJX4J/4i/1jrxMMiMnraKmDveQ0tLRB2LEjAhEr7vvYquMWiXO Qo4s/M/yx505GYGndIt8/ERs2frkVMGTjzCsx3FYrA5FYNmwthHmrfYr7ZuiE3ts6wG3Xin0UJhVD pkFw8qi7BmBqB+G4=; Received: from mail-sgaapc01on2083.outbound.protection.outlook.com ([40.107.215.83] helo=APC01-SG2-obe.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 1sLkAt-00018a-1S for linux-f2fs-devel@lists.sourceforge.net; Mon, 24 Jun 2024 13:56:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VT+vDwD/+r1gJV3nqWKDu+kI7ZeL3QA6UpGj7+MHsWrNbSFMwpNPHQdpXINTYl1ulx/vBtXQTLxZkdmW1nIYFdejqCOmoXceslTSY07alSPa6iaJQ5yMGuzZYyJouXSVQhiGzGcd4QtxXUQDS99/7C8Ci2MwvU1COq8fx/jPHi3lUdkXV7gNiYOtjdSu72t58FxDwcy+M+zUqHniKqE5m7bipsEv3WmNqz7D/WUNZ+qAD8y0LLOAUf6VZbIsto8+1Mf5fCawh8uQQZG4W2BY++rPoK6NHdHSYfkoKdCnL18pHrOqHGkYDHfjnWghIh9u5r/EJkY/9IEhVBoSxPa3LA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=9GkPvUNVsdFXB93WA+bb+Fjm+hmAqDXEKGA+foASdLQ=; b=m7tXp/uJjA30QyV4kmZ0o9zAksEwc5DIcpNCi5ELcKhTgdqT0ST414WAF2dZfiQEXkxNtQxfesk76Rxlcd5F1D1s0bIaIaARBDAa6jjUVckzRbseMQgrZFc68Kz08R5OIiSgBk0uA9ClPg117uVIhmvK0fs+Kle4P79e6W2juw3yhO4iEy6BtdGlpk0Bi+y//EmTVkzqTZrSdIiuwD268V6cwFvGYr70FTFB21DdGLH842QOC7rbRtLseQbbwJTqioAf9LFExB2uiKoaGDJ09Xg+S+GvSJTPW/ZmgtRzBCcThjgCXQjBEGZygrVQXzH8OJAgSzIpySPAfZ1Q5acHKQ== 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=9GkPvUNVsdFXB93WA+bb+Fjm+hmAqDXEKGA+foASdLQ=; b=LDDmUSUaanAR/qVvq30l6acRF2XGpvrdf9OZBZt2mwqtQ7xSWxUaJPtupZZcem4c2YS4vEIi9E4jWYVwp/FDApi+xwkWFSG2N9UjNlsg5VuAKe5S+BYdqnCi3bliZZEI/SGbtbc/gSbWDKFu3MsetG7ZPl5vJf2D3rBA/PUc+pI= 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 SEYPR02MB7438.apcprd02.prod.outlook.com (2603:1096:101:1e5::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.28; Mon, 24 Jun 2024 13:55:53 +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.7677.033; Mon, 24 Jun 2024 13:55:53 +0000 To: chao@kernel.org, jaegeuk@kernel.org Date: Mon, 24 Jun 2024 21:55:23 +0800 Message-Id: <20240624135532.3330136-1-shengyong@oppo.com> X-Mailer: git-send-email 2.40.1 X-ClientProxiedBy: SI2P153CA0001.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::7) To SEYPR02MB6014.apcprd02.prod.outlook.com (2603:1096:101:6b::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SEYPR02MB6014:EE_|SEYPR02MB7438:EE_ X-MS-Office365-Filtering-Correlation-Id: 36957d1f-77ec-46f5-a034-08dc94555ce5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230037|366013|52116011|376011|1800799021|38350700011; X-Microsoft-Antispam-Message-Info: H1t+FFtyOfPpKP7uS2iwCGTfclw80jh4tOJo5STRhql6KvxwaadlHNjNx9veQxmn4W4gGsQmcKbgGZFDkNie+GS2X92SxloApTaUtlLG4hx4SzI1x2QQ2BjE+zcUvOJBvHtAn+tyOZf3BXVscxoRjpiWNZbbEfrWJBEGozpS97Z38L0yn/cHtFnTasq5fgCS/jygXlkooRERR2tLnuOLQrGhvTEKE/oh02M1IzZoC7y8I8zWYlIQmB9+ftTJbT8yMMeqoPo9xV1mRrRzDOlnn2mm5euZ4mKwnJUOj9eHMQeFMIwo2yvjT3keooxtN1IyEk+tzPlncCM5Z0xgjv60OtekeXidyZH83bCL8B0CfT1Z311mvHIthV+q+/C4eaCyPQnhxwCFeGNj5yh9wuFSg5+9ovdORxgkmT/TBTTAQFosCAyz3oTmAhQ8PRPZBt05pv3LhtF09cs35o0djtBFWMRuz6kEyy19nitRRwu5FydhP0Ac3jVkl9BMBpCJYNEq+uPhsbz3IQQHh/QnSETtbqPnr/BepJZK/ySBYZuQiMIFG35Ki58Sf3tcgiWbfQ/QdmR7FP8HFPI74eNEPlkaZAgUaLybMZcFk/FJ71fqPV8423pkJ5TqqVayufbcHA7IB8K0IJs0boia9sGsp+H4S32w2G5HS1XBtLz/0fnZ+m0/UAv3gwebh4ep2PTKw0qrwLrCKq2tv6CdpfCskv4gsijq5mH4rWNKVGo94Ad46MxoTO+LAkABF1bDNaVLBr2p3yxS5HgAyQhTil2CSle1CrxPjR31DH2wG6jckuhxi3+2hG/8s88Ihf/HDTRKo5NA0z5w0ekyK++WRUr2pU7MYXSDhPonbFk6ZA+RiQ1j+JT4UIf6nlmDCqMDYD57ADjer+PKLfDvrk+ZjPib9Ld9UZA4ATB84VqvqXdSdjNAgD8CozJlavxhlFEFSSYcp1Cn9DXugGR8O9cleXlcynsF5WLmvgSs7wH/Ly4VuIOmq4pYRaJOz7gxQM2pSawdgknuQ+lhM7E79AKKS9JXl9r2IoNokZSfpoMXQE8kYCkHthSl2fPsCoD2vAd0VJ4zhkV8X9FstF7qbh/wO4fp4CU/9ZWx68LJQl3BU9oWjy41gIgovfw45/2XSTsZWMc1CbqwOX6T0u6HVgfH4gDpEtySJ4zL4/EQQROFV4NgNZHhxuY6VOOO/4vLXl1gkioTnhnXn1xuETqTxWknMaUGtTJawXSyRRQ4uUO8DLysw3i9slzXXkSEz8zuxeoiBvJsbPSxgnhjXlbVH7t87/8pxjlensdstYUXG97s2xTBrM/ym1IQXpndqJzicWu9dKLouiNxum6UbE6IFRdGWNHD/hEx/zXvxUKGbqvuy9GfUNEqmWA= 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:(13230037)(366013)(52116011)(376011)(1800799021)(38350700011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rhmmfmuU52TzwXWNV+pxzsNgx9iscdzamtS+Lkj5z7caRMq4xGTSpG2IEhT9AbTm3NUwOcDFpsEi0MgQJAcXBs8THSlG/gUKS2cFYFTGmz3aNudc1+T0XEmfH9Bi2Otf4pIzN35WpwOe086VCcY8DVMyJWNvVMPyCQ4DESx4XN5kmnOpEerXzN7KDCms/xMbq7wVCPbeqSr0VtnOy+gtOR1Hmd1lB+8Mc6VQEXB6RHYNZ995daqDs3afq/64fNSMIA/+EEIpvDFEKtTGjfB0lFQMFUCTvvTNkeIM1FptOVfncibJis0PWiHg5DeNtw/xIJayzzS08OQPch1x8Ny0ocYxCrJPPusvmuooETnJh3nLt0HvA3SEGBs+OkAWClm4jUT3FuVRwNjMo6u1OWhZKN2ePNG6G8GIS4m8nfB5FRGJCpifLWYPoLgfhTIBWPvjQMA/SmaRG+t+W3Jaf7pxQOLt8NwgrODi9/DR/Z1dkU+x8wq2vNJ/yIqYUIBkhl3hLTv+RSPMrH5ESSmncGrXwStmESEcpY91o2ytlyovICr6HJsgwvvymCZqDzULm82eTRWMCTgvHN9HaDE5Va4wyonn+WsL/Rf/iLLWC5yN68eU9fh+wVpFQuBWaQiB4YmZn7othR9faIrP40MNLq7pjTKJGX8cMxhDZJ0h8HN25KimmiuMbihXYMSNAvd4JewXxCPd5FYX8cQqPar/clPXDF0nVW7CN6yj4MY1OBKvLRleN/Hhk35LuAFEA+QK8UtEppHVonRVmb9CLosnHZ0Isk7951sDLTCXwYb6J3tMs+2B48sgXx6xJfKoay+mPolNDKhpn7P/MY4VW6KMqsJ2FU12r+EyQj8X7W2FPAIQW59zS/WZ0OH9+pPwVpmL/x1Sn0Y87w2j3VIRPJkhnMwIrZ5USkNKgFU7igfvGWQTsTxhjk1gISCXmwdohradfckd0j1fPxN/PgnxQLBrwUJzFP5KNCachmkG1bsVsE1InpxWrYAxrU21JOj22kWnKcN5aS2NMvU51YLJaNW9EmeWJ7DIREYB4NUVZqhrsqv9xmthXvxUs5nHIWzYgJTXfZlKY39idYGJzNey//4frsS/AC89xjQMbxjK7G5q7nbSSEslJF4YBTxHjUYeFN505EAMdvvC5nK/tER5g/29eDGQUYQphtbFLrxX6DLNpEmpoNObVDHLSy3m892p31/si1lhByNP18mS98rX4PoqGNpmgvaVsG3a5zGgHgb0tR3yRikILBpJpHOo97Y6aAxEPpZldfL3AMOhaUz1dbrUf8jIgiuXtd3WZwlFQk9jgb+C8EuuVKSpGnX0CpqOK/iEn7qgwmrtnD0CO6IkFpIz6bpo965NjYFx2Tt5F/bHSU9Z1hLU5n6jlfD/AL3KOa8GsfnfvmHX/5eCVHGYKMEtkwaNrNswEfIJhVqKOHG9x6bxaBtf9YodYPpne9TbFBOiMIoRso9WHFKf6Zy6BofsKcm5mFfO6zBvzqbm39lDfLSKxjFl5uYNSOrtG3PXg+BCv/pyRizuFhenYXLH/rhWSuJZR/PwY8QsB0W4JuNFY0Xqyd2afE2goxwDMhvFqz2HacBd X-OriginatorOrg: oppo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36957d1f-77ec-46f5-a034-08dc94555ce5 X-MS-Exchange-CrossTenant-AuthSource: SEYPR02MB6014.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2024 13:55:53.3412 (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: KjHGcopfG5gjPpYjP+C8kdDnOKcQPyyqRALrOy/URYfmCqjW/yIl6Y3pCG1HaaDsZlTnpl5EOTpDgclll9v6Uw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB7438 X-Headers-End: 1sLkAt-00018a-1S Subject: [f2fs-dev] [RFC PATCH 00/10] f2fs-tools: introduce inject.f2fs 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 This patchset introduces a new tool inject.f2fs to modify metadata or data (directory entry) of f2fs image offline flexibly. With inject.f2fs, it is easier to generate a corrupted f2fs image, which can help verify fsck or reproduce userspace behaviors of some a fault. If option `--dry-run' is used, nothing really gets changed, and that could be used to get the value of a specified field. inject.f2fs allows injecting some members in sb, cp, nat, sit, ssa, node and dentry for now. For example, Inject sb's magic ================= inject.f2fs --sb 0 --mb magic --val 0x12345 $DEV Info: inject sb auto Info: inject member magic Info: inject value 74565 : 0x12345 [...] Info: inject magic of sb 1: 0xf2f52010 -> 0x12345 [update_superblock: 890] Info: Done to update superblock Inject cp's cur_data_segno ========================== inject.f2fs --cp 0 --mb cur_data_segno --idx 1 --val 0x12345 $DEV Info: inject cp pack auto Info: inject member cur_data_segno Info: inject slot index 1 Info: inject value 74565 : 0x12345 [...] Info: inject cur_data_segno[1] of cp 1: 0x4 -> 0x12345 Info: write_checkpoint() cur_cp:2 Inject nat's ino ================ inject.f2fs --nat 0 --mb ino --nid $INO --val 0x12345 $DEV Info: inject nat pack auto Info: inject nid 4 : 0x4 Info: inject member ino Info: inject value 74565 : 0x12345 [...] Info: inject nat entry ino of nid 4 in pack 1: 4 -> 74565 Inject ssa's nid ================ inject.f2fs --ssa --blk $BLK --mb nid --val 0x12345 $DEV Info: inject ssa Info: inject blkaddr 7511 : 0x1d57 Info: inject member nid Info: inject value 74565 : 0x12345 [...] Info: auto idx = 343 Info: inject summary entry nid of block 0x1d57: 0x4 -> 0x12345 Inject inode's i_addr ===================== inject.f2fs --node --nid $INO --mb i_addr --idx 100 --val 0x12345 $DEV Info: inject node Info: inject nid 4 : 0x4 Info: inject member i_addr Info: inject slot index 100 Info: inject value 74565 : 0x12345 [...] Info: inject inode i_addr[100] of nid 4: 0x20864 -> 0x12345 Inject inode's dentry hash ========================== inject.f2fs --dent --nid $INO --mb d_hash --val 0x12345 $DEV Info: inject dentry Info: inject nid 4 : 0x4 Info: inject member d_hash Info: inject value 74565 : 0x12345 [..] Info: inject dentry d_hash of nid 4: 0xc77b804e -> 0x12345 Sheng Yong (10): f2fs-tools: export is_digits inject.f2fs: introduce inject.f2fs inject.f2fs: add sb injection inject.f2fs: add cp injection inject.f2fs: add nat injection inject.f2fs: add sit injection inject.f2fs: add ssa injection inject.f2fs: add node injection inject.f2fs: add dentry injection man: add inject.f2fs man page fsck/Makefile.am | 5 +- fsck/fsck.h | 5 + fsck/inject.c | 1049 +++++++++++++++++++++++++++++++++++++++++++++ fsck/inject.h | 41 ++ fsck/main.c | 38 +- fsck/mount.c | 6 + include/f2fs_fs.h | 2 + man/Makefile.am | 2 +- man/inject.f2fs.8 | 225 ++++++++++ 9 files changed, 1369 insertions(+), 4 deletions(-) create mode 100644 fsck/inject.c create mode 100644 fsck/inject.h create mode 100644 man/inject.f2fs.8