]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
f2fs: fix incorrect multidevice info in trace_f2fs_map_blocks()
authorYongpeng Yang <yangyongpeng@xiaomi.com>
Mon, 23 Mar 2026 12:06:22 +0000 (20:06 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 24 Mar 2026 17:21:00 +0000 (17:21 +0000)
When f2fs_map_blocks()->f2fs_map_blocks_cached() hits the read extent
cache, map->m_multidev_dio is not updated, which leads to incorrect
multidevice information being reported by trace_f2fs_map_blocks().

This patch updates map->m_multidev_dio in f2fs_map_blocks_cached() when
the read extent cache is hit.

Cc: stable@kernel.org
Fixes: 0094e98bd147 ("f2fs: factor a f2fs_map_blocks_cached helper")
Signed-off-by: Yongpeng Yang <yangyongpeng@xiaomi.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c

index e3c94c0ad05d342a553128c9ae7a4e021b2cd171..a690442b7440bc6f6fadde2907cafa643c96bb35 100644 (file)
@@ -1575,7 +1575,8 @@ static bool f2fs_map_blocks_cached(struct inode *inode,
                f2fs_wait_on_block_writeback_range(inode,
                                        map->m_pblk, map->m_len);
 
-       if (f2fs_allow_multi_device_dio(sbi, flag)) {
+       map->m_multidev_dio = f2fs_allow_multi_device_dio(sbi, flag);
+       if (map->m_multidev_dio) {
                int bidx = f2fs_target_device_index(sbi, map->m_pblk);
                struct f2fs_dev_info *dev = &sbi->devs[bidx];