Commit 10a26878 authored by Chao Yu's avatar Chao Yu Committed by Jaegeuk Kim
Browse files

f2fs: support fault injection for dquot_initialize()



This patch adds a new function f2fs_dquot_initialize() to wrap
dquot_initialize(), and it supports to inject fault into
f2fs_dquot_initialize() to simulate inner failure occurs in
dquot_initialize().

Usage:
a) echo 65536 > /sys/fs/f2fs/<dev>/inject_type or
b) mount -o fault_type=65536 <dev> <mountpoint>

Signed-off-by: default avatarChao Yu <chao@kernel.org>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent ca98d721
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ fault_type=%d Support configuring fault injection type, should be
			 FAULT_DISCARD		  0x000002000
			 FAULT_WRITE_IO		  0x000004000
			 FAULT_SLAB_ALLOC	  0x000008000
			 FAULT_DQUOT_INIT	  0x000010000
			 ===================	  ===========
mode=%s			 Control block allocation mode which supports "adaptive"
			 and "lfs". In "lfs" mode, there should be no random
+1 −1
Original line number Diff line number Diff line
@@ -653,7 +653,7 @@ static int recover_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino)
		return PTR_ERR(inode);
	}

	err = dquot_initialize(inode);
	err = f2fs_dquot_initialize(inode);
	if (err) {
		iput(inode);
		goto err_out;
+2 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ enum {
	FAULT_DISCARD,
	FAULT_WRITE_IO,
	FAULT_SLAB_ALLOC,
	FAULT_DQUOT_INIT,
	FAULT_MAX,
};

@@ -3376,6 +3377,7 @@ static inline int f2fs_add_link(struct dentry *dentry, struct inode *inode)
 */
int f2fs_inode_dirtied(struct inode *inode, bool sync);
void f2fs_inode_synced(struct inode *inode);
int f2fs_dquot_initialize(struct inode *inode);
int f2fs_enable_quota_files(struct f2fs_sb_info *sbi, bool rdonly);
int f2fs_quota_sync(struct super_block *sb, int type);
loff_t max_file_blocks(struct inode *inode);
+3 −3
Original line number Diff line number Diff line
@@ -786,7 +786,7 @@ int f2fs_truncate(struct inode *inode)
		return -EIO;
	}

	err = dquot_initialize(inode);
	err = f2fs_dquot_initialize(inode);
	if (err)
		return err;

@@ -916,7 +916,7 @@ int f2fs_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
		return err;

	if (is_quota_modification(inode, attr)) {
		err = dquot_initialize(inode);
		err = f2fs_dquot_initialize(inode);
		if (err)
			return err;
	}
@@ -3020,7 +3020,7 @@ static int f2fs_ioc_setproject(struct inode *inode, __u32 projid)
	}
	f2fs_put_page(ipage, 1);

	err = dquot_initialize(inode);
	err = f2fs_dquot_initialize(inode);
	if (err)
		return err;

+1 −1
Original line number Diff line number Diff line
@@ -192,7 +192,7 @@ int f2fs_convert_inline_inode(struct inode *inode)
			f2fs_hw_is_readonly(sbi) || f2fs_readonly(sbi->sb))
		return 0;

	err = dquot_initialize(inode);
	err = f2fs_dquot_initialize(inode);
	if (err)
		return err;

Loading