Re: [PATCH 0/2] Fix failing overlay nonsamefs fstests

Amir Goldstein
2018-04-23T15:57:23Z

On Mon, Apr 23, 2018 at 8:12 AM, Miklos Szeredi <miklos@szeredi.hu> wrote:
> On Mon, Apr 23, 2018 at 4:50 PM, Amir Goldstein <amir73il@gmail.com> wrote:
>> On Mon, Apr 23, 2018 at 6:37 AM, Miklos Szeredi <miklos@szeredi.hu> wrote:
>>> On Wed, Apr 18, 2018 at 4:30 PM, Amir Goldstein <amir73il@gmail.com> wrote:
>>>> On Wed, Apr 18, 2018 at 5:23 PM, Miklos Szeredi <miklos@szeredi.hu> wrote:
>>>>> On Wed, Apr 18, 2018 at 4:16 PM, Amir Goldstein <amir73il@gmail.com> wrote:
>>>>>
>>>>>> FYI, Miklos has a patch set in review to fix the last of the
>>>>>> non-standard behavior tracking test that is still failing (overlay/016).
>>>>>> After that patch set is merged, all overlay tests will be expected to
>>>>>> pass on master - new era ;-)
>>>>>
>>>>> Oh, we can write new tests that don't pass ;)
>>>
>>> Another one:
>>>
>>> fstat() returns incorrect st_ctime after unlink of a lower file/directory.
>>>
>>> Alternative fixes:
>>>
>>> 1) take some attributes from whiteout
>>>
>>> 2) metacopy up to tmpfile

I have patches to copy up to an "orphan index":
https://github.com/amir73il/linux/commits/ovl-rocopyup

combine that with metacopy and you have a ready and
inexpensive place holder for st_ctime of unlinked file.

>>>
>>> But first of all, we need a test case that fails, otherwise there's no
>>> motivation to do the fix ;)
>>>
>>
>> I admit that the failing xfstests I wrote have had a "motivating"
>> effect, but going forward, I feel that xfstests is not really the place
>> for these sort of weird behavior tests. I find it to be more suiting as
>> a regression tracking test suite and special test case coverage.
>>
>> IMO, parent ctime fits better to a POSIX compliance test suite, such
>> as pdjfstest.
>
> I'm not talking about parent ctime, rather victim ctime (updated due
> to nlink change).
>
>>
>> And besides, overlayfs now feels it is in a functional state that is worthy
>> of PASS. Sure, that is a very subjective observation.
>>
>>> I'm wondering, would it make sense to manually add "rotation points"
>>> to plain xfstest test cases?
>>
>> Can you give an example of an xfstest and a rotation point?
>
> Any test where there is a setup phase and a test phase is asking for a
> rotation point (i.e. set up on lower (no-overlay) and then modify on
> overlay).

xfstest cases do not have a setup phase and run phase, so
I don't see a way that this could be done elegantly without
modifying all test cases.

>
> I haven't thought about individual test cases, just wondering if
> there's already a testcase testing st_ctime on unlink for example,
> that is only not failing because there isn't a rotation of overlay
> after the setup phase.
>

>From what I can see there are a few tests checking ctime update,
mainly regression tests for btrfs ctime update bugs:
$ git grep ctime.update tests/
tests/generic/221:# Check ctime updates when calling futimens without
UTIME_OMIT for the
tests/generic/236:# Check ctime updated or not if file linked
tests/generic/236:# check ctime updated
tests/generic/277:# Check if ctime update caused by chattr is written to disk
tests/generic/408: echo "ctime updated"

generic/236 tests the link use case, but no test for unlink AFAIK.

Thanks,
Amir.