Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f348028 authored by Chao Yu's avatar Chao Yu Committed by Jaegeuk Kim
Browse files

f2fs: support checkpoint error injection



This patch adds to support checkpoint error injection in f2fs for testing
fatal error tolerance, it will be useful that it can simulate abnormal
power off by f2fs itself instead of calling godown ioctl by running apps.

Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 2443b8b3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ enum {
	FAULT_DIR_DEPTH,
	FAULT_EVICT_INODE,
	FAULT_IO,
	FAULT_CHECKPOINT,
	FAULT_MAX,
};

+5 −0
Original line number Diff line number Diff line
@@ -47,6 +47,11 @@ static int gc_thread_func(void *data)
			continue;
		}

#ifdef CONFIG_F2FS_FAULT_INJECTION
		if (time_to_inject(sbi, FAULT_CHECKPOINT))
			f2fs_stop_checkpoint(sbi, false);
#endif

		/*
		 * [GC triggering condition]
		 * 0. GC is not conducted currently.
+5 −0
Original line number Diff line number Diff line
@@ -345,6 +345,11 @@ int commit_inmem_pages(struct inode *inode)
 */
void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need)
{
#ifdef CONFIG_F2FS_FAULT_INJECTION
	if (time_to_inject(sbi, FAULT_CHECKPOINT))
		f2fs_stop_checkpoint(sbi, false);
#endif

	if (!need)
		return;

+1 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ char *fault_name[FAULT_MAX] = {
	[FAULT_DIR_DEPTH]	= "too big dir depth",
	[FAULT_EVICT_INODE]	= "evict_inode fail",
	[FAULT_IO]		= "IO error",
	[FAULT_CHECKPOINT]	= "checkpoint error",
};

static void f2fs_build_fault_attr(struct f2fs_sb_info *sbi,