2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-26 14:14:01 +08:00
linux-next/fs/f2fs
Jaegeuk Kim 099228000e f2fs: avoid infinite loop in the EIO case on recover_orphan_inodes
This patch should fix an infinite loop case below.

F2FS-fs : inject IO error in f2fs_read_end_io+0xf3/0x120 [f2fs]
F2FS-fs (nvme0n1p1): recover_orphan_inode: orphan failed (ino=39ac1a), run fsck to fix.
...
[<ffffffffc0b11ede>] sync_meta_pages+0xae/0x270 [f2fs]
[<ffffffffc0b288dd>] ? flush_sit_entries+0x8d/0x960 [f2fs]
[<ffffffffc0b13801>] write_checkpoint+0x361/0xf20 [f2fs]
[<ffffffffb40e979d>] ? trace_hardirqs_on+0xd/0x10
[<ffffffffc0b0a199>] ? f2fs_sync_fs+0x79/0x190 [f2fs]
[<ffffffffc0b0a1a5>] f2fs_sync_fs+0x85/0x190 [f2fs]
[<ffffffffc0b2560e>] f2fs_balance_fs_bg+0x7e/0x1c0 [f2fs]
[<ffffffffc0b216c4>] f2fs_write_node_pages+0x34/0x320 [f2fs]
[<ffffffffb41dff21>] do_writepages+0x21/0x30
[<ffffffffb429edb1>] __writeback_single_inode+0x61/0x760
[<ffffffffb490a937>] ? _raw_spin_unlock+0x27/0x40
[<ffffffffb42a0805>] writeback_single_inode+0xd5/0x190
[<ffffffffb42a0959>] write_inode_now+0x99/0xc0
[<ffffffffb4289a16>] iput+0x1f6/0x2c0
[<ffffffffc0b0e3be>] f2fs_fill_super+0xe0e/0x1300 [f2fs]
[<ffffffffb426c394>] ? sget_userns+0x4f4/0x530
[<ffffffffb426c692>] mount_bdev+0x182/0x1b0
[<ffffffffc0b0d5b0>] ? f2fs_commit_super+0x100/0x100 [f2fs]
[<ffffffffc0b0a375>] f2fs_mount+0x15/0x20 [f2fs]
[<ffffffffb426d038>] mount_fs+0x38/0x170
[<ffffffffb428ec9b>] vfs_kern_mount+0x6b/0x160
[<ffffffffb4291d9e>] do_mount+0x1be/0xd60
[<ffffffffb4291a57>] ? copy_mount_options+0xb7/0x220
[<ffffffffb4292c54>] SyS_mount+0x94/0xd0
[<ffffffffb490b345>] entry_SYSCALL_64_fastpath+0x23/0xc6

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2016-11-23 12:11:13 -08:00
..
acl.c f2fs: keep dirty inodes selectively for checkpoint 2016-11-23 12:11:08 -08:00
acl.h f2fs: remove dead code f2fs_check_acl 2016-09-14 16:52:36 -07:00
checkpoint.c f2fs: make clean inodes when flushing inode page 2016-11-23 12:11:09 -08:00
data.c f2fs: hide a maybe-uninitialized warning 2016-11-23 12:11:11 -08:00
debug.c f2fs: remove percpu_count due to performance regression 2016-11-23 12:11:10 -08:00
dir.c f2fs: report error of f2fs_fill_dentries 2016-11-23 12:11:12 -08:00
extent_cache.c f2fs: keep dirty inodes selectively for checkpoint 2016-11-23 12:11:08 -08:00
f2fs.h f2fs: report error of f2fs_fill_dentries 2016-11-23 12:11:12 -08:00
file.c f2fs: keep dirty inodes selectively for checkpoint 2016-11-23 12:11:08 -08:00
gc.c f2fs: give a chance to detach from dirty list 2016-11-23 12:10:51 -08:00
gc.h f2fs: detect idle time depending on user behavior 2016-01-11 15:56:37 -08:00
hash.c f2fs: introduce dot and dotdot name check 2015-05-28 15:41:34 -07:00
inline.c f2fs: report error of f2fs_fill_dentries 2016-11-23 12:11:12 -08:00
inode.c f2fs: make clean inodes when flushing inode page 2016-11-23 12:11:09 -08:00
Kconfig f2fs: add mount option to select fault injection ratio 2016-05-07 10:32:22 -07:00
Makefile fs crypto: move per-file encryption from f2fs tree to fs/crypto 2016-03-17 21:19:33 -07:00
namei.c f2fs: keep dirty inodes selectively for checkpoint 2016-11-23 12:11:08 -08:00
node.c f2fs: use BIO_MAX_PAGES for bio allocation 2016-11-23 12:11:07 -08:00
node.h f2fs: split free nid list 2016-11-23 12:11:00 -08:00
recovery.c f2fs: introduce cp_lock to protect updating of ckpt_flags 2016-09-30 17:34:20 -07:00
segment.c f2fs: use BIO_MAX_PAGES for bio allocation 2016-11-23 12:11:07 -08:00
segment.h f2fs: use BIO_MAX_PAGES for bio allocation 2016-11-23 12:11:07 -08:00
shrinker.c f2fs: avoid casted negative value as shrink count 2016-11-23 12:11:03 -08:00
super.c f2fs: avoid infinite loop in the EIO case on recover_orphan_inodes 2016-11-23 12:11:13 -08:00
trace.c f2fs: use bio op accessors 2016-06-07 13:41:38 -06:00
trace.h f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
xattr.c f2fs: keep dirty inodes selectively for checkpoint 2016-11-23 12:11:08 -08:00
xattr.h f2fs: add missing argument to f2fs_setxattr stub 2016-03-17 21:19:47 -07:00