diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2019-12-03 15:53:16 -0800 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2019-12-10 16:03:55 -0800 |
commit | bdf03299248916640a835a05d32841bb3d31912d (patch) | |
tree | ae48044fd4f26bacb39dd91a4949b40334f6a260 /fs/f2fs/data.c | |
parent | 47501f87c61ad2aa234add63e1ae231521dbc3f5 (diff) | |
download | lwn-bdf03299248916640a835a05d32841bb3d31912d.tar.gz lwn-bdf03299248916640a835a05d32841bb3d31912d.zip |
f2fs: call f2fs_balance_fs outside of locked page
Otherwise, we can hit deadlock by waiting for the locked page in
move_data_block in GC.
Thread A Thread B
- do_page_mkwrite
- f2fs_vm_page_mkwrite
- lock_page
- f2fs_balance_fs
- mutex_lock(gc_mutex)
- f2fs_gc
- do_garbage_collect
- ra_data_block
- grab_cache_page
- f2fs_balance_fs
- mutex_lock(gc_mutex)
Fixes: 39a8695824510 ("f2fs: refactor ->page_mkwrite() flow")
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/data.c')
0 files changed, 0 insertions, 0 deletions