* [PATCH v2] f2fs: fix to round down start offset of fallocate for pin file [not found] <CGME20260622052831epcas1p205548491ce904c0cfda685ed05fe7cab@epcas1p2.samsung.com> @ 2026-06-22 5:28 ` Sunmin Jeong 2026-06-22 12:41 ` Chao Yu 2026-06-22 20:00 ` [f2fs-dev] " patchwork-bot+f2fs 0 siblings, 2 replies; 3+ messages in thread From: Sunmin Jeong @ 2026-06-22 5:28 UTC (permalink / raw) To: jaegeuk, chao Cc: linux-f2fs-devel, linux-kernel, Sunmin Jeong, stable, Yunji Kang, Yeongjin Gil, Sungjong Seo Currently, the length of fallocate for pin file is section-aligned to keep allocated sections from being selected as victims of GC. However, for the case that the start offset of fallocate is not aligned in section, the allocated sections can't be fully utilized. It's because a new section is allocated by f2fs_allocate_pinning_section() after using blks_per_sec blocks regardless of the start offset. As a result, several unexpected dirty segments may be created, including blocks assigned to the pinned file. To address this issue, let's round down the start offset of fallocate to the length of section. The reproducing scenario is as below chunk=$(((2<<20)+4096)) # 2MB + 4KB touch test f2fs_io pinfile set test f2fs_io fallocate 0 0 $chunk test f2fs_io fallocate 0 $chunk $chunk test f2fs_io fallocate 0 $((chunk*2)) $chunk test f2fs_io fiemap 0 $((chunk*3)) test Fiemap: offset = 0 len = 12288 logical addr. physical addr. length flags 0 0000000000000000 000000068c600000 0000000000400000 00001088 1 0000000000400000 000000003d400000 0000000000001000 00001088 2 0000000000401000 00000003eb200000 0000000000200000 00001088 3 0000000000601000 00000005e4200000 0000000000001000 00001088 4 0000000000602000 0000000605400000 0000000000200000 00001089 Cc: stable@vger.kernel.org Fixes: f5a53edcf01e ("f2fs: support aligned pinned file") Reviewed-by: Yunji Kang <yunji0.kang@samsung.com> Reviewed-by: Yeongjin Gil <youngjin.gil@samsung.com> Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com> Signed-off-by: Sunmin Jeong <s_min.jeong@samsung.com> --- v2: - Handle the case that pg_end is aligned to sec_blks but off_end is not zero fs/f2fs/file.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 8acdd94272a0..4b52c56d71f0 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -1916,8 +1916,15 @@ static int f2fs_expand_inode_data(struct inode *inode, loff_t offset, if (f2fs_is_pinned_file(inode)) { block_t sec_blks = CAP_BLKS_PER_SEC(sbi); - block_t sec_len = roundup(map.m_len, sec_blks); + block_t sec_len; + if (map.m_lblk % sec_blks) { + map.m_lblk = rounddown(map.m_lblk, sec_blks); + map.m_len = pg_end - map.m_lblk; + if (off_end) + map.m_len++; + } + sec_len = roundup(map.m_len, sec_blks); map.m_len = sec_blks; next_alloc: f2fs_down_write(&sbi->pin_sem); -- 2.25.1 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] f2fs: fix to round down start offset of fallocate for pin file 2026-06-22 5:28 ` [PATCH v2] f2fs: fix to round down start offset of fallocate for pin file Sunmin Jeong @ 2026-06-22 12:41 ` Chao Yu 2026-06-22 20:00 ` [f2fs-dev] " patchwork-bot+f2fs 1 sibling, 0 replies; 3+ messages in thread From: Chao Yu @ 2026-06-22 12:41 UTC (permalink / raw) To: Sunmin Jeong, jaegeuk Cc: chao, linux-f2fs-devel, linux-kernel, stable, Yunji Kang, Yeongjin Gil, Sungjong Seo On 6/22/26 13:28, Sunmin Jeong wrote: > Currently, the length of fallocate for pin file is section-aligned to > keep allocated sections from being selected as victims of GC. However, > for the case that the start offset of fallocate is not aligned in > section, the allocated sections can't be fully utilized. It's because a > new section is allocated by f2fs_allocate_pinning_section() after using > blks_per_sec blocks regardless of the start offset. As a result, several > unexpected dirty segments may be created, including blocks assigned to > the pinned file. > > To address this issue, let's round down the start offset of fallocate > to the length of section. > > The reproducing scenario is as below > > chunk=$(((2<<20)+4096)) # 2MB + 4KB > touch test > f2fs_io pinfile set test > f2fs_io fallocate 0 0 $chunk test > f2fs_io fallocate 0 $chunk $chunk test > f2fs_io fallocate 0 $((chunk*2)) $chunk test > f2fs_io fiemap 0 $((chunk*3)) test > > Fiemap: offset = 0 len = 12288 > logical addr. physical addr. length flags > 0 0000000000000000 000000068c600000 0000000000400000 00001088 > 1 0000000000400000 000000003d400000 0000000000001000 00001088 > 2 0000000000401000 00000003eb200000 0000000000200000 00001088 > 3 0000000000601000 00000005e4200000 0000000000001000 00001088 > 4 0000000000602000 0000000605400000 0000000000200000 00001089 > > Cc: stable@vger.kernel.org > Fixes: f5a53edcf01e ("f2fs: support aligned pinned file") > Reviewed-by: Yunji Kang <yunji0.kang@samsung.com> > Reviewed-by: Yeongjin Gil <youngjin.gil@samsung.com> > Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com> > Signed-off-by: Sunmin Jeong <s_min.jeong@samsung.com> Reviewed-by: Chao Yu <chao@kernel.org> Thanks, ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [f2fs-dev] [PATCH v2] f2fs: fix to round down start offset of fallocate for pin file 2026-06-22 5:28 ` [PATCH v2] f2fs: fix to round down start offset of fallocate for pin file Sunmin Jeong 2026-06-22 12:41 ` Chao Yu @ 2026-06-22 20:00 ` patchwork-bot+f2fs 1 sibling, 0 replies; 3+ messages in thread From: patchwork-bot+f2fs @ 2026-06-22 20:00 UTC (permalink / raw) To: Sunmin Jeong Cc: jaegeuk, chao, sj1557.seo, stable, linux-kernel, linux-f2fs-devel Hello: This patch was applied to jaegeuk/f2fs.git (dev) by Jaegeuk Kim <jaegeuk@kernel.org>: On Mon, 22 Jun 2026 14:28:17 +0900 you wrote: > Currently, the length of fallocate for pin file is section-aligned to > keep allocated sections from being selected as victims of GC. However, > for the case that the start offset of fallocate is not aligned in > section, the allocated sections can't be fully utilized. It's because a > new section is allocated by f2fs_allocate_pinning_section() after using > blks_per_sec blocks regardless of the start offset. As a result, several > unexpected dirty segments may be created, including blocks assigned to > the pinned file. > > [...] Here is the summary with links: - [f2fs-dev,v2] f2fs: fix to round down start offset of fallocate for pin file https://git.kernel.org/jaegeuk/f2fs/c/d2134b45eede You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-06-22 20:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CGME20260622052831epcas1p205548491ce904c0cfda685ed05fe7cab@epcas1p2.samsung.com>
2026-06-22 5:28 ` [PATCH v2] f2fs: fix to round down start offset of fallocate for pin file Sunmin Jeong
2026-06-22 12:41 ` Chao Yu
2026-06-22 20:00 ` [f2fs-dev] " patchwork-bot+f2fs
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
Powered by JetHome