diff mbox series

xfs/541: _notrun if the file system can't mount

Message ID 20250128071449.676462-1-hch@lst.de (mailing list archive)
State New
Headers show
Series xfs/541: _notrun if the file system can't mount | expand

Commit Message

Christoph Hellwig Jan. 28, 2025, 7:14 a.m. UTC
A file system created without an RT section might not be able to mount
with an rtdev specified if the RT device has a larger LBA size.

Instead of letting the test fail, _notrun it for that case.

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

Comments

Darrick J. Wong Jan. 28, 2025, 7:25 p.m. UTC | #1
On Tue, Jan 28, 2025 at 08:14:48AM +0100, Christoph Hellwig wrote:
> A file system created without an RT section might not be able to mount
> with an rtdev specified if the RT device has a larger LBA size.

Where does the mount failure occur?  The initial mount (where we specify
-o rtdev but sb_rblocks is still zero) should succeed because
xfs_rtmount_init ignores m_rtdev_targp if !rblocks, right?  So it's only
when you get to growfs and we try to read the device that things fail?

--D

> Instead of letting the test fail, _notrun it for that case.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  tests/xfs/541 | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tests/xfs/541 b/tests/xfs/541
> index 42bcd95802c5..c8b312fddc92 100755
> --- a/tests/xfs/541
> +++ b/tests/xfs/541
> @@ -26,7 +26,7 @@ _require_scratch
>  
>  # Format scratch fs with no realtime section.
>  SCRATCH_RTDEV="" _scratch_mkfs | _filter_mkfs 2> $tmp.mkfs >> $seqres.full
> -_scratch_mount
> +_try_scratch_mount || _notrun "Can't mount file system"
>  
>  # Zoned file systems don't support rtextsize > 1
>  _require_xfs_scratch_non_zoned
> -- 
> 2.45.2
> 
>
Christoph Hellwig Jan. 29, 2025, 5:49 a.m. UTC | #2
On Tue, Jan 28, 2025 at 11:25:06AM -0800, Darrick J. Wong wrote:
> On Tue, Jan 28, 2025 at 08:14:48AM +0100, Christoph Hellwig wrote:
> > A file system created without an RT section might not be able to mount
> > with an rtdev specified if the RT device has a larger LBA size.
> 
> Where does the mount failure occur?  The initial mount (where we specify
> -o rtdev but sb_rblocks is still zero) should succeed because
> xfs_rtmount_init ignores m_rtdev_targp if !rblocks, right?  So it's only
> when you get to growfs and we try to read the device that things fail?

There only is a single mount in the test.

The test only clears the rtdev for the mkfs call, not the mount call.
As XFS doesn't allow adding a new rtdev at runtime, just expanding the
file system to the already passed but not actually used rt device in
growfs that's actually needed, even if it sounds counterintuitive.

(that being said I sent the patch directly from my zoned branch,
so it won't apply as-is due to context issues)
Darrick J. Wong Jan. 29, 2025, 9:06 p.m. UTC | #3
On Wed, Jan 29, 2025 at 06:49:18AM +0100, Christoph Hellwig wrote:
> On Tue, Jan 28, 2025 at 11:25:06AM -0800, Darrick J. Wong wrote:
> > On Tue, Jan 28, 2025 at 08:14:48AM +0100, Christoph Hellwig wrote:
> > > A file system created without an RT section might not be able to mount
> > > with an rtdev specified if the RT device has a larger LBA size.
> > 
> > Where does the mount failure occur?  The initial mount (where we specify
> > -o rtdev but sb_rblocks is still zero) should succeed because
> > xfs_rtmount_init ignores m_rtdev_targp if !rblocks, right?  So it's only
> > when you get to growfs and we try to read the device that things fail?
> 
> There only is a single mount in the test.
> 
> The test only clears the rtdev for the mkfs call, not the mount call.
> As XFS doesn't allow adding a new rtdev at runtime, just expanding the
> file system to the already passed but not actually used rt device in
> growfs that's actually needed, even if it sounds counterintuitive.
> 
> (that being said I sent the patch directly from my zoned branch,
> so it won't apply as-is due to context issues)

Gross, it's the set_blocksize call in xfs_setsize_buftarg that trips
everything up.  But, it makes sense that one cannot mix sector sizes nor
mount an rtdev with a larger sector size than what's configured on the
data device.

Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>

--D
diff mbox series

Patch

diff --git a/tests/xfs/541 b/tests/xfs/541
index 42bcd95802c5..c8b312fddc92 100755
--- a/tests/xfs/541
+++ b/tests/xfs/541
@@ -26,7 +26,7 @@  _require_scratch
 
 # Format scratch fs with no realtime section.
 SCRATCH_RTDEV="" _scratch_mkfs | _filter_mkfs 2> $tmp.mkfs >> $seqres.full
-_scratch_mount
+_try_scratch_mount || _notrun "Can't mount file system"
 
 # Zoned file systems don't support rtextsize > 1
 _require_xfs_scratch_non_zoned