diff options
author | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-05-20 21:17:56 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-05-28 02:03:03 -0400 |
commit | b638f0c4b8fca9d2f82805a2d6601b09283e0d32 (patch) | |
tree | 48c12176c2906dd53269e45aed43ac6210e03d64 /fs | |
parent | 77888c1e42e8c76e16204cd99c19a01829421402 (diff) |
f2fs: fix wrong condition check
While an orphan inode has zero link_count, f2fs_gc is able to select the inode
for foreground gc.
- f2fs_gc
- do_garbage_collect
- gc_data_segment
: f2fs_iget is failed
: get_valid_blocks() != 0, so that retry
--> here we got the infinite loop.
This patch resolved this issue.
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/f2fs/inode.c | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index a18946e2a8b4..b44a4c1194ea 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c | |||
@@ -109,12 +109,6 @@ struct inode *f2fs_iget(struct super_block *sb, unsigned long ino) | |||
109 | ret = do_read_inode(inode); | 109 | ret = do_read_inode(inode); |
110 | if (ret) | 110 | if (ret) |
111 | goto bad_inode; | 111 | goto bad_inode; |
112 | |||
113 | if (!sbi->por_doing && inode->i_nlink == 0) { | ||
114 | ret = -ENOENT; | ||
115 | goto bad_inode; | ||
116 | } | ||
117 | |||
118 | make_now: | 112 | make_now: |
119 | if (ino == F2FS_NODE_INO(sbi)) { | 113 | if (ino == F2FS_NODE_INO(sbi)) { |
120 | inode->i_mapping->a_ops = &f2fs_node_aops; | 114 | inode->i_mapping->a_ops = &f2fs_node_aops; |