mbox series

[v2,00/10] xfstests: add copy/dedupe/clone to fsx/fsstress

Message ID 154275100143.8611.10235098565750994724.stgit@magnolia (mailing list archive)
Headers show
Series xfstests: add copy/dedupe/clone to fsx/fsstress | expand

Message

Darrick J. Wong Nov. 20, 2018, 9:56 p.m. UTC
Hi all,

This series adds to fsx and fsstress support for FICLONERANGE,
FIDEDUPERANGE, and copy_file_range.

First, I fix some gcc warnings in fsx.

Then, I teach fsx to read the fsx file after every operation to compare
it to the good buffer.  This made it easier for me to find corruption
problem as soon as they happen, though I'm not sure it really makes
sense to have this enabled by default because of the behavior change
that it makes.

Next come a couple of generic reworks to fsx that we need to support the
new clone/dedupe/copy commands.

Patches 5-6 add clone and dedupe to fsx.

Patches 7-8 add copy_file_range support to fsstress and fsx.

Dave Chinner contributed some cleanups to the fsx patches as the 9th
patch.

The last patch fixes the common/dump tests to disable the new commands
so that the dump/restore tests continue to function exactly as they have
for years.

There are known failures in 4.20-rc3, particularly with copy_file_range,
which hopefully have been fixed by the patch series that Dave Chinner
posted to the xfs list yesterday.  Branch can be downloaded here[1].

--D

[1] https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfstests-dev.git/log/?h=fsstress-clone

Comments

Luis Henriques Dec. 10, 2018, 5:30 p.m. UTC | #1
"Darrick J. Wong" <darrick.wong@oracle.com> writes:

> Hi all,
>
> This series adds to fsx and fsstress support for FICLONERANGE,
> FIDEDUPERANGE, and copy_file_range.
>
> First, I fix some gcc warnings in fsx.
>
> Then, I teach fsx to read the fsx file after every operation to compare
> it to the good buffer.  This made it easier for me to find corruption
> problem as soon as they happen, though I'm not sure it really makes
> sense to have this enabled by default because of the behavior change
> that it makes.
>
> Next come a couple of generic reworks to fsx that we need to support the
> new clone/dedupe/copy commands.
>
> Patches 5-6 add clone and dedupe to fsx.
>
> Patches 7-8 add copy_file_range support to fsstress and fsx.

An annoying side-effect of these changes is that I now see a couple of
new generic tests failing on cephfs (for example, generic/075).  That's
because fsx does use copy_file_range with the same fd both as source and
destination.  We currently return -EINVAL in that case (as nfs and cifs
seem to be doing as well btw).

At least for the cephfs, this check could eventually be changed but I
would need to spend some time trying and testing the effects of
offloading object copies on the same file.  Of course that another
(easy!) option would be to simply return -EOPNOTSUPP instead and
fallback to the VFS implementation.

Cheers,
Darrick J. Wong Dec. 12, 2018, 4:58 a.m. UTC | #2
On Mon, Dec 10, 2018 at 05:30:54PM +0000, Luis Henriques wrote:
> "Darrick J. Wong" <darrick.wong@oracle.com> writes:
> 
> > Hi all,
> >
> > This series adds to fsx and fsstress support for FICLONERANGE,
> > FIDEDUPERANGE, and copy_file_range.
> >
> > First, I fix some gcc warnings in fsx.
> >
> > Then, I teach fsx to read the fsx file after every operation to compare
> > it to the good buffer.  This made it easier for me to find corruption
> > problem as soon as they happen, though I'm not sure it really makes
> > sense to have this enabled by default because of the behavior change
> > that it makes.
> >
> > Next come a couple of generic reworks to fsx that we need to support the
> > new clone/dedupe/copy commands.
> >
> > Patches 5-6 add clone and dedupe to fsx.
> >
> > Patches 7-8 add copy_file_range support to fsstress and fsx.
> 
> An annoying side-effect of these changes is that I now see a couple of
> new generic tests failing on cephfs (for example, generic/075).  That's
> because fsx does use copy_file_range with the same fd both as source and
> destination.  We currently return -EINVAL in that case (as nfs and cifs
> seem to be doing as well btw).
> 
> At least for the cephfs, this check could eventually be changed but I
> would need to spend some time trying and testing the effects of
> offloading object copies on the same file.  Of course that another
> (easy!) option would be to simply return -EOPNOTSUPP instead and
> fallback to the VFS implementation.

I think Dave Chinner's copy_file_range cleanup series fixes that, among
other problems.

--D

> Cheers,
> -- 
> Luis
> 
> >
> > Dave Chinner contributed some cleanups to the fsx patches as the 9th
> > patch.
> >
> > The last patch fixes the common/dump tests to disable the new commands
> > so that the dump/restore tests continue to function exactly as they have
> > for years.
> >
> > There are known failures in 4.20-rc3, particularly with copy_file_range,
> > which hopefully have been fixed by the patch series that Dave Chinner
> > posted to the xfs list yesterday.  Branch can be downloaded here[1].
> >
> > --D
> >
> > [1] https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfstests-dev.git/log/?h=fsstress-clone
Luis Henriques Dec. 12, 2018, 11:19 a.m. UTC | #3
"Darrick J. Wong" <darrick.wong@oracle.com> writes:

> On Mon, Dec 10, 2018 at 05:30:54PM +0000, Luis Henriques wrote:
>> "Darrick J. Wong" <darrick.wong@oracle.com> writes:
>> 
>> > Hi all,
>> >
>> > This series adds to fsx and fsstress support for FICLONERANGE,
>> > FIDEDUPERANGE, and copy_file_range.
>> >
>> > First, I fix some gcc warnings in fsx.
>> >
>> > Then, I teach fsx to read the fsx file after every operation to compare
>> > it to the good buffer.  This made it easier for me to find corruption
>> > problem as soon as they happen, though I'm not sure it really makes
>> > sense to have this enabled by default because of the behavior change
>> > that it makes.
>> >
>> > Next come a couple of generic reworks to fsx that we need to support the
>> > new clone/dedupe/copy commands.
>> >
>> > Patches 5-6 add clone and dedupe to fsx.
>> >
>> > Patches 7-8 add copy_file_range support to fsstress and fsx.
>> 
>> An annoying side-effect of these changes is that I now see a couple of
>> new generic tests failing on cephfs (for example, generic/075).  That's
>> because fsx does use copy_file_range with the same fd both as source and
>> destination.  We currently return -EINVAL in that case (as nfs and cifs
>> seem to be doing as well btw).
>> 
>> At least for the cephfs, this check could eventually be changed but I
>> would need to spend some time trying and testing the effects of
>> offloading object copies on the same file.  Of course that another
>> (easy!) option would be to simply return -EOPNOTSUPP instead and
>> fallback to the VFS implementation.
>
> I think Dave Chinner's copy_file_range cleanup series fixes that, among
> other problems.

No, unfortunately it doesn't because it's not really something that
would make sense to do at the VFS level.  CephFS currently does not
allow to offload a copy where the source and destination are the same
file so it simply returns -EINVAL.

But that could probably be changed with Chinner's patchset, because it
adds some extra checks that make it safe to simply return -EOPNOTSUPP
instead, and fallback to VFS implementation.  I'll follow-up on that in
the copy_file_range thread.

(And sorry for replying to the wrong email thread, I should have sent my
email to the latest version that actually got merged into the fstests.)

Cheers,