mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-17 01:34:00 +08:00
f2fs: inject ENOSPC failures
This patch injects ENOSPC failures. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
c41f3cc3ae
commit
cb78942b82
@ -474,6 +474,13 @@ int acquire_orphan_inode(struct f2fs_sb_info *sbi)
|
||||
int err = 0;
|
||||
|
||||
spin_lock(&im->ino_lock);
|
||||
|
||||
#ifdef CONFIG_F2FS_FAULT_INJECTION
|
||||
if (time_to_inject(FAULT_ORPHAN)) {
|
||||
spin_unlock(&im->ino_lock);
|
||||
return -ENOSPC;
|
||||
}
|
||||
#endif
|
||||
if (unlikely(im->ino_num >= sbi->max_orphans))
|
||||
err = -ENOSPC;
|
||||
else
|
||||
|
@ -537,6 +537,10 @@ int f2fs_add_regular_entry(struct inode *dir, const struct qstr *new_name,
|
||||
}
|
||||
|
||||
start:
|
||||
#ifdef CONFIG_F2FS_FAULT_INJECTION
|
||||
if (time_to_inject(FAULT_DIR_DEPTH))
|
||||
return -ENOSPC;
|
||||
#endif
|
||||
if (unlikely(current_depth == MAX_DIR_HASH_DEPTH))
|
||||
return -ENOSPC;
|
||||
|
||||
|
@ -41,6 +41,10 @@
|
||||
enum {
|
||||
FAULT_KMALLOC,
|
||||
FAULT_PAGE_ALLOC,
|
||||
FAULT_ALLOC_NID,
|
||||
FAULT_ORPHAN,
|
||||
FAULT_BLOCK,
|
||||
FAULT_DIR_DEPTH,
|
||||
FAULT_MAX,
|
||||
};
|
||||
|
||||
@ -1087,6 +1091,12 @@ static inline bool inc_valid_block_count(struct f2fs_sb_info *sbi,
|
||||
block_t valid_block_count;
|
||||
|
||||
spin_lock(&sbi->stat_lock);
|
||||
#ifdef CONFIG_F2FS_FAULT_INJECTION
|
||||
if (time_to_inject(FAULT_BLOCK)) {
|
||||
spin_unlock(&sbi->stat_lock);
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
valid_block_count =
|
||||
sbi->total_valid_block_count + (block_t)count;
|
||||
if (unlikely(valid_block_count > sbi->user_block_count)) {
|
||||
|
@ -1838,6 +1838,10 @@ bool alloc_nid(struct f2fs_sb_info *sbi, nid_t *nid)
|
||||
struct f2fs_nm_info *nm_i = NM_I(sbi);
|
||||
struct free_nid *i = NULL;
|
||||
retry:
|
||||
#ifdef CONFIG_F2FS_FAULT_INJECTION
|
||||
if (time_to_inject(FAULT_ALLOC_NID))
|
||||
return false;
|
||||
#endif
|
||||
if (unlikely(sbi->total_valid_node_count + 1 > nm_i->available_nids))
|
||||
return false;
|
||||
|
||||
|
@ -46,6 +46,10 @@ atomic_t f2fs_ops;
|
||||
char *fault_name[FAULT_MAX] = {
|
||||
[FAULT_KMALLOC] = "kmalloc",
|
||||
[FAULT_PAGE_ALLOC] = "page alloc",
|
||||
[FAULT_ALLOC_NID] = "alloc nid",
|
||||
[FAULT_ORPHAN] = "orphan",
|
||||
[FAULT_BLOCK] = "no more block",
|
||||
[FAULT_DIR_DEPTH] = "too big dir depth",
|
||||
};
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user