OSDN Git Service

f2fs: fix livelock calling f2fs_iget during f2fs_evict_inode
authorJaegeuk Kim <jaegeuk@kernel.org>
Sat, 22 Nov 2014 00:37:40 +0000 (16:37 -0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 24 Nov 2014 05:51:57 +0000 (21:51 -0800)
commit0341845efcb4a656707b6d551c3057d6dd27009f
tree1939d07eeaf6b094877eecc5aee10c560b22d265
parent9486ba442b00a6b227bfe0d66b0f4dbcd1a2ee91
f2fs: fix livelock calling f2fs_iget during f2fs_evict_inode

In f2fs_evict_inode,
 commit_inmemory_pages
   f2fs_gc
     f2fs_iget
       iget_locked
         -> wait for inode free

Here, if the inode is same as the one to be evicted, f2fs should wait forever.
Actually, we should not call f2fs_balance_fs during f2fs_evict_inode to avoid
this.

But, the commit_inmem_pages calls f2fs_balance_fs by default, even if
f2fs_evict_inode wants to free inmemory pages only.

Hence, this patch adds to trigger f2fs_balance_fs only when there is something
to write.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/segment.c