public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* _supports_xfs_scrub cleanups
@ 2024-01-11 14:24 Christoph Hellwig
  2024-01-11 14:24 ` [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub Christoph Hellwig
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Christoph Hellwig @ 2024-01-11 14:24 UTC (permalink / raw)
  To: zlang; +Cc: djwong, fstests, linux-xfs

Hi all,

this series adds a missing scrub support fix to xfs/262 and cleans
up a few bits around this.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub
  2024-01-11 14:24 _supports_xfs_scrub cleanups Christoph Hellwig
@ 2024-01-11 14:24 ` Christoph Hellwig
  2024-01-11 17:20   ` Darrick J. Wong
  2024-01-11 14:24 ` [PATCH 2/3] xfs: add a _scratch_require_xfs_scrub helper Christoph Hellwig
  2024-01-11 14:24 ` [PATCH 3/3] xfs/262: call _scratch_require_xfs_scrub Christoph Hellwig
  2 siblings, 1 reply; 12+ messages in thread
From: Christoph Hellwig @ 2024-01-11 14:24 UTC (permalink / raw)
  To: zlang; +Cc: djwong, fstests, linux-xfs

Add a sanity check that the passed in mount point is actually mounted
to guard against actually calling _supports_xfs_scrub before
$SCRATCH_MNT is mounted.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 common/xfs | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/common/xfs b/common/xfs
index f53b33fc5..9db998837 100644
--- a/common/xfs
+++ b/common/xfs
@@ -649,6 +649,8 @@ _supports_xfs_scrub()
 	test "$FSTYP" = "xfs" || return 1
 	test -x "$XFS_SCRUB_PROG" || return 1
 
+	mountpoint $mountpoint >/dev/null || echo "$mountpoint is not mounted"
+
 	# Probe for kernel support...
 	$XFS_IO_PROG -c 'help scrub' 2>&1 | grep -q 'types are:.*probe' || return 1
 	$XFS_IO_PROG -c "scrub probe" "$mountpoint" 2>&1 | grep -q "Inappropriate ioctl" && return 1
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/3] xfs: add a _scratch_require_xfs_scrub helper
  2024-01-11 14:24 _supports_xfs_scrub cleanups Christoph Hellwig
  2024-01-11 14:24 ` [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub Christoph Hellwig
@ 2024-01-11 14:24 ` Christoph Hellwig
  2024-01-11 17:20   ` Darrick J. Wong
  2024-01-11 14:24 ` [PATCH 3/3] xfs/262: call _scratch_require_xfs_scrub Christoph Hellwig
  2 siblings, 1 reply; 12+ messages in thread
From: Christoph Hellwig @ 2024-01-11 14:24 UTC (permalink / raw)
  To: zlang; +Cc: djwong, fstests, linux-xfs

Add a helper to call _supports_xfs_scrub with $SCRATCH_MNT and
$SCRATCH_DEV.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 common/xfs    | 7 +++++++
 tests/xfs/556 | 2 +-
 tests/xfs/716 | 2 +-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/common/xfs b/common/xfs
index 9db998837..bfe979dbb 100644
--- a/common/xfs
+++ b/common/xfs
@@ -661,6 +661,13 @@ _supports_xfs_scrub()
 	return 0
 }
 
+# Does the scratch file system support scrub?
+_scratch_require_xfs_scrub()
+{
+	_supports_xfs_scrub $SCRATCH_MNT $SCRATCH_DEV || \
+		_notrun "Scrub not supported"
+}
+
 # Save a snapshot of a corrupt xfs filesystem for later debugging.
 _xfs_metadump() {
 	local metadump="$1"
diff --git a/tests/xfs/556 b/tests/xfs/556
index 061d8d572..6be993273 100755
--- a/tests/xfs/556
+++ b/tests/xfs/556
@@ -40,7 +40,7 @@ _scratch_mkfs >> $seqres.full
 _dmerror_init
 _dmerror_mount >> $seqres.full 2>&1
 
-_supports_xfs_scrub $SCRATCH_MNT $SCRATCH_DEV || _notrun "Scrub not supported"
+_scratch_require_xfs_scrub
 
 # Write a file with 4 file blocks worth of data
 victim=$SCRATCH_MNT/a
diff --git a/tests/xfs/716 b/tests/xfs/716
index 930a0ecbb..4cfb27f18 100755
--- a/tests/xfs/716
+++ b/tests/xfs/716
@@ -31,7 +31,7 @@ _require_test_program "punch-alternating"
 _scratch_mkfs > $tmp.mkfs
 _scratch_mount
 
-_supports_xfs_scrub $SCRATCH_MNT $SCRATCH_DEV || _notrun "Scrub not supported"
+_scratch_require_xfs_scrub
 
 # Force data device extents so that we can create a file with the exact bmbt
 # that we need regardless of rt configuration.
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/3] xfs/262: call _scratch_require_xfs_scrub
  2024-01-11 14:24 _supports_xfs_scrub cleanups Christoph Hellwig
  2024-01-11 14:24 ` [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub Christoph Hellwig
  2024-01-11 14:24 ` [PATCH 2/3] xfs: add a _scratch_require_xfs_scrub helper Christoph Hellwig
@ 2024-01-11 14:24 ` Christoph Hellwig
  2024-01-11 17:20   ` Darrick J. Wong
  2 siblings, 1 reply; 12+ messages in thread
From: Christoph Hellwig @ 2024-01-11 14:24 UTC (permalink / raw)
  To: zlang; +Cc: djwong, fstests, linux-xfs

Call _scratch_require_xfs_scrub so that the test is _notrun on kernels
without online scrub support.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 tests/xfs/262 | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tests/xfs/262 b/tests/xfs/262
index b28a6c88b..0d1fd779d 100755
--- a/tests/xfs/262
+++ b/tests/xfs/262
@@ -29,6 +29,9 @@ _require_xfs_io_error_injection "force_repair"
 echo "Format and populate"
 _scratch_mkfs > "$seqres.full" 2>&1
 _scratch_mount
+
+_scratch_require_xfs_scrub
+
 cp $XFS_SCRUB_PROG $SCRATCH_MNT/xfs_scrub
 $LDD_PROG $XFS_SCRUB_PROG | sed -e '/\//!d;/linux-gate/d;/=>/ {s/.*=>[[:blank:]]*\([^[:blank:]]*\).*/\1/};s/[[:blank:]]*\([^[:blank:]]*\) (.*)/\1/' | while read lib; do
 	cp $lib $SCRATCH_MNT/
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub
  2024-01-11 14:24 ` [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub Christoph Hellwig
@ 2024-01-11 17:20   ` Darrick J. Wong
  2024-01-11 17:25     ` Christoph Hellwig
  0 siblings, 1 reply; 12+ messages in thread
From: Darrick J. Wong @ 2024-01-11 17:20 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: zlang, fstests, linux-xfs

On Thu, Jan 11, 2024 at 03:24:05PM +0100, Christoph Hellwig wrote:
> Add a sanity check that the passed in mount point is actually mounted
> to guard against actually calling _supports_xfs_scrub before
> $SCRATCH_MNT is mounted.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  common/xfs | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/common/xfs b/common/xfs
> index f53b33fc5..9db998837 100644
> --- a/common/xfs
> +++ b/common/xfs
> @@ -649,6 +649,8 @@ _supports_xfs_scrub()
>  	test "$FSTYP" = "xfs" || return 1
>  	test -x "$XFS_SCRUB_PROG" || return 1
>  
> +	mountpoint $mountpoint >/dev/null || echo "$mountpoint is not mounted"

The helper needs to return nonzero on failure, e.g.

	if ! mountpoint -q $mountpoint; then
		echo "$mountpoint is not mounted"
		return 1
	fi

> +
>  	# Probe for kernel support...
>  	$XFS_IO_PROG -c 'help scrub' 2>&1 | grep -q 'types are:.*probe' || return 1

Like it already does down here.

--D

>  	$XFS_IO_PROG -c "scrub probe" "$mountpoint" 2>&1 | grep -q "Inappropriate ioctl" && return 1
> -- 
> 2.39.2
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] xfs: add a _scratch_require_xfs_scrub helper
  2024-01-11 14:24 ` [PATCH 2/3] xfs: add a _scratch_require_xfs_scrub helper Christoph Hellwig
@ 2024-01-11 17:20   ` Darrick J. Wong
  0 siblings, 0 replies; 12+ messages in thread
From: Darrick J. Wong @ 2024-01-11 17:20 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: zlang, fstests, linux-xfs

On Thu, Jan 11, 2024 at 03:24:06PM +0100, Christoph Hellwig wrote:
> Add a helper to call _supports_xfs_scrub with $SCRATCH_MNT and
> $SCRATCH_DEV.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Thanks for the cleanup,
Reviewed-by: Darrick J. Wong <djwong@kernel.org>

--D

> ---
>  common/xfs    | 7 +++++++
>  tests/xfs/556 | 2 +-
>  tests/xfs/716 | 2 +-
>  3 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/common/xfs b/common/xfs
> index 9db998837..bfe979dbb 100644
> --- a/common/xfs
> +++ b/common/xfs
> @@ -661,6 +661,13 @@ _supports_xfs_scrub()
>  	return 0
>  }
>  
> +# Does the scratch file system support scrub?
> +_scratch_require_xfs_scrub()
> +{
> +	_supports_xfs_scrub $SCRATCH_MNT $SCRATCH_DEV || \
> +		_notrun "Scrub not supported"
> +}
> +
>  # Save a snapshot of a corrupt xfs filesystem for later debugging.
>  _xfs_metadump() {
>  	local metadump="$1"
> diff --git a/tests/xfs/556 b/tests/xfs/556
> index 061d8d572..6be993273 100755
> --- a/tests/xfs/556
> +++ b/tests/xfs/556
> @@ -40,7 +40,7 @@ _scratch_mkfs >> $seqres.full
>  _dmerror_init
>  _dmerror_mount >> $seqres.full 2>&1
>  
> -_supports_xfs_scrub $SCRATCH_MNT $SCRATCH_DEV || _notrun "Scrub not supported"
> +_scratch_require_xfs_scrub
>  
>  # Write a file with 4 file blocks worth of data
>  victim=$SCRATCH_MNT/a
> diff --git a/tests/xfs/716 b/tests/xfs/716
> index 930a0ecbb..4cfb27f18 100755
> --- a/tests/xfs/716
> +++ b/tests/xfs/716
> @@ -31,7 +31,7 @@ _require_test_program "punch-alternating"
>  _scratch_mkfs > $tmp.mkfs
>  _scratch_mount
>  
> -_supports_xfs_scrub $SCRATCH_MNT $SCRATCH_DEV || _notrun "Scrub not supported"
> +_scratch_require_xfs_scrub
>  
>  # Force data device extents so that we can create a file with the exact bmbt
>  # that we need regardless of rt configuration.
> -- 
> 2.39.2
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] xfs/262: call _scratch_require_xfs_scrub
  2024-01-11 14:24 ` [PATCH 3/3] xfs/262: call _scratch_require_xfs_scrub Christoph Hellwig
@ 2024-01-11 17:20   ` Darrick J. Wong
  0 siblings, 0 replies; 12+ messages in thread
From: Darrick J. Wong @ 2024-01-11 17:20 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: zlang, fstests, linux-xfs

On Thu, Jan 11, 2024 at 03:24:07PM +0100, Christoph Hellwig wrote:
> Call _scratch_require_xfs_scrub so that the test is _notrun on kernels
> without online scrub support.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Looks good!
Reviewed-by: Darrick J. Wong <djwong@kernel.org>

--D

> ---
>  tests/xfs/262 | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/tests/xfs/262 b/tests/xfs/262
> index b28a6c88b..0d1fd779d 100755
> --- a/tests/xfs/262
> +++ b/tests/xfs/262
> @@ -29,6 +29,9 @@ _require_xfs_io_error_injection "force_repair"
>  echo "Format and populate"
>  _scratch_mkfs > "$seqres.full" 2>&1
>  _scratch_mount
> +
> +_scratch_require_xfs_scrub
> +
>  cp $XFS_SCRUB_PROG $SCRATCH_MNT/xfs_scrub
>  $LDD_PROG $XFS_SCRUB_PROG | sed -e '/\//!d;/linux-gate/d;/=>/ {s/.*=>[[:blank:]]*\([^[:blank:]]*\).*/\1/};s/[[:blank:]]*\([^[:blank:]]*\) (.*)/\1/' | while read lib; do
>  	cp $lib $SCRATCH_MNT/
> -- 
> 2.39.2
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub
  2024-01-11 17:20   ` Darrick J. Wong
@ 2024-01-11 17:25     ` Christoph Hellwig
  2024-01-11 21:17       ` Zorro Lang
  0 siblings, 1 reply; 12+ messages in thread
From: Christoph Hellwig @ 2024-01-11 17:25 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Christoph Hellwig, zlang, fstests, linux-xfs

On Thu, Jan 11, 2024 at 09:20:22AM -0800, Darrick J. Wong wrote:
> > +	mountpoint $mountpoint >/dev/null || echo "$mountpoint is not mounted"
> 
> The helper needs to return nonzero on failure, e.g.
> 
> 	if ! mountpoint -q $mountpoint; then
> 		echo "$mountpoint is not mounted"
> 		return 1
> 	fi

No, it doesn't..  I actually did exactly that first, but that causes the
test to be _notrun instead of reporting the error and thus telling the
author that they usage of this helper is wrong.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub
  2024-01-11 17:25     ` Christoph Hellwig
@ 2024-01-11 21:17       ` Zorro Lang
  2024-01-12  2:17         ` Darrick J. Wong
  2024-01-12  4:41         ` Christoph Hellwig
  0 siblings, 2 replies; 12+ messages in thread
From: Zorro Lang @ 2024-01-11 21:17 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Darrick J. Wong, fstests, linux-xfs

On Thu, Jan 11, 2024 at 06:25:56PM +0100, Christoph Hellwig wrote:
> On Thu, Jan 11, 2024 at 09:20:22AM -0800, Darrick J. Wong wrote:
> > > +	mountpoint $mountpoint >/dev/null || echo "$mountpoint is not mounted"
> > 
> > The helper needs to return nonzero on failure, e.g.
> > 
> > 	if ! mountpoint -q $mountpoint; then
> > 		echo "$mountpoint is not mounted"
> > 		return 1
> > 	fi
> 
> No, it doesn't..  I actually did exactly that first, but that causes the
> test to be _notrun instead of reporting the error and thus telling the
> author that they usage of this helper is wrong.

So below "usage" message won't be gotten either, if a _notrun be called
after this helper return 1 .

        if [ -z "$device" ] || [ -z "$mountpoint" ]; then
                echo "Usage: _supports_xfs_scrub mountpoint device"
                return 1
        fi

If there's not _notrun after that, the message will be gotten I think.
So I think the "return 1" makes sense.

What do both of you think ?

Thanks,
Zorro

> 


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub
  2024-01-11 21:17       ` Zorro Lang
@ 2024-01-12  2:17         ` Darrick J. Wong
  2024-01-12  4:42           ` Christoph Hellwig
  2024-01-12  4:41         ` Christoph Hellwig
  1 sibling, 1 reply; 12+ messages in thread
From: Darrick J. Wong @ 2024-01-12  2:17 UTC (permalink / raw)
  To: Zorro Lang; +Cc: Christoph Hellwig, fstests, linux-xfs

On Fri, Jan 12, 2024 at 05:17:02AM +0800, Zorro Lang wrote:
> On Thu, Jan 11, 2024 at 06:25:56PM +0100, Christoph Hellwig wrote:
> > On Thu, Jan 11, 2024 at 09:20:22AM -0800, Darrick J. Wong wrote:
> > > > +	mountpoint $mountpoint >/dev/null || echo "$mountpoint is not mounted"
> > > 
> > > The helper needs to return nonzero on failure, e.g.
> > > 
> > > 	if ! mountpoint -q $mountpoint; then
> > > 		echo "$mountpoint is not mounted"
> > > 		return 1
> > > 	fi
> > 
> > No, it doesn't..  I actually did exactly that first, but that causes the
> > test to be _notrun instead of reporting the error and thus telling the
> > author that they usage of this helper is wrong.
> 
> So below "usage" message won't be gotten either, if a _notrun be called
> after this helper return 1 .
> 
>         if [ -z "$device" ] || [ -z "$mountpoint" ]; then
>                 echo "Usage: _supports_xfs_scrub mountpoint device"
>                 return 1
>         fi
> 
> If there's not _notrun after that, the message will be gotten I think.
> So I think the "return 1" makes sense.
> 
> What do both of you think ?

_fail "\$mountpoint must be mounted to use _require_scratch_xfs_scrub" ?

--D

> Thanks,
> Zorro
> 
> > 
> 
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub
  2024-01-11 21:17       ` Zorro Lang
  2024-01-12  2:17         ` Darrick J. Wong
@ 2024-01-12  4:41         ` Christoph Hellwig
  1 sibling, 0 replies; 12+ messages in thread
From: Christoph Hellwig @ 2024-01-12  4:41 UTC (permalink / raw)
  To: Zorro Lang; +Cc: Christoph Hellwig, Darrick J. Wong, fstests, linux-xfs

On Fri, Jan 12, 2024 at 05:17:02AM +0800, Zorro Lang wrote:
> > No, it doesn't..  I actually did exactly that first, but that causes the
> > test to be _notrun instead of reporting the error and thus telling the
> > author that they usage of this helper is wrong.
> 
> So below "usage" message won't be gotten either, if a _notrun be called
> after this helper return 1 .

True.  But for the case reproducing my original error where I just
misplaced it it does get shown.

> If there's not _notrun after that, the message will be gotten I think.
> So I think the "return 1" makes sense.

As this point we might as well skip this patch, as it won't be useful.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub
  2024-01-12  2:17         ` Darrick J. Wong
@ 2024-01-12  4:42           ` Christoph Hellwig
  0 siblings, 0 replies; 12+ messages in thread
From: Christoph Hellwig @ 2024-01-12  4:42 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Zorro Lang, Christoph Hellwig, fstests, linux-xfs

On Thu, Jan 11, 2024 at 06:17:49PM -0800, Darrick J. Wong wrote:
> > If there's not _notrun after that, the message will be gotten I think.
> > So I think the "return 1" makes sense.
> > 
> > What do both of you think ?
> 
> _fail "\$mountpoint must be mounted to use _require_scratch_xfs_scrub" ?

Yes, that's better.  I didn't even remember _fail exists..


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-01-12  4:42 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-11 14:24 _supports_xfs_scrub cleanups Christoph Hellwig
2024-01-11 14:24 ` [PATCH 1/3] xfs: check that the mountpoint is actually mounted in _supports_xfs_scrub Christoph Hellwig
2024-01-11 17:20   ` Darrick J. Wong
2024-01-11 17:25     ` Christoph Hellwig
2024-01-11 21:17       ` Zorro Lang
2024-01-12  2:17         ` Darrick J. Wong
2024-01-12  4:42           ` Christoph Hellwig
2024-01-12  4:41         ` Christoph Hellwig
2024-01-11 14:24 ` [PATCH 2/3] xfs: add a _scratch_require_xfs_scrub helper Christoph Hellwig
2024-01-11 17:20   ` Darrick J. Wong
2024-01-11 14:24 ` [PATCH 3/3] xfs/262: call _scratch_require_xfs_scrub Christoph Hellwig
2024-01-11 17:20   ` Darrick J. Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox