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

Commit 53aa6bbf authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

f2fs: inject to produce some orphan inodes



Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 42d96401
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ enum {
	FAULT_ORPHAN,
	FAULT_BLOCK,
	FAULT_DIR_DEPTH,
	FAULT_EVICT_INODE,
	FAULT_MAX,
};

@@ -74,6 +75,8 @@ static inline bool time_to_inject(int type)
		return false;
	else if (type == FAULT_DIR_DEPTH && !IS_FAULT_SET(type))
		return false;
	else if (type == FAULT_EVICT_INODE && !IS_FAULT_SET(type))
		return false;

	atomic_inc(&f2fs_fault.inject_ops);
	if (atomic_read(&f2fs_fault.inject_ops) >= f2fs_fault.inject_rate) {
+5 −0
Original line number Diff line number Diff line
@@ -345,6 +345,11 @@ void f2fs_evict_inode(struct inode *inode)
	if (inode->i_nlink || is_bad_inode(inode))
		goto no_delete;

#ifdef CONFIG_F2FS_FAULT_INJECTION
	if (time_to_inject(FAULT_EVICT_INODE))
		goto no_delete;
#endif

	sb_start_intwrite(inode->i_sb);
	set_inode_flag(inode, FI_NO_ALLOC);
	i_size_write(inode, 0);
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ char *fault_name[FAULT_MAX] = {
	[FAULT_ORPHAN]		= "orphan",
	[FAULT_BLOCK]		= "no more block",
	[FAULT_DIR_DEPTH]	= "too big dir depth",
	[FAULT_EVICT_INODE]	= "evict_inode fail",
};

static void f2fs_build_fault_attr(unsigned int rate)