android_kernel_motorola_sm6225/fs/f2fs
Chao Yu 30a61ddf81 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>
2017-03-24 15:10:50 -04:00
..
acl.c f2fs: keep dirty inodes selectively for checkpoint 2016-11-23 12:11:08 -08:00
acl.h f2fs: remove dead code f2fs_check_acl 2016-09-14 16:52:36 -07:00
checkpoint.c f2fs: sanity check of crc_offset from raw checkpoint 2017-03-21 22:34:34 -04:00
data.c f2fs: fix bad prefetchw of NULL page 2017-03-21 22:34:31 -04:00
debug.c f2fs: calculate the f2fs_stat_info into base_mem 2017-03-21 22:34:36 -04:00
dir.c f2fs: cleanup the disk level filename updating 2017-03-21 22:34:33 -04:00
extent_cache.c f2fs: kill __is_extent_same 2017-02-27 10:07:43 -08:00
f2fs.h f2fs: cleanup the disk level filename updating 2017-03-21 22:34:33 -04:00
file.c f2fs: avoid stat_inc_atomic_write for non-atomic file 2017-03-21 22:34:36 -04:00
gc.c f2fs: fix recording invalid last_victim 2017-03-24 15:10:48 -04:00
gc.h f2fs: detect idle time depending on user behavior 2016-01-11 15:56:37 -08:00
hash.c f2fs: introduce dot and dotdot name check 2015-05-28 15:41:34 -07:00
inline.c f2fs: cleanup the disk level filename updating 2017-03-21 22:34:33 -04:00
inode.c f2fs: fix wrong error injection for evict_inode 2017-03-21 16:52:16 -04:00
Kconfig f2fs: add mount option to select fault injection ratio 2016-05-07 10:32:22 -07:00
Makefile fs crypto: move per-file encryption from f2fs tree to fs/crypto 2016-03-17 21:19:33 -07:00
namei.c f2fs: cleanup the disk level filename updating 2017-03-21 22:34:33 -04:00
node.c f2fs: fix race condition in between free nid allocator/initializer 2017-03-24 15:10:50 -04:00
node.h f2fs: adjust the way of calculating nat block 2017-03-21 22:34:27 -04:00
recovery.c f2fs: change recovery policy of xattr node block 2017-02-23 10:10:52 -08:00
segment.c f2fs: add a punch discard command function 2017-03-21 22:34:23 -04:00
segment.h f2fs: update the comment of default nr_pages to skipping 2017-02-27 10:07:46 -08:00
shrinker.c f2fs: avoid casted negative value as shrink count 2016-11-23 12:11:03 -08:00
super.c f2fs: add fault injection on f2fs_truncate 2017-03-21 22:34:26 -04:00
trace.c f2fs: use set_page_private marcro in f2fs_trace_pid 2017-03-24 15:10:49 -04:00
trace.h f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
xattr.c f2fs: le16_to_cpu for xattr->e_value_size 2017-03-21 16:52:16 -04:00
xattr.h f2fs: enhance lookup xattr 2017-02-22 20:24:51 -08:00