@@ -1908,3 +1908,28 @@ _scratch_xfs_find_metafile()
echo "inode $sb_field"
return 0
}
+
+# Force metadata directories off.
+_scratch_xfs_force_no_metadir()
+{
+ # Remove any mkfs-time quota options because those are only supported
+ # with metadir=1
+ for opt in uquota gquota pquota; do
+ echo "$MKFS_OPTIONS" | grep -q -w "$opt" || continue
+
+ MKFS_OPTIONS="$(echo "$MKFS_OPTIONS" | sed -e "s/,$opt//g" -e "s/ $opt/ /g")"
+ MOUNT_OPTIONS="$MOUNT_OPTIONS -o $opt"
+ done
+
+ # Replace any explicit metadir option with metadir=0
+ if echo "$MKFS_OPTIONS" | grep -q 'metadir='; then
+ MKFS_OPTIONS="$(echo "$MKFS_OPTIONS" | sed -e 's/metadir=[0-9]*/metadir=0/g' -e 's/metadir\([, ]\)/metadir=0\1/g')"
+ return
+ fi
+
+ # Inject metadir=0 if there isn't one in MKFS_OPTIONS and mkfs supports
+ # that option.
+ if grep -q 'metadir=' $MKFS_XFS_PROG; then
+ MKFS_OPTIONS="-m metadir=0 $MKFS_OPTIONS"
+ fi
+}
@@ -48,6 +48,7 @@ _check_ag()
_require_scratch
_require_no_large_scratch_dev
+_scratch_xfs_force_no_metadir
DSIZE="-dsize=100m,agcount=6"
@@ -51,6 +51,7 @@ _filter_bad_ids()
_require_scratch
_require_no_large_scratch_dev
+_scratch_xfs_force_no_metadir
# devzero blows away 512byte blocks, so make 512byte inodes (at least)
_scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs >/dev/null
@@ -50,6 +50,7 @@ _dd_repair_check()
# fix filesystem, new mkfs.xfs will be fine.
_require_scratch
+_scratch_xfs_force_no_metadir
_scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs
# By executing the followint tmp file, will get on the mkfs options stored in