2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-17 09:43:59 +08:00
linux-next/fs/f2fs
Jaegeuk Kim abb2366c82 f2fs: fix to recover xattr node block
If a new xattr node page was allocated and its inode is fsynced, we should
recover the xattr node page during the roll-forward process after power-cut.
But, previously, f2fs didn't handle that case, resulting in kernel panic as
follows reported by Tom Li.

BUG: unable to handle kernel paging request at ffffc9001c861a98
IP: [<ffffffffa0295236>] check_index_in_prev_nodes+0x86/0x2d0 [f2fs]
Call Trace:
 [<ffffffff815ece9b>] ? printk+0x48/0x4a
 [<ffffffffa029626a>] recover_fsync_data+0xdca/0xf50 [f2fs]
 [<ffffffffa02873ae>] f2fs_fill_super+0x92e/0x970 [f2fs]
 [<ffffffff8112c9f8>] mount_bdev+0x1b8/0x200
 [<ffffffffa0286a80>] ? f2fs_remount+0x130/0x130 [f2fs]
 [<ffffffffa0285e40>] f2fs_mount+0x10/0x20 [f2fs]
 [<ffffffff8112d4de>] mount_fs+0x3e/0x1b0
 [<ffffffff810ef4eb>] ? __alloc_percpu+0xb/0x10
 [<ffffffff8114761f>] vfs_kern_mount+0x6f/0x120
 [<ffffffff811497b9>] do_mount+0x259/0xa90
 [<ffffffff810ead1d>] ? memdup_user+0x3d/0x80
 [<ffffffff810eadb3>] ? strndup_user+0x53/0x70
 [<ffffffff8114a2c9>] SyS_mount+0x89/0xd0
 [<ffffffff815feae2>] system_call_fastpath+0x16/0x1b

This patch adds a recovery function of xattr node pages.

Reported-by: Tom Li <biergaizi@members.fsf.org>
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
2014-02-17 14:58:52 +09:00
..
acl.c f2fs: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
acl.h f2fs: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
checkpoint.c f2fs: introduce NODE_MAPPING for code consistency 2014-01-22 18:41:08 +09:00
data.c f2fs: update_inode_page should be done all the time 2014-02-17 14:58:51 +09:00
debug.c f2fs: introduce NODE_MAPPING for code consistency 2014-01-22 18:41:08 +09:00
dir.c f2fs: move a branch for code redability 2014-01-22 18:41:07 +09:00
f2fs.h f2fs: fix to recover xattr node block 2014-02-17 14:58:52 +09:00
file.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-01-28 08:38:04 -08:00
gc.c f2fs: remove the needless parameter of f2fs_wait_on_page_writeback 2014-01-14 17:45:54 +09:00
gc.h f2fs: add a sysfs entry to control max_victim_search 2014-01-08 13:45:08 +09:00
hash.c f2fs: unify string length declarations and usage 2012-12-28 11:27:53 +09:00
inline.c f2fs: remove the needless parameter of f2fs_wait_on_page_writeback 2014-01-14 17:45:54 +09:00
inode.c f2fs: update_inode_page should be done all the time 2014-02-17 14:58:51 +09:00
Kconfig f2fs: introduce CONFIG_F2FS_CHECK_FS for BUG_ON control 2013-10-29 15:43:01 +09:00
Makefile f2fs: key functions to handle inline data 2013-12-26 20:40:09 +09:00
namei.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-01-28 08:38:04 -08:00
node.c f2fs: fix to recover xattr node block 2014-02-17 14:58:52 +09:00
node.h f2fs: update several comments 2013-12-23 10:26:03 +09:00
recovery.c f2fs: fix to recover xattr node block 2014-02-17 14:58:52 +09:00
segment.c f2fs: handle dirty segments inside refresh_sit_entry 2014-02-17 14:58:52 +09:00
segment.h f2fs: clean checkpatch warnings 2014-01-20 10:27:12 +09:00
super.c f2fs: clean checkpatch warnings 2014-01-20 10:27:12 +09:00
xattr.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-01-28 08:38:04 -08:00
xattr.h f2fs: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00