Re: [f2fs-dev] [PATCH] fsck.f2fs: flush device buffer before zone transition on zoned storage
Bart Van Assche via Linux-f2fs-devel <[email protected]> Wed, 22 Jul 2026 06:51:19 -0700
| Newsgroups | net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 7/21/26 9:47 AM, Daeho Jeong wrote: > On zoned storage devices (F2FS_ZONED_HM), fsck.f2fs opens block devices > with buffered I/O (O_RDWR). When a curseg fills up its current zone and > moves to a new zone in find_next_free_block(), pending buffered writes > to the previous zone may still reside in the OS page cache / I/O queue. > > As a result, issuing a write to the newly allocated zone can happen before > the device hardware finishes committing all blocks of the previous zone, > causing the hardware to see an additional open zone request that exceeds > the device's max open zone limit (e.g. open zones exceeded error). > > Fix this by calling f2fs_fsync_device() right before allocating a new zone > when crossing zone boundaries (!(segno % segs_per_zone)). This flushes > all pending writes to physical media, ensuring the device hardware > auto-closes (FULL) the previous zone before opening the new zone. > > Signed-off-by: Daeho Jeong <[email protected]> > --- > fsck/mount.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fsck/mount.c b/fsck/mount.c > index 6f640a0..3bd40fe 100644 > --- a/fsck/mount.c > +++ b/fsck/mount.c > @@ -3073,6 +3073,9 @@ int find_next_free_block(struct f2fs_sb_info *sbi, u64 *to, int left, > if (!(segno % segs_per_zone)) { > u64 new_blkaddr = SM_I(sbi)->main_blkaddr; > > + if (c.zoned_model == F2FS_ZONED_HM) > + f2fs_fsync_device(); > + > ret = find_next_free_block(sbi, &new_blkaddr, 0, > want_type, true); > if (ret) Will this change make a difference on Android because the Android f2fs-tools already use O_DSYNC when opening a zoned block device? From lib/libf2fs.c: if (dev->zoned_model == F2FS_ZONED_HM) flags |= O_DSYNC; See also commit 10dad5ed7ce1 ("f2fs-tools: support zoned ufs devices"). Thanks, Bart. _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel