On Thu, Nov 10, 2022 at 02:35:49AM +0800, Yangtao Li wrote: > +++ b/fs/f2fs/segment.c > @@ -486,7 +486,17 @@ void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi, bool from_bg) > static int __submit_flush_wait(struct f2fs_sb_info *sbi, > struct block_device *bdev) > { > - int ret = blkdev_issue_flush(bdev); > + int ret; > + > + if (time_to_inject(sbi, FAULT_FLUSH)) { > + f2fs_show_injection_info(sbi, FAULT_FLUSH); > + ret = -EIO; > + goto submit; submit? You don't submit anything at the 'submit' label. it should be called 'skip' or something. But I think this is just badly written and you don't need a goto at all. What I don't understand about this patch is why you want it at all. What failure are you simulating? It appears to me that you're simulating a bug in the filesystem, or maybe a bug in the device firmware. But why do you want to do that? > + } > + > + ret = blkdev_issue_flush(bdev); > + > +submit: > > trace_f2fs_issue_flush(bdev, test_opt(sbi, NOBARRIER), > test_opt(sbi, FLUSH_MERGE), ret); > diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c > index a43d8a46a6e5..3d3d22ac527b 100644 > --- a/fs/f2fs/super.c > +++ b/fs/f2fs/super.c > @@ -62,6 +62,7 @@ const char *f2fs_fault_name[FAULT_MAX] = { > [FAULT_DQUOT_INIT] = "dquot initialize", > [FAULT_LOCK_OP] = "lock_op", > [FAULT_BLKADDR] = "invalid blkaddr", > + [FAULT_FLUSH] = "flush error", > }; > > void f2fs_build_fault_attr(struct f2fs_sb_info *sbi, unsigned int rate, > -- > 2.25.1 >