OSDN Git Service

f2fs: avoid f2fs_lock_op for IPU writes
authorJaegeuk Kim <jaegeuk@kernel.org>
Fri, 12 May 2017 20:51:34 +0000 (13:51 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 13 Jul 2017 23:56:01 +0000 (16:56 -0700)
commit5d6951b8e115161e940f46690a2c971833769584
treed2cba69bcf0f0a27914f20d4d122690d529c8d4d
parenta3b6a409692bee072eec659b9d18766d53f96c36
f2fs: avoid f2fs_lock_op for IPU writes

Currently, if we do get_node_of_data before f2fs_lock_op, there may be dead lock
as follows, where process A would be in infinite loop, and B will NOT be awaked.

Process A(cp):            Process B:
f2fs_lock_all(sbi)
                        get_dnode_of_data <---- lock dn.node_page
flush_nodes             f2fs_lock_op

So, this patch adds f2fs_trylock_op to avoid f2fs_lock_op done by IPU.

Signed-off-by: Hou Pengyang <houpengyang@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c
fs/f2fs/f2fs.h
fs/f2fs/gc.c
fs/f2fs/segment.c