On Tue, Aug 30, 2022 at 11:05 PM Darrick J. Wong <djwong@xxxxxxxxxx> wrote: > > On Tue, Aug 30, 2022 at 12:44:32PM +0800, Murphy Zhou wrote: > > Since this xfsprogs commit: > > 6e0ed3d19c54 mkfs: stop allowing tiny filesystems > > Single-AG xfs is not allowed. > > > > Remove agcount=1 from mkfs options and xfs/202 entirely. > > It's not supported for /new/ filesystems, but the rest of the tools must > continue the same levels of support for existing filesystems, even if > they cannot be created today. All these changes, all of them, only fix mkfs complaints, not others. So it is ONLY about creating new filesystems, not the existing ones. > > Second, there exist fstests that need to create a specific layout to > test some part of the code. Single-AG filesystems sometimes make this > much easier. But it's not allowed to be made by mkfs.xfs. Most of fstests create fs from scratch, it's hard to cover in this situation. Thanks, Murphy > > Both of these reasons are why fstests (and LTP) get a special pass on > all the new checks in mkfs 5.19. > > IOWs, we still need to check that xfs_repair works ok for existing > single AG filesystems. We can perhaps drop these tests in a decade or > so, but now is premature. > > --D > > > Signed-off-by: Murphy Zhou <jencce.kernel@xxxxxxxxx> > > --- > > tests/xfs/179 | 2 +- > > tests/xfs/202 | 40 ---------------------------------------- > > tests/xfs/202.out | 29 ----------------------------- > > tests/xfs/520 | 2 +- > > 4 files changed, 2 insertions(+), 71 deletions(-) > > delete mode 100755 tests/xfs/202 > > delete mode 100644 tests/xfs/202.out > > > > diff --git a/tests/xfs/179 b/tests/xfs/179 > > index ec0cb7e5..f0169717 100755 > > --- a/tests/xfs/179 > > +++ b/tests/xfs/179 > > @@ -22,7 +22,7 @@ _require_cp_reflink > > _require_test_program "punch-alternating" > > > > echo "Format and mount" > > -_scratch_mkfs -d agcount=1 > $seqres.full 2>&1 > > +_scratch_mkfs > $seqres.full 2>&1 > > _scratch_mount >> $seqres.full 2>&1 > > > > testdir=$SCRATCH_MNT/test-$seq > > diff --git a/tests/xfs/202 b/tests/xfs/202 > > deleted file mode 100755 > > index 5075d3a1..00000000 > > --- a/tests/xfs/202 > > +++ /dev/null > > @@ -1,40 +0,0 @@ > > -#! /bin/bash > > -# SPDX-License-Identifier: GPL-2.0 > > -# Copyright (c) 2009 Christoph Hellwig. > > -# > > -# FS QA Test No. 202 > > -# > > -# Test out the xfs_repair -o force_geometry option on single-AG filesystems. > > -# > > -. ./common/preamble > > -_begin_fstest repair auto quick > > - > > -# Import common functions. > > -. ./common/filter > > -. ./common/repair > > - > > -# real QA test starts here > > -_supported_fs xfs > > - > > -# single AG will cause default xfs_repair to fail. This test is actually > > -# testing the special corner case option needed to repair a single AG fs. > > -_require_scratch_nocheck > > - > > -# > > -# The AG size is limited to 1TB (or even less with historic xfsprogs), > > -# so chose a small enough filesystem to make sure we can actually create > > -# a single AG filesystem. > > -# > > -echo "== Creating single-AG filesystem ==" > > -_scratch_mkfs_xfs -d agcount=1 -d size=$((1024*1024*1024)) >/dev/null 2>&1 \ > > - || _fail "!!! failed to make filesystem with single AG" > > - > > -echo "== Trying to repair it (should fail) ==" > > -_scratch_xfs_repair > > - > > -echo "== Trying to repair it with -o force_geometry ==" > > -_scratch_xfs_repair -o force_geometry 2>&1 | _filter_repair > > - > > -# success, all done > > -echo "*** done" > > -status=0 > > diff --git a/tests/xfs/202.out b/tests/xfs/202.out > > deleted file mode 100644 > > index c2c5c881..00000000 > > --- a/tests/xfs/202.out > > +++ /dev/null > > @@ -1,29 +0,0 @@ > > -QA output created by 202 > > -== Creating single-AG filesystem == > > -== Trying to repair it (should fail) == > > -Phase 1 - find and verify superblock... > > -Only one AG detected - cannot validate filesystem geometry. > > -Use the -o force_geometry option to proceed. > > -== Trying to repair it with -o force_geometry == > > -Phase 1 - find and verify superblock... > > -Phase 2 - using <TYPEOF> log > > - - zero log... > > - - scan filesystem freespace and inode maps... > > - - found root inode chunk > > -Phase 3 - for each AG... > > - - scan and clear agi unlinked lists... > > - - process known inodes and perform inode discovery... > > - - process newly discovered inodes... > > -Phase 4 - check for duplicate blocks... > > - - setting up duplicate extent list... > > - - check for inodes claiming duplicate blocks... > > -Phase 5 - rebuild AG headers and trees... > > - - reset superblock... > > -Phase 6 - check inode connectivity... > > - - resetting contents of realtime bitmap and summary inodes > > - - traversing filesystem ... > > - - traversal finished ... > > - - moving disconnected inodes to lost+found ... > > -Phase 7 - verify and correct link counts... > > -done > > -*** done > > diff --git a/tests/xfs/520 b/tests/xfs/520 > > index d9e252bd..de70db60 100755 > > --- a/tests/xfs/520 > > +++ b/tests/xfs/520 > > @@ -60,7 +60,7 @@ force_crafted_metadata() { > > } > > > > bigval=100000000 > > -fsdsopt="-d agcount=1,size=512m" > > +fsdsopt="-d size=512m" > > > > force_crafted_metadata freeblks 0 "agf 0" > > force_crafted_metadata longest $bigval "agf 0" > > -- > > 2.31.1 > >