Loading fs/f2fs/checkpoint.c +7 −0 Original line number Diff line number Diff line Loading @@ -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 Loading fs/f2fs/dir.c +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading fs/f2fs/f2fs.h +10 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,10 @@ enum { FAULT_KMALLOC, FAULT_PAGE_ALLOC, FAULT_ALLOC_NID, FAULT_ORPHAN, FAULT_BLOCK, FAULT_DIR_DEPTH, FAULT_MAX, }; Loading Loading @@ -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)) { Loading fs/f2fs/node.c +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading fs/f2fs/super.c +4 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
fs/f2fs/checkpoint.c +7 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
fs/f2fs/dir.c +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
fs/f2fs/f2fs.h +10 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,10 @@ enum { FAULT_KMALLOC, FAULT_PAGE_ALLOC, FAULT_ALLOC_NID, FAULT_ORPHAN, FAULT_BLOCK, FAULT_DIR_DEPTH, FAULT_MAX, }; Loading Loading @@ -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)) { Loading
fs/f2fs/node.c +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
fs/f2fs/super.c +4 −0 Original line number Diff line number Diff line Loading @@ -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