From: Darrick J. Wong <djwong@xxxxxxxxxx> Zorro reports that this test fails if the test runner set an -L (label) option in MKFS_OPTIONS. Fix the test to work around this with a bunch of horrid sed filtering magic. It's probably not *critical* to make this test test work with random labels, but it'd be nice not to lose them. Cc: <fstests@xxxxxxxxxxxxxxx> # v2024.10.14 Fixes: 2f7e1b8a6f09b6 ("xfs/157,xfs/547,xfs/548: switch to using _scratch_mkfs_sized") Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- tests/xfs/157 | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tests/xfs/157 b/tests/xfs/157 index e102a5a10abe4b..0c21786e389695 100755 --- a/tests/xfs/157 +++ b/tests/xfs/157 @@ -65,9 +65,34 @@ scenario() { SCRATCH_RTDEV=$orig_rtdev } +extract_mkfs_label() { + set -- $MKFS_OPTIONS + local in_l + + for arg in "$@"; do + if [ "$in_l" = "1" ]; then + echo "$arg" + return 0 + elif [ "$arg" = "-L" ]; then + in_l=1 + fi + done + return 1 +} + check_label() { - _scratch_mkfs_sized "$fs_size" "" -L oldlabel >> $seqres.full 2>&1 - _scratch_xfs_db -c label + local existing_label + local filter + + # Handle -L somelabel being set in MKFS_OPTIONS + if existing_label="$(extract_mkfs_label)"; then + filter=(sed -e "s|$existing_label|oldlabel|g") + _scratch_mkfs_sized $fs_size >> $seqres.full + else + filter=(cat) + _scratch_mkfs_sized "$fs_size" "" -L oldlabel >> $seqres.full 2>&1 + fi + _scratch_xfs_db -c label | "${filter[@]}" _scratch_xfs_admin -L newlabel "$@" >> $seqres.full _scratch_xfs_db -c label _scratch_xfs_repair -n &>> $seqres.full || echo "Check failed?"