f2fs: add F2FS_GOING_DOWN_METAFLUSH to test power-failure
authorJaegeuk Kim <jaegeuk@kernel.org>
Wed, 7 Oct 2015 16:46:37 +0000 (09:46 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 12 Oct 2015 20:37:54 +0000 (13:37 -0700)
This patch introduces F2FS_GOING_DOWN_METAFLUSH which flushes meta pages like
SSA blocks and then blocks all the writes.
This can be used by power-failure tests.

Reviewed-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h
fs/f2fs/file.c

index aad4720c516e4dfe748bace693ebb8f3b2ac7237..f05ae22558e207e9afa10037f7b1e4630d2a92de 100644 (file)
@@ -250,6 +250,7 @@ static inline bool __has_cursum_space(struct f2fs_summary_block *sum, int size,
 #define F2FS_GOING_DOWN_FULLSYNC       0x0     /* going down with full sync */
 #define F2FS_GOING_DOWN_METASYNC       0x1     /* going down with metadata */
 #define F2FS_GOING_DOWN_NOSYNC         0x2     /* going down */
+#define F2FS_GOING_DOWN_METAFLUSH      0x3     /* going down with meta flush */
 
 #if defined(__KERNEL__) && defined(CONFIG_COMPAT)
 /*
index b3985a680521a6f38cb0be4e4bdd726a0ce80d65..6d3cfd55c3e41c3afdad508cb48aec07ac9dc420 100644 (file)
@@ -1498,6 +1498,10 @@ static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)
        case F2FS_GOING_DOWN_NOSYNC:
                f2fs_stop_checkpoint(sbi);
                break;
+       case F2FS_GOING_DOWN_METAFLUSH:
+               sync_meta_pages(sbi, META, LONG_MAX);
+               f2fs_stop_checkpoint(sbi);
+               break;
        default:
                return -EINVAL;
        }