linux/fs/f2fs
Jaegeuk Kim 441ac5cb32 f2fs: fix roll-forward missing scenarios
We can summarize the roll forward recovery scenarios as follows.

[Term] F: fsync_mark, D: dentry_mark

1. inode(x) | CP | inode(x) | dnode(F)
-> Update the latest inode(x).

2. inode(x) | CP | inode(F) | dnode(F)
-> No problem.

3. inode(x) | CP | dnode(F) | inode(x)
-> Recover to the latest dnode(F), and drop the last inode(x)

4. inode(x) | CP | dnode(F) | inode(F)
-> No problem.

5. CP | inode(x) | dnode(F)
-> The inode(DF) was missing. Should drop this dnode(F).

6. CP | inode(DF) | dnode(F)
-> No problem.

7. CP | dnode(F) | inode(DF)
-> If f2fs_iget fails, then goto next to find inode(DF).

8. CP | dnode(F) | inode(x)
-> If f2fs_iget fails, then goto next to find inode(DF).
   But it will fail due to no inode(DF).

So, this patch adds some missing points such as #1, #5, #7, and #8.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2014-09-23 11:10:16 -07:00
..
acl.c f2fs: remove the redundant validation check of acl 2014-07-09 14:04:25 -07:00
acl.h f2fs: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
checkpoint.c f2fs: use meta_inode cache to improve roll-forward speed 2014-09-23 11:10:12 -07:00
data.c f2fs: fix conditions to remain recovery information in f2fs_sync_file 2014-09-23 11:10:15 -07:00
debug.c f2fs: fix typo 2014-08-19 10:01:33 -07:00
dir.c f2fs: expand counting dirty pages in the inode page cache 2014-09-16 04:10:39 -07:00
f2fs.h f2fs: fix conditions to remain recovery information in f2fs_sync_file 2014-09-23 11:10:15 -07:00
file.c f2fs: fix conditions to remain recovery information in f2fs_sync_file 2014-09-23 11:10:15 -07:00
gc.c f2fs: expand counting dirty pages in the inode page cache 2014-09-16 04:10:39 -07:00
gc.h f2fs: fix typo 2014-08-19 10:01:33 -07:00
hash.c f2fs: fix wrong casting for dentry name 2014-08-29 00:26:50 -07:00
inline.c f2fs: need fsck.f2fs when f2fs_bug_on is triggered 2014-09-09 13:15:02 -07:00
inode.c f2fs: expand counting dirty pages in the inode page cache 2014-09-16 04:10:39 -07:00
Kconfig f2fs: fix typo 2014-08-19 10:01:33 -07:00
Makefile f2fs: key functions to handle inline data 2013-12-26 20:40:09 +09:00
namei.c f2fs: introduce F2FS_I_SB, F2FS_M_SB, and F2FS_P_SB 2014-09-03 17:37:13 -07:00
node.c f2fs: fix conditions to remain recovery information in f2fs_sync_file 2014-09-23 11:10:15 -07:00
node.h f2fs: fix conditions to remain recovery information in f2fs_sync_file 2014-09-23 11:10:15 -07:00
recovery.c f2fs: fix roll-forward missing scenarios 2014-09-23 11:10:16 -07:00
segment.c f2fs: give an option to enable in-place-updates during fsync to users 2014-09-16 04:10:44 -07:00
segment.h f2fs: use meta_inode cache to improve roll-forward speed 2014-09-23 11:10:12 -07:00
super.c f2fs: give an option to enable in-place-updates during fsync to users 2014-09-16 04:10:44 -07:00
xattr.c f2fs: need fsck.f2fs when f2fs_bug_on is triggered 2014-09-09 13:15:02 -07:00
xattr.h f2fs: pass flags field to setxattr functions 2014-05-07 10:21:56 +09:00