On 2/16/26 19:28, Yongpeng Yang wrote: > From: Yongpeng Yang <[email protected]> > > After the device is mounted, f2fs updates on-disk metadata without > updating the block device page cache. As a result, f2fs-tools may read > stale metadata from the page cache. > > For example: > mount /dev/vdb /mnt/f2fs > touch mx // ino = 4 > sync > dump.f2fs -i 4 /dev/vdb > touch mx2 // ino = 5 > sync > dump.f2fs -i 5 /dev/vdb // block addr is 0 > > Since `dump.f2fs -i 4 /dev/vdb` has already populated the metadata area > into the block device page cache, the cached pages remain resident in > memory. After creating mx2, the page cache is not updated accordingly. > Therefore, `dump.f2fs -i 5 /dev/vdb` reads stale metadata, and the > physical block address of inode 5 is incorrectly reported as 0. > > This patch issues a BLKFLSBUF ioctl to the block device before reading > metadata. The kernel then invalidates the block device page cache, > ensuring that subsequent reads fetch uptodate metadata from disk. > > Signed-off-by: Yongpeng Yang <[email protected]> > --- > lib/libf2fs.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/lib/libf2fs.c b/lib/libf2fs.c > index 1a496b7..31b5924 100644 > --- a/lib/libf2fs.c > +++ b/lib/libf2fs.c > @@ -1027,6 +1027,7 @@ int get_device_info(int i) > } > > dev->fd = fd; > + ioctl(fd, BLKFLSBUF); > > if (c.sparse_mode && i == 0) { > if (f2fs_init_sparse_file()) {
ping Thanks Yongpeng, _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
