diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/f2fs/gc.c | 2 | ||||
-rw-r--r-- | fs/f2fs/namei.c | 20 |
2 files changed, 6 insertions, 16 deletions
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index e8507b1c8759..943a31db7cc3 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c | |||
@@ -593,7 +593,7 @@ next_step: | |||
593 | 593 | ||
594 | if (phase == 2) { | 594 | if (phase == 2) { |
595 | inode = f2fs_iget(sb, dni.ino); | 595 | inode = f2fs_iget(sb, dni.ino); |
596 | if (IS_ERR(inode)) | 596 | if (IS_ERR(inode) || is_bad_inode(inode)) |
597 | continue; | 597 | continue; |
598 | 598 | ||
599 | start_bidx = start_bidx_of_node(nofs, F2FS_I(inode)); | 599 | start_bidx = start_bidx_of_node(nofs, F2FS_I(inode)); |
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index 6b53ce924d95..ee103fd7283c 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c | |||
@@ -134,9 +134,7 @@ static int f2fs_create(struct inode *dir, struct dentry *dentry, umode_t mode, | |||
134 | return 0; | 134 | return 0; |
135 | out: | 135 | out: |
136 | clear_nlink(inode); | 136 | clear_nlink(inode); |
137 | unlock_new_inode(inode); | 137 | iget_failed(inode); |
138 | make_bad_inode(inode); | ||
139 | iput(inode); | ||
140 | alloc_nid_failed(sbi, ino); | 138 | alloc_nid_failed(sbi, ino); |
141 | return err; | 139 | return err; |
142 | } | 140 | } |
@@ -267,9 +265,7 @@ static int f2fs_symlink(struct inode *dir, struct dentry *dentry, | |||
267 | return err; | 265 | return err; |
268 | out: | 266 | out: |
269 | clear_nlink(inode); | 267 | clear_nlink(inode); |
270 | unlock_new_inode(inode); | 268 | iget_failed(inode); |
271 | make_bad_inode(inode); | ||
272 | iput(inode); | ||
273 | alloc_nid_failed(sbi, inode->i_ino); | 269 | alloc_nid_failed(sbi, inode->i_ino); |
274 | return err; | 270 | return err; |
275 | } | 271 | } |
@@ -308,9 +304,7 @@ static int f2fs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) | |||
308 | out_fail: | 304 | out_fail: |
309 | clear_inode_flag(F2FS_I(inode), FI_INC_LINK); | 305 | clear_inode_flag(F2FS_I(inode), FI_INC_LINK); |
310 | clear_nlink(inode); | 306 | clear_nlink(inode); |
311 | unlock_new_inode(inode); | 307 | iget_failed(inode); |
312 | make_bad_inode(inode); | ||
313 | iput(inode); | ||
314 | alloc_nid_failed(sbi, inode->i_ino); | 308 | alloc_nid_failed(sbi, inode->i_ino); |
315 | return err; | 309 | return err; |
316 | } | 310 | } |
@@ -354,9 +348,7 @@ static int f2fs_mknod(struct inode *dir, struct dentry *dentry, | |||
354 | return 0; | 348 | return 0; |
355 | out: | 349 | out: |
356 | clear_nlink(inode); | 350 | clear_nlink(inode); |
357 | unlock_new_inode(inode); | 351 | iget_failed(inode); |
358 | make_bad_inode(inode); | ||
359 | iput(inode); | ||
360 | alloc_nid_failed(sbi, inode->i_ino); | 352 | alloc_nid_failed(sbi, inode->i_ino); |
361 | return err; | 353 | return err; |
362 | } | 354 | } |
@@ -688,9 +680,7 @@ release_out: | |||
688 | out: | 680 | out: |
689 | f2fs_unlock_op(sbi); | 681 | f2fs_unlock_op(sbi); |
690 | clear_nlink(inode); | 682 | clear_nlink(inode); |
691 | unlock_new_inode(inode); | 683 | iget_failed(inode); |
692 | make_bad_inode(inode); | ||
693 | iput(inode); | ||
694 | alloc_nid_failed(sbi, inode->i_ino); | 684 | alloc_nid_failed(sbi, inode->i_ino); |
695 | return err; | 685 | return err; |
696 | } | 686 | } |