diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-06-30 11:09:55 +0200 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-07-09 14:59:31 +0200 |
commit | b2c0829912493df596706a1a036c67beb1bd6ff5 (patch) | |
tree | c5a59caddd99f7c354813c2c36f6bf74857ea722 /fs/binfmt_aout.c | |
parent | f2fs: release new entry page correctly in error path of f2fs_rename (diff) | |
download | linux-b2c0829912493df596706a1a036c67beb1bd6ff5.tar.xz linux-b2c0829912493df596706a1a036c67beb1bd6ff5.zip |
f2fs: do checkpoint for the renamed inode
If an inode is renamed, it should be registered as file_lost_pino to conduct
checkpoint at f2fs_sync_file.
Otherwise, the inode cannot be recovered due to no dent_mark in the following
scenario.
Note that, this scenario is from xfstests/322.
1. create "a"
2. fsync "a"
3. rename "a" to "b"
4. fsync "b"
5. Sudden power-cut
After recovery is done, "b" should be seen.
However, the result shows "a", since the recovery procedure does not enter
recover_dentry due to no dent_mark.
The reason is like below.
- The nid of "a" is checkpointed during #2, f2fs_sync_file.
- The inode page for "b" produced by #3 is written without dent_mark by
sync_node_pages.
So, this patch fixes this bug by assinging file_lost_pino to the "a"'s inode.
If the pino is lost, f2fs_sync_file conducts checkpoint, and then recovers
the latest pino and its dentry information for further recovery.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/binfmt_aout.c')
0 files changed, 0 insertions, 0 deletions