Searched hist:"30 a61ddf8117c26ac5b295e1233eaa9629a94ca3" (Results 1 – 1 of 1) sorted by relevance
/openbmc/linux/fs/f2fs/ |
H A D | node.c | diff 30a61ddf8117c26ac5b295e1233eaa9629a94ca3 Wed Mar 22 01:45:05 CDT 2017 Chao Yu <yuchao0@huawei.com> f2fs: fix race condition in between free nid allocator/initializer
In below concurrent case, allocated nid can be loaded into free nid cache and be allocated again.
Thread A Thread B - f2fs_create - f2fs_new_inode - alloc_nid - __insert_nid_to_list(ALLOC_NID_LIST) - f2fs_balance_fs_bg - build_free_nids - __build_free_nids - scan_nat_page - add_free_nid - __lookup_nat_cache - f2fs_add_link - init_inode_metadata - new_inode_page - new_node_page - set_node_addr - alloc_nid_done - __remove_nid_from_list(ALLOC_NID_LIST) - __insert_nid_to_list(FREE_NID_LIST)
This patch makes nat cache lookup and free nid list operation being atomical to avoid this race condition.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
|