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

From: Chao Yu
Date: Sun Sep 25 2016 - 21:04:45 EST

On 2016/9/25 2:10, Jaegeuk Kim wrote:
> 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?

Yeap, better.

What do you think of adding random f2fs_stop_checkpoint in f2fs_balance_fs?
power off can be triggered if gc thread is not running.


>> Thanks,
> .