]> git.baikalelectronics.ru Git - kernel.git/commit
f2fs: fix race condition on setting FI_NO_EXTENT flag
authorZhang Qilong <zhangqilong3@huawei.com>
Mon, 5 Sep 2022 04:59:17 +0000 (12:59 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 4 Oct 2022 20:31:43 +0000 (13:31 -0700)
commit5f522b6eacc4b145e7c73a18939757546df456d3
treeae36e18da41e9bf7363854ded51f4b165742256d
parentdf51647ba667423227ebf5ba831ce54190a11a1d
f2fs: fix race condition on setting FI_NO_EXTENT flag

The following scenarios exist.
process A:               process B:
->f2fs_drop_extent_tree  ->f2fs_update_extent_cache_range
                          ->f2fs_update_extent_tree_range
                           ->write_lock
 ->set_inode_flag
                           ->is_inode_flag_set
                           ->__free_extent_tree // Shouldn't
                                                // have been
                                                // cleaned up
                                                // here
  ->write_lock

In this case, the "FI_NO_EXTENT" flag is set between
f2fs_update_extent_tree_range and is_inode_flag_set
by other process. it leads to clearing the whole exten
tree which should not have happened. And we fix it by
move the setting it to the range of write_lock.

Fixes:8a5ae35c6d0e4 ("f2fs: disable extent_cache for fcollapse/finsert inodes")
Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/extent_cache.c