f2fs: add fault injection on f2fs_truncate
authorJaegeuk Kim <jaegeuk@kernel.org>
Thu, 9 Mar 2017 23:24:24 +0000 (15:24 -0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 22 Mar 2017 02:34:26 +0000 (22:34 -0400)
Inject a fault during f2fs_truncate().

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h
fs/f2fs/file.c
fs/f2fs/super.c

index b549b53..7c9685c 100644 (file)
@@ -50,6 +50,7 @@ enum {
        FAULT_BLOCK,
        FAULT_DIR_DEPTH,
        FAULT_EVICT_INODE,
+       FAULT_TRUNCATE,
        FAULT_IO,
        FAULT_CHECKPOINT,
        FAULT_MAX,
index 300d620..af50758 100644 (file)
@@ -620,6 +620,12 @@ int f2fs_truncate(struct inode *inode)
 
        trace_f2fs_truncate(inode);
 
+#ifdef CONFIG_F2FS_FAULT_INJECTION
+       if (time_to_inject(F2FS_I_SB(inode), FAULT_TRUNCATE)) {
+               f2fs_show_injection_info(FAULT_TRUNCATE);
+               return -EIO;
+       }
+#endif
        /* we should check inline_data size */
        if (!f2fs_may_inline_data(inode)) {
                err = f2fs_convert_inline_inode(inode);
index cfb40d3..17126a2 100644 (file)
@@ -49,6 +49,7 @@ char *fault_name[FAULT_MAX] = {
        [FAULT_BLOCK]           = "no more block",
        [FAULT_DIR_DEPTH]       = "too big dir depth",
        [FAULT_EVICT_INODE]     = "evict_inode fail",
+       [FAULT_TRUNCATE]        = "truncate fail",
        [FAULT_IO]              = "IO error",
        [FAULT_CHECKPOINT]      = "checkpoint error",
 };