From patchwork Mon Mar 24 11:49:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chao Yu X-Patchwork-Id: 14027109 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 3D282C36005 for ; Mon, 24 Mar 2025 11:50:04 +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 1twgJe-0004HG-V3; Mon, 24 Mar 2025 11:50:02 +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 1twgJe-0004Gs-2L for linux-f2fs-devel@lists.sourceforge.net; Mon, 24 Mar 2025 11:50:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type: 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=kMMxbvsdKxEdTUM8pG54vmjrIn5YfFWag1zuiX4vAzs=; b=MK8qBm0RcFY2Oc0mL1yELi8B9i XCkS3/Gv5WKD0cd87PH2a6aGKLO9KkwnvVnVZte1k7sZdNJn2jzqOM6rlu4Rq3E61MP6QGPkHLVKa Kds00WxM/8nNaS1oiwiXOuyVwuzcuxZf7Rke5wUJ7rLPeJQ2xiYapcClPuqJusk6FfcA=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID: Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type: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=kMMxbvsdKxEdTUM8pG54vmjrIn5YfFWag1zuiX4vAzs=; b=e56qqKaxWAbfypaWbk61Be59n3 pEY88igUH5KeDFMAlLuCrbUVWecXCo9KnEqhwKBFVY/lRrpR2tc/mCUC98gid5BtU9MAOF4kuQ6Yc XroCXINqduGoSwHOdLx1qPGJM/7OyFrwGaApbBevOR9pL2NOYMY1/CtFPriTQo/DyY74=; Received: from nyc.source.kernel.org ([147.75.193.91]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1twgJY-0006Dc-3c for linux-f2fs-devel@lists.sourceforge.net; Mon, 24 Mar 2025 11:50:01 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 4D284A49103; Mon, 24 Mar 2025 11:44:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C9E75C4CEED; Mon, 24 Mar 2025 11:49:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742816985; bh=vr/oTXFzFR9Y3VuFg7RbsLwrGmb0uJmEySHHZNiSAC0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NSj0jwITslTf/S1qJuluslbxI0uA2Z1TDzPdvifelHh+HpiCJM/a9gALdo6+jBwkH 4IF3faN2AKPbYxzte6QBWBGHlWxgOXNE/BiasgBhP4QYci01l33gf+06Gwvpc8ckEl Jzw0dcdIV0VlCwVcYefiUFJZmXUEbRnzzal+tCnq9mpMngD/o3ynzdDg0lC918RNuN wNNtf2pxgPPjHXerg40mOCj+rEv64pFv+m9fmZTpgA1Xq+WAG5iUkZFl+n0JK2sBv6 v7bf2pUnFdRMJ7km8ep5DGNr9r0VRMKj/2g8/08aFQczeUBfSUZtYw9Inu9zeYnsO3 ZEKjw+0zw9ZRw== To: jaegeuk@kernel.org Date: Mon, 24 Mar 2025 19:49:35 +0800 Message-ID: <20250324114935.3087821-2-chao@kernel.org> X-Mailer: git-send-email 2.49.0.395.g12beb8f557-goog In-Reply-To: <20250324114935.3087821-1-chao@kernel.org> References: <20250324114935.3087821-1-chao@kernel.org> MIME-Version: 1.0 X-Headers-End: 1twgJY-0006Dc-3c Subject: [f2fs-dev] [PATCH 2/2] f2fs: zone: fix to avoid inconsistence in between SIT and SSA 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: Chao Yu via Linux-f2fs-devel From: Chao Yu Reply-To: Chao Yu Cc: Daeho Jeong , linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net w/ below testcase, it will cause inconsistence in between SIT and SSA. create_null_blk 512 2 1024 1024 mkfs.f2fs -m /dev/nullb0 mount /dev/nullb0 /mnt/f2fs/ touch /mnt/f2fs/file f2fs_io pinfile set /mnt/f2fs/file fallocate -l 4GiB /mnt/f2fs/file F2FS-fs (nullb0): Inconsistent segment (0) type [1, 0] in SSA and SIT CPU: 5 UID: 0 PID: 2398 Comm: fallocate Tainted: G O 6.13.0-rc1 #84 Tainted: [O]=OOT_MODULE Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006 Call Trace: dump_stack_lvl+0xb3/0xd0 dump_stack+0x14/0x20 f2fs_handle_critical_error+0x18c/0x220 [f2fs] f2fs_stop_checkpoint+0x38/0x50 [f2fs] do_garbage_collect+0x674/0x6e0 [f2fs] f2fs_gc_range+0x12b/0x230 [f2fs] f2fs_allocate_pinning_section+0x5c/0x150 [f2fs] f2fs_expand_inode_data+0x1cc/0x3c0 [f2fs] f2fs_fallocate+0x3c3/0x410 [f2fs] vfs_fallocate+0x15f/0x4b0 __x64_sys_fallocate+0x4a/0x80 x64_sys_call+0x15e8/0x1b80 do_syscall_64+0x68/0x130 entry_SYSCALL_64_after_hwframe+0x67/0x6f RIP: 0033:0x7f9dba5197ca F2FS-fs (nullb0): Stopped filesystem due to reason: 4 The reason is f2fs_gc_range() may try to migrate block in curseg, however, its SSA block is not uptodate due to the last summary block data in still in cache of curseg. In this patch, we add a condition in f2fs_gc_range() to check whether section is opened or not, and skip block migration for opened section. Fixes: 9703d69d9d15 ("f2fs: support file pinning for zoned devices") Cc: Daeho Jeong Signed-off-by: Chao Yu Reviewed-by: Daeho Jeong --- fs/f2fs/gc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index 2b8f9239bede..8b5a55b72264 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -2066,6 +2066,9 @@ int f2fs_gc_range(struct f2fs_sb_info *sbi, .iroot = RADIX_TREE_INIT(gc_list.iroot, GFP_NOFS), }; + if (IS_CURSEC(sbi, GET_SEC_FROM_SEG(sbi, segno))) + continue; + do_garbage_collect(sbi, segno, &gc_list, FG_GC, true, false); put_gc_inode(&gc_list);