linux/fs/f2fs
Jaegeuk Kim dd802406e3 f2fs: avoid double lock for cp_rwsem
The __f2fs_add_link is covered by cp_rwsem all the time.
This calls init_inode_metadata, which conducts some acl operations including
memory allocation with GFP_KERNEL previously.
But, under memory pressure, f2fs_write_data_page can be called, which also
grabs cp_rwsem too.

In this case, this incurs a deadlock pointed by Chao.
Thread #1        Thread #2
 down_read
                 down_write
  down_read
 -> here down_read should wait forever.

Reviewed-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2015-01-09 17:02:25 -08:00
..
acl.c f2fs: avoid double lock for cp_rwsem 2015-01-09 17:02:25 -08:00
acl.h f2fs: avoid deadlock on init_inode_metadata 2014-11-03 16:07:33 -08:00
checkpoint.c f2fs: activate f2fs_trace_pid 2015-01-09 17:02:24 -08:00
data.c f2fs: activate f2fs_trace_ios 2015-01-09 17:02:24 -08:00
debug.c f2fs: use atomic for counting inode with inline_{dir,inode} flag 2014-12-08 10:54:59 -08:00
dir.c f2fs: use missing the use of f2fs_kunmap_page 2015-01-09 17:02:22 -08:00
f2fs.h f2fs: use f2fs_io_info to clean up messy parameters during IO path 2015-01-09 17:02:23 -08:00
file.c f2fs: activate f2fs_trace_ios 2015-01-09 17:02:24 -08:00
gc.c f2fs: do retry operations with cond_resched 2014-12-08 10:35:05 -08:00
gc.h f2fs: more fast lookup for gc_inode list 2014-12-02 11:02:50 -08:00
hash.c f2fs: fix wrong casting for dentry name 2014-08-29 00:26:50 -07:00
inline.c f2fs: use f2fs_io_info to clean up messy parameters during IO path 2015-01-09 17:02:23 -08:00
inode.c f2fs: change atomic and volatile write policies 2015-01-09 17:02:22 -08:00
Kconfig f2fs: add f2fs_io_tracer support 2015-01-09 17:02:24 -08:00
Makefile f2fs: add f2fs_io_tracer support 2015-01-09 17:02:24 -08:00
namei.c f2fs: introduce f2fs_dentry_kunmap to clean up 2014-11-23 21:51:53 -08:00
node.c f2fs: activate f2fs_trace_pid 2015-01-09 17:02:24 -08:00
node.h f2fs: merge two uchar variable in struct node_info to reduce memory cost 2015-01-09 17:02:23 -08:00
recovery.c f2fs: avoid to ra unneeded blocks in recover flow 2014-12-08 14:19:09 -08:00
segment.c f2fs: activate f2fs_trace_pid 2015-01-09 17:02:24 -08:00
segment.h f2fs: do not skip any writes under memory pressure 2014-11-10 06:51:38 -08:00
super.c f2fs: activate f2fs_trace_ios 2015-01-09 17:02:24 -08:00
trace.c f2fs: add key functions for f2fs_io_tracer 2015-01-09 17:02:24 -08:00
trace.h f2fs: add key functions for f2fs_io_tracer 2015-01-09 17:02:24 -08:00
xattr.c f2fs: avoid deadlock on init_inode_metadata 2014-11-03 16:07:33 -08:00
xattr.h f2fs: avoid deadlock on init_inode_metadata 2014-11-03 16:07:33 -08:00