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

Christoph Hellwig
2025-12-16T05:12:12Z

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.