diff options
| author | Jaegeuk Kim <jaegeuk@kernel.org> | 2017-03-09 15:24:24 -0800 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2017-05-21 18:38:06 +0200 |
| commit | bb0acf1c4c729f0460da78eef15d25cd0cf00253 (patch) | |
| tree | a37ab8ec404e7dc36c771c173cc057e6afa0c7e1 | |
| parent | b888bbe3d6c1ab7a77d03fe7e899730fd31e2ecc (diff) | |
f2fs: add fault injection on f2fs_truncate
Inject a fault during f2fs_truncate().
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
| -rw-r--r-- | fs/f2fs/f2fs.h | 1 | ||||
| -rw-r--r-- | fs/f2fs/file.c | 6 | ||||
| -rw-r--r-- | fs/f2fs/super.c | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index f082e85c3..4ccbfe49f 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -52,6 +52,7 @@ enum { FAULT_BLOCK, FAULT_DIR_DEPTH, FAULT_EVICT_INODE, + FAULT_TRUNCATE, FAULT_IO, FAULT_CHECKPOINT, FAULT_MAX, diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index c5dbe9ff8..29f39b6b4 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -640,6 +640,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); diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index dd60f4b34..8e4d022ac 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -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", }; |
