• Jaegeuk Kim's avatar
    f2fs: handle errors during recover_orphan_inodes · d41065e2
    Jaegeuk Kim authored
    This patch fixes to handle EIO during recover_orphan_inode() given the below
    panic.
    
    F2FS-fs : inject IO error in f2fs_read_end_io+0xe6/0x100 [f2fs]
    ------------[ cut here ]------------
    RIP: 0010:[<ffffffffc0b244e3>]  [<ffffffffc0b244e3>] f2fs_evict_inode+0x433/0x470 [f2fs]
    RSP: 0018:ffff92f8b7fb7c30  EFLAGS: 00010246
    RAX: ffff92fb88a13500 RBX: ffff92f890566ea0 RCX: 00000000fd3c255c
    RDX: 0000000000000001 RSI: ffff92fb88a13d90 RDI: ffff92fb8ee127e8
    RBP: ffff92f8b7fb7c58 R08: 0000000000000001 R09: ffff92fb88a13d58
    R10: 000000005a6a9373 R11: 0000000000000001 R12: 00000000fffffffb
    R13: ffff92fb8ee12000 R14: 00000000000034ca R15: ffff92fb8ee12620
    FS:  00007f1fefd8e880(0000) GS:ffff92fb95600000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fc211d34cdb CR3: 000000012d43a000 CR4: 00000000001406e0
    Stack:
     ffff92f890566ea0 ffff92f890567078 ffffffffc0b5a0c0 ffff92f890566f28
     ffff92fb888b2000 ffff92f8b7fb7c80 ffffffffbc27ff55 ffff92f890566ea0
     ffff92fb8bf10000 ffffffffc0b5a0c0 ffff92f8b7fb7cb0 ffffffffbc28090d
    Call Trace:
     [<ffffffffbc27ff55>] evict+0xc5/0x1a0
     [<ffffffffbc28090d>] iput+0x1ad/0x2c0
     [<ffffffffc0b3304c>] recover_orphan_inodes+0x10c/0x2e0 [f2fs]
     [<ffffffffc0b2e0f4>] f2fs_fill_super+0x884/0x1150 [f2fs]
     [<ffffffffbc2644ac>] mount_bdev+0x18c/0x1c0
     [<ffffffffc0b2d870>] ? f2fs_commit_super+0x100/0x100 [f2fs]
     [<ffffffffc0b2a755>] f2fs_mount+0x15/0x20 [f2fs]
     [<ffffffffbc264e49>] mount_fs+0x39/0x170
     [<ffffffffbc28555b>] vfs_kern_mount+0x6b/0x160
     [<ffffffffbc2881df>] do_mount+0x1cf/0xd00
     [<ffffffffbc287f2c>] ? copy_mount_options+0xac/0x170
     [<ffffffffbc289003>] SyS_mount+0x83/0xd0
     [<ffffffffbc8ee880>] entry_SYSCALL_64_fastpath+0x23/0xc1
    Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    d41065e2
super.c 52.6 KB