From nobody Sat Feb 7 16:29:10 2026 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 86038E8FDBF for ; Tue, 3 Oct 2023 22:52:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231856AbjJCWwW (ORCPT ); Tue, 3 Oct 2023 18:52:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46240 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230237AbjJCWwV (ORCPT ); Tue, 3 Oct 2023 18:52:21 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 98EA09E for ; Tue, 3 Oct 2023 15:52:18 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21A47C433C7; Tue, 3 Oct 2023 22:52:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696373538; bh=DAv2AfX6INF2/9pEZJP+mKh8rXKAu51RSvWoW5djUnA=; h=From:To:Cc:Subject:Date:From; b=HF6nIf/t1kA+ZxoD3boKZynlbN/56xiURDRVeBwjZ9dyZGcm1B9CC0JAGfJiMZgc0 8IPSPTEjMiSyXBHMkxRgkl2OEUlGrBfPJlHmxsDsODzuY5hF8A4E0C2z9Jeg8Aes4n DoGuxmHQPMvTDDdQroZu8T6cjxZCb6V29OvDZX5WG9hwikidufm62yGJJqGWqMt0hA rys+7LO8OG4/pmXsgwrS8C2ZzT1+zUkjz/f+m17zxQk86+3I8slTWIhrES9yR+TceW dJgwPjTPMkJ+Z7u4CKVvHHCX5WM5sbIscSmsiTUHJTFxlclvxjLpVibOWO3WXtFXrt XXk/0v+avs9XQ== From: Jaegeuk Kim To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Cc: Jaegeuk Kim Subject: [PATCH] f2fs: stop iterating f2fs_map_block if hole exists Date: Tue, 3 Oct 2023 15:52:08 -0700 Message-ID: <20231003225208.1936359-1-jaegeuk@kernel.org> X-Mailer: git-send-email 2.42.0.582.g8ccd20d70d-goog MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Let's avoid unnecessary f2fs_map_block calls to load extents. # f2fs_io fadvise willneed 0 4096 /data/local/tmp/test f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 386, st= art blkaddr =3D 0x34ac00, len =3D 0x1400, flags =3D 2, f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 5506, s= tart blkaddr =3D 0x34c200, len =3D 0x1000, flags =3D 2, f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 9602, s= tart blkaddr =3D 0x34d600, len =3D 0x1200, flags =3D 2, f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 14210, = start blkaddr =3D 0x34ec00, len =3D 0x400, flags =3D 2, f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 15235, = start blkaddr =3D 0x34f401, len =3D 0xbff, flags =3D 2, f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 18306, = start blkaddr =3D 0x350200, len =3D 0x1200, flags =3D 2 f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 22915, = start blkaddr =3D 0x351601, len =3D 0xa7d, flags =3D 2 f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 25600, = start blkaddr =3D 0x351601, len =3D 0x0, flags =3D 0 f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 25601, = start blkaddr =3D 0x351601, len =3D 0x0, flags =3D 0 f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 25602, = start blkaddr =3D 0x351601, len =3D 0x0, flags =3D 0 ... f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 1037188= , start blkaddr =3D 0x351601, len =3D 0x0, flags =3D 0 f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 1038206= , start blkaddr =3D 0x351601, len =3D 0x0, flags =3D 0 f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 1039224= , start blkaddr =3D 0x351601, len =3D 0x0, flags =3D 0 f2fs_map_blocks: dev =3D (254,51), ino =3D 85845, file offset =3D 2075548= , start blkaddr =3D 0x351601, len =3D 0x0, flags =3D 0 Signed-off-by: Jaegeuk Kim --- fs/f2fs/file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 161826c6e200..2403fd1de5a0 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -3270,7 +3270,7 @@ int f2fs_precache_extents(struct inode *inode) f2fs_down_write(&fi->i_gc_rwsem[WRITE]); err =3D f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_PRECACHE); f2fs_up_write(&fi->i_gc_rwsem[WRITE]); - if (err) + if (err || !map.m_len) return err; =20 map.m_lblk =3D m_next_extent; --=20 2.42.0.582.g8ccd20d70d-goog