]> git-server-git.apps.pok.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
xfs: handle zoned file systems in _scratch_xfs_force_no_metadir
authorChristoph Hellwig <hch@lst.de>
Fri, 21 Mar 2025 07:21:36 +0000 (08:21 +0100)
committerZorro Lang <zlang@kernel.org>
Fri, 28 Mar 2025 01:05:05 +0000 (09:05 +0800)
Zoned file systems required the metadir feature.  If the tests are run
on a conventional block device as the RT device, we can simply remove
the zoned flag an run the test, but if the file systems sits on a zoned
block device there is no way to run a test that wants a non-metadir
file system.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
common/xfs

index 3663e4cf03bd37e11427ae7745e75a1b09d6ef95..6bb7d991907cecfea91d2e940bcdf8db50257c84 100644 (file)
@@ -2049,6 +2049,12 @@ _scratch_xfs_find_metafile()
 # Force metadata directories off.
 _scratch_xfs_force_no_metadir()
 {
+       _require_non_zoned_device $SCRATCH_DEV
+       # metadir is required for when the rt device is on a zoned device
+       if [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_RTDEV" ]; then
+               _require_non_zoned_device $SCRATCH_RTDEV
+       fi
+
        # Remove any mkfs-time quota options because those are only supported
        # with metadir=1
        for opt in uquota gquota pquota; do
@@ -2069,6 +2075,12 @@ _scratch_xfs_force_no_metadir()
        if grep -q 'metadir=' $MKFS_XFS_PROG; then
                MKFS_OPTIONS="-m metadir=0 $MKFS_OPTIONS"
        fi
+
+       # Replace any explicit zonedr option with zoned=0
+       if echo "$MKFS_OPTIONS" | grep -q 'zoned='; then
+               MKFS_OPTIONS="$(echo "$MKFS_OPTIONS" | sed -e 's/zoned=[0-9]*/zoned=0/g' -e 's/zoned\([, ]\)/zoned=0\1/g')"
+               return
+       fi
 }
 
 # do not run on zoned file systems