diff mbox series

fstests: disable generic duperemove tests for NFS and others

Message ID 20241208180718.930987-1-cel@kernel.org (mailing list archive)
State New
Headers show
Series fstests: disable generic duperemove tests for NFS and others | expand

Commit Message

Chuck Lever Dec. 8, 2024, 6:07 p.m. UTC
From: Chuck Lever <chuck.lever@oracle.com>

On NFS mounts, at least, generic/559, 560, and 561 run for a very
long time, and usually fail.

The above tests already gate on whether duperemove is installed on
the test system, but when fstests is installed as part of an
automated workflow designed to handle many filesystem types,
duperemove is installed by default.

duperemove(8) states:

  Deduplication is currently only supported by the btrfs and xfs
  filesystem.

Ensure that the generic dedupe tests are run on only filesystems
where duperemove is known to work.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 tests/generic/559 | 1 +
 tests/generic/560 | 1 +
 tests/generic/561 | 1 +
 3 files changed, 3 insertions(+)

Comments

Dave Chinner Dec. 8, 2024, 8:01 p.m. UTC | #1
On Sun, Dec 08, 2024 at 01:07:18PM -0500, cel@kernel.org wrote:
> From: Chuck Lever <chuck.lever@oracle.com>
> 
> On NFS mounts, at least, generic/559, 560, and 561 run for a very
> long time, and usually fail.
> 
> The above tests already gate on whether duperemove is installed on
> the test system, but when fstests is installed as part of an
> automated workflow designed to handle many filesystem types,
> duperemove is installed by default.
> 
> duperemove(8) states:
> 
>   Deduplication is currently only supported by the btrfs and xfs
>   filesystem.
> 
> Ensure that the generic dedupe tests are run on only filesystems
> where duperemove is known to work.

Perhaps we should just remove this test. duperemove seems to be
quite flakey unreliable and keeps failing on my XFS test systems
(e.g. getting stuck in endless fiemap loops). I've set these tests
to be 'unreliable_in_parallel' because a 75% failure rate when the
system is under heavy load due to duperemove bugs is unacceptible in
a tool being used for a regression test.

-Dave.
Christoph Hellwig Dec. 9, 2024, 1:49 p.m. UTC | #2
> +_supported_fs btrfs xfs

This is not how generic tests works.   They need a helper in common
to check if a feature is present or not, which then probes for the
feature.  We should figure out what the issue is here first before
doing hacks like that as well.
Chuck Lever Dec. 9, 2024, 3 p.m. UTC | #3
On 12/9/24 8:49 AM, Christoph Hellwig wrote:
>> +_supported_fs btrfs xfs
> 
> This is not how generic tests works.   They need a helper in common
> to check if a feature is present or not, which then probes for the
> feature.

Someone who has knowledge of the interfaces and facilities that
duperemove depends on will need to construct such a helper. I can
only guess.


> We should figure out what the issue is here first before
> doing hacks like that as well.

To be clear, there are two issues:

1. Dave's report of unreliability on filesystems where it still makes
sense to use duperemove, and

2. How to disable this test on filesystems (like NFS) where duperemove
is not supported or where the test is not meaningful. The current check
for the presence of the duperemove executable is IMO inadequate.

For now I've expunged these three tests from the NFSD CI workflow.
Christoph Hellwig Dec. 9, 2024, 3:07 p.m. UTC | #4
On Mon, Dec 09, 2024 at 10:00:58AM -0500, Chuck Lever wrote:
> 2. How to disable this test on filesystems (like NFS) where duperemove
> is not supported or where the test is not meaningful. The current check
> for the presence of the duperemove executable is IMO inadequate.

I've not looked at dupremove, but the name suggested it's de-duplicating
and thus needs a working FIDEDUPERANGE ioctl.  So the test should check
for that using the _require_test_dedupe / _require_scratch_dedupe
helpers. generic/{559,560,561} do that, so something either in these
helpers is probably broken given that NFS rejects remap_file_range
with REMAP_FILE_DEDUP, although a bit of tracing would be useful if
there actually is something broken in NFS or the VFS.
Zorro Lang Dec. 9, 2024, 6:45 p.m. UTC | #5
On Sun, Dec 08, 2024 at 01:07:18PM -0500, cel@kernel.org wrote:
> From: Chuck Lever <chuck.lever@oracle.com>
> 
> On NFS mounts, at least, generic/559, 560, and 561 run for a very
> long time, and usually fail.
> 
> The above tests already gate on whether duperemove is installed on
> the test system, but when fstests is installed as part of an
> automated workflow designed to handle many filesystem types,
> duperemove is installed by default.
> 
> duperemove(8) states:
> 
>   Deduplication is currently only supported by the btrfs and xfs
>   filesystem.

If so, I'm good to limit this test on btrfs and xfs. It might be better to
add this comment to "_supported_fs btrfs xfs". Anyway,

Reviewed-by: Zorro Lang <zlang@redhat.com>

(This's a fstests patch, send to fstests@vger.kernel.org.)

Thanks,
Zorro

> 
> Ensure that the generic dedupe tests are run on only filesystems
> where duperemove is known to work.
> 
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
>  tests/generic/559 | 1 +
>  tests/generic/560 | 1 +
>  tests/generic/561 | 1 +
>  3 files changed, 3 insertions(+)
> 
> diff --git a/tests/generic/559 b/tests/generic/559
> index 28cf2e1a32c2..cf80be92142d 100755
> --- a/tests/generic/559
> +++ b/tests/generic/559
> @@ -13,6 +13,7 @@ _begin_fstest auto stress dedupe
>  . ./common/filter
>  . ./common/reflink
>  
> +_supported_fs btrfs xfs
>  _require_scratch_duperemove
>  
>  fssize=$((2 * 1024 * 1024 * 1024))
> diff --git a/tests/generic/560 b/tests/generic/560
> index 067d3ec0049e..a94b512efda1 100755
> --- a/tests/generic/560
> +++ b/tests/generic/560
> @@ -15,6 +15,7 @@ _begin_fstest auto stress dedupe
>  . ./common/filter
>  . ./common/reflink
>  
> +_supported_fs btrfs xfs
>  _require_scratch_duperemove
>  
>  _scratch_mkfs > $seqres.full 2>&1
> diff --git a/tests/generic/561 b/tests/generic/561
> index afe727ac56cb..da5f111c5b23 100755
> --- a/tests/generic/561
> +++ b/tests/generic/561
> @@ -28,6 +28,7 @@ _cleanup()
>  . ./common/filter
>  . ./common/reflink
>  
> +_supported_fs btrfs xfs
>  _require_scratch_duperemove
>  
>  _scratch_mkfs > $seqres.full 2>&1
> -- 
> 2.47.0
> 
>
Chuck Lever Dec. 9, 2024, 6:50 p.m. UTC | #6
On 12/9/24 1:45 PM, Zorro Lang wrote:
> On Sun, Dec 08, 2024 at 01:07:18PM -0500, cel@kernel.org wrote:
>> From: Chuck Lever <chuck.lever@oracle.com>
>>
>> On NFS mounts, at least, generic/559, 560, and 561 run for a very
>> long time, and usually fail.
>>
>> The above tests already gate on whether duperemove is installed on
>> the test system, but when fstests is installed as part of an
>> automated workflow designed to handle many filesystem types,
>> duperemove is installed by default.
>>
>> duperemove(8) states:
>>
>>    Deduplication is currently only supported by the btrfs and xfs
>>    filesystem.
> 
> If so, I'm good to limit this test on btrfs and xfs. It might be better to
> add this comment to "_supported_fs btrfs xfs". Anyway,
> 
> Reviewed-by: Zorro Lang <zlang@redhat.com>
> 
> (This's a fstests patch, send to fstests@vger.kernel.org.)

Noted.

Christoph requested additional root cause analysis to see why the
existing feature check utilities are not blocking these tests on NFS.
I plan to look into that and repost if needed.


> Thanks,
> Zorro
> 
>>
>> Ensure that the generic dedupe tests are run on only filesystems
>> where duperemove is known to work.
>>
>> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
>> ---
>>   tests/generic/559 | 1 +
>>   tests/generic/560 | 1 +
>>   tests/generic/561 | 1 +
>>   3 files changed, 3 insertions(+)
>>
>> diff --git a/tests/generic/559 b/tests/generic/559
>> index 28cf2e1a32c2..cf80be92142d 100755
>> --- a/tests/generic/559
>> +++ b/tests/generic/559
>> @@ -13,6 +13,7 @@ _begin_fstest auto stress dedupe
>>   . ./common/filter
>>   . ./common/reflink
>>   
>> +_supported_fs btrfs xfs
>>   _require_scratch_duperemove
>>   
>>   fssize=$((2 * 1024 * 1024 * 1024))
>> diff --git a/tests/generic/560 b/tests/generic/560
>> index 067d3ec0049e..a94b512efda1 100755
>> --- a/tests/generic/560
>> +++ b/tests/generic/560
>> @@ -15,6 +15,7 @@ _begin_fstest auto stress dedupe
>>   . ./common/filter
>>   . ./common/reflink
>>   
>> +_supported_fs btrfs xfs
>>   _require_scratch_duperemove
>>   
>>   _scratch_mkfs > $seqres.full 2>&1
>> diff --git a/tests/generic/561 b/tests/generic/561
>> index afe727ac56cb..da5f111c5b23 100755
>> --- a/tests/generic/561
>> +++ b/tests/generic/561
>> @@ -28,6 +28,7 @@ _cleanup()
>>   . ./common/filter
>>   . ./common/reflink
>>   
>> +_supported_fs btrfs xfs
>>   _require_scratch_duperemove
>>   
>>   _scratch_mkfs > $seqres.full 2>&1
>> -- 
>> 2.47.0
>>
>>
>
Chuck Lever Dec. 9, 2024, 7:35 p.m. UTC | #7
On 12/9/24 10:07 AM, Christoph Hellwig wrote:
> On Mon, Dec 09, 2024 at 10:00:58AM -0500, Chuck Lever wrote:
>> 2. How to disable this test on filesystems (like NFS) where duperemove
>> is not supported or where the test is not meaningful. The current check
>> for the presence of the duperemove executable is IMO inadequate.
> 
> I've not looked at dupremove, but the name suggested it's de-duplicating
> and thus needs a working FIDEDUPERANGE ioctl.  So the test should check
> for that using the _require_test_dedupe / _require_scratch_dedupe
> helpers. generic/{559,560,561} do that, so something either in these
> helpers is probably broken given that NFS rejects remap_file_range
> with REMAP_FILE_DEDUP, although a bit of tracing would be useful if
> there actually is something broken in NFS or the VFS.

It doesn't appear to be an NFS problem; duperemove is not even issuing
the ioctl as a toe-test to see if it will work.

I opened https://github.com/markfasheh/duperemove/issues/363
diff mbox series

Patch

diff --git a/tests/generic/559 b/tests/generic/559
index 28cf2e1a32c2..cf80be92142d 100755
--- a/tests/generic/559
+++ b/tests/generic/559
@@ -13,6 +13,7 @@  _begin_fstest auto stress dedupe
 . ./common/filter
 . ./common/reflink
 
+_supported_fs btrfs xfs
 _require_scratch_duperemove
 
 fssize=$((2 * 1024 * 1024 * 1024))
diff --git a/tests/generic/560 b/tests/generic/560
index 067d3ec0049e..a94b512efda1 100755
--- a/tests/generic/560
+++ b/tests/generic/560
@@ -15,6 +15,7 @@  _begin_fstest auto stress dedupe
 . ./common/filter
 . ./common/reflink
 
+_supported_fs btrfs xfs
 _require_scratch_duperemove
 
 _scratch_mkfs > $seqres.full 2>&1
diff --git a/tests/generic/561 b/tests/generic/561
index afe727ac56cb..da5f111c5b23 100755
--- a/tests/generic/561
+++ b/tests/generic/561
@@ -28,6 +28,7 @@  _cleanup()
 . ./common/filter
 . ./common/reflink
 
+_supported_fs btrfs xfs
 _require_scratch_duperemove
 
 _scratch_mkfs > $seqres.full 2>&1