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
..
2014-08-08 15:57:24 -07:00
2014-08-08 15:57:20 -07:00
2014-06-04 16:53:53 -07:00
2014-08-06 18:01:12 -07:00
2014-08-07 14:40:09 -04:00
2014-08-08 18:13:21 -07:00
2014-07-23 15:01:44 -07:00
2014-08-26 16:17:48 -04:00
2014-08-06 18:01:12 -07:00
2014-07-15 22:40:23 +02:00
2014-07-31 15:52:51 +03:00
2014-08-24 15:47:27 -07:00
2014-08-07 14:40:09 -04:00
2014-08-07 14:40:11 -04:00
2014-08-08 15:57:23 -07:00
2014-08-08 15:57:31 -07:00
2014-08-07 14:40:08 -04:00
2014-08-07 14:40:09 -04:00
2014-05-06 17:39:42 -04:00
2014-07-23 10:18:02 -07:00