#! /bin/bash # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved. # # FS QA Test No. 217 # # large log size mkfs test - ensure the log size scaling works # . ./common/preamble _begin_fstest log metadata auto # Import common functions. . ./common/filter # real QA test starts here _supported_fs xfs _require_scratch _scratch_mkfs_xfs >/dev/null 2>&1 _scratch_mount # 16T mkfs requires a bit over 2G free _require_fs_space $SCRATCH_MNT 2202000 _require_loop LOOP_DEV=$SCRATCH_MNT/test_fs LOOP_MNT=$SCRATCH_MNT/test_fs_dir _do_mkfs() { for i in $*; do echo -n "fssize=${i}g " $MKFS_XFS_PROG -f -b size=4096 -l version=2 \ -d name=$LOOP_DEV,size=${i}g |grep log mount -o loop -t xfs $LOOP_DEV $LOOP_MNT echo "test write" > $LOOP_MNT/test umount $LOOP_MNT > /dev/null 2>&1 # punch out the previous blocks so that we keep the amount of # disk space the test requires down to a minimum. $XFS_IO_PROG -f -c "unresvsp 0 16383g" $LOOP_DEV done } # make large holey file $XFS_IO_PROG -f -c "truncate 16383g" $LOOP_DEV #make loopback mount dir mkdir $LOOP_MNT # test if large logs are supported $MKFS_XFS_PROG -f -l size=256m -d name=$LOOP_DEV,size=10g > /dev/null 2>&1 if [ $? -ne 0 ]; then _notrun "large log sizes not supported by mkfs" fi # # walk over "new" sizes supported by recent xfsprogs. # Note that the last test is for 16TB-1GB as 32bit platforms only support # device slightly smaller than 16TB. # _do_mkfs 512 1024 2048 4096 8192 16383 status=0 exit