Re: [PATCH 2/3] f2fs: support checkpoint error injection

From: Jaegeuk Kim
Date: Sat Sep 24 2016 - 14:10:51 EST

On Sat, Sep 24, 2016 at 11:32:08AM +0800, Chao Yu wrote:
> On 2016/9/24 8:52, Jaegeuk Kim wrote:
> > On Sat, Sep 24, 2016 at 08:46:54AM +0800, Chao Yu wrote:
> >> Hi Jaegeuk,
> >>
> >> On 2016/9/24 7:53, Jaegeuk Kim wrote:
> >>> Hi Chao,
> >>>
> >>> The basic rule is to stop every operations once CP_ERROR_FLAG is set.
> >>> But, this patch simply breaks the rule.
> >>> For example, f2fs_write_data_page() currently exits with mapping_set_error().
> >>> So this patch incurs missing dentry blocks in a valid checkpoint.
> >>
> >> Yes, that's right.
> >>
> >> How about triggering checkpoint error in f2fs_stop_checkpoint?
> >
> > Let's just use src/godown in xfstests, since we don't need to trigger this
> > multiple times in runtime.
> After we inject checkpoint error into f2fs at first time, all write IOs will be
> refused to be writebacked to storage, meanwhile read IOs can continuously go
> through f2fs, so with checkpoint error injection being supported, we can support
> to trigger random analogously power off by f2fs itself, instead of using tools.
> It means it doesn't needs specified test cases where we must use godown ioctl,
> but with normal testcases in xfstest/fsstress/lkp, in CP error injection enabled
> f2fs, we can test power off cases.

But, in this approach, the test coverage would be quite limited.
In my testcase, I'm randomly injecting godown while fsstress is running, which
mimics really random power failures, as I believe. I'm running this infinitely
with fscking at every run.

Anyway, in order to do this without godown, how about background_gc thread to
trigger f2fs_stop_checkpoint?

> Thanks,