Re: [PATCH 1/3] xfs: add a test that zoned file systems with rump RTG can't be mounted

Darrick J. Wong
2025-12-16T19:05:16Z

On Tue, Dec 16, 2025 at 06:12:05AM +0100, Christoph Hellwig wrote:
> On Mon, Dec 15, 2025 at 11:33:45AM -0800, Darrick J. Wong wrote:
> > > +_scratch_mkfs > /dev/null 2>&1
> > > +blocks=$(_scratch_xfs_db -c 'sb 0' -c 'print rblocks' | awk '{print $3}')
> > > +blocks=$((blocks - 4096))
> > > +_scratch_xfs_db -x -c 'sb 0' -c "write -d rblocks $blocks" > /dev/null 2>&1
> > > +_scratch_xfs_db -x -c 'sb 0' -c "write -d rextents $blocks" > /dev/null 2>&1
> >
> > You could put both of the write commands in the same invocation, e.g.
> >
> > _scratch_xfs_db -x \
> > -c 'sb 0' \
> > -c "write -d rblocks $blocks" \
> > -c "write -d rextents $blocks" > /dev/null 2>&1
> >
> > For a little bit lower runtime.
>
> I can do that, but I doubt it really matters..
>
> > > +if _try_scratch_mount >/dev/null 2>&1; then
> > > + # for non-zoned file systems this can succeed just fine
> > > + _require_xfs_scratch_non_zoned
> >
> > The logic in this test looks fine to me, but I wonder: have you (or
> > anyone else) gone to Debian 13 and noticed this:
> >
> > # mount /dev/sda /mnt
> > # mount /dev/sda /mnt
> > # grep /mnt /proc/mounts
> > /dev/sda /mnt xfs rw,relatime,inode64,logbufs=8,logbsize=32k,noquota 0 0
> > /dev/sda /mnt xfs rw,relatime,inode64,logbufs=8,logbsize=32k,noquota 0 0
> >
> > It looks like util-linux switched to the new fsopen mount API between
> > Debian 12 and 13, and whereas the old mount(8) would fail if the fs was
> > already mounted, the new one just creates two mounts, which both then
> > must be unmounted. So now I'm hunting around for unbalanced
> > mount/unmount pairs in fstests. :(
>
> The old mount API also supported that at the syscall level, but it got
> disable in mount(8), so if mount now does this and previously didn't it
> seems like an unintended change.

Oh, it's very much an intentional change. Someone complained and the
maintainer declined to revert:
https://github.com/util-linux/util-linux/issues/3800

because we can all just add --onlyonce to our scripts if we want the old
behavior. Or set LIBMOUNT_FORCE_MOUNT2=always and hope that doesn't go
away.

--D