]> 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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 14 May 2026 13:31:18 +0000 (15:31 +0200)
commit eb2ca3ca983551a80e16a4a25df5a4ce59df8484 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/f2fs/data.c

index e071c76124740c96d14af65d0d4fec8559bd7e15..e35e2f03cfbc179311c56064bb500a2b29fd13db 100644 (file)
@@ -1576,7 +1576,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];