xfsqa test to check log size scaling
PATCH 1/1 xfsqa test to check log size scaling
XFS-QA test to check that log size scaling works correctly for old and new maximum log sizes.
--- xfstests/188 | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ xfstests/188.out | 16 ++++++++++ xfstests/group | 1 3 files changed, 105 insertions(+)
xfstests/188 new file +88 -0
@@ -0,0 +1,88 @@ +#! /bin/sh +# FS QA Test No. 188 +# +# large log size mkfs test - ensure the log size scaling works +# +#----------------------------------------------------------------------- +# Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved. +#----------------------------------------------------------------------- +# +# creator [email protected] + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* + _cleanup_testdir +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +_setup_testdir +_require_scratch +_scratch_mkfs_xfs >/dev/null 2>&1 +_scratch_mount + +_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 + done +} +# make large holey file +$XFS_IO_PROG -f -c "truncate 100t" $LOOP_DEV + +#make loopback mount dir +mkdir $LOOP_MNT + +# test if large logs are supported +LARGE_LOG= +$MKFS_XFS_PROG -f -l size=256m -d name=$LOOP_DEV,size=10g > /dev/null 2>&1 +if [ $? -eq 0 ]; then + LARGE_LOG=true +fi + +# walk over standard sizes (up to 256GB) +_do_mkfs 1 2 4 8 16 32 64 128 256 + +if [ -n "$LARGE_LOG" ]; then + # walk over larger sizes + _do_mkfs 512 1024 2048 4096 8192 16384 +else + # just cut'n'paste from the golden output for the remaining sizes + cat << EOF +fssize=512g log =internal log bsize=4096 blocks=65536, version=2 +fssize=1024g log =internal log bsize=4096 blocks=131072, version=2 +fssize=2048g log =internal log bsize=4096 blocks=262144, version=2 +fssize=4096g log =internal log bsize=4096 blocks=521728, version=2 +fssize=8192g log =internal log bsize=4096 blocks=521728, version=2 +fssize=16384g log =internal log bsize=4096 blocks=521728, version=2 +EOF +fi + +status=0 +exit
xfstests/188.out new file +16 -0
@@ -0,0 +1,16 @@ +QA output created by 188 +fssize=1g log =internal log bsize=4096 blocks=2560, version=2 +fssize=2g log =internal log bsize=4096 blocks=2560, version=2 +fssize=4g log =internal log bsize=4096 blocks=2560, version=2 +fssize=8g log =internal log bsize=4096 blocks=2560, version=2 +fssize=16g log =internal log bsize=4096 blocks=2560, version=2 +fssize=32g log =internal log bsize=4096 blocks=4096, version=2 +fssize=64g log =internal log bsize=4096 blocks=8192, version=2 +fssize=128g log =internal log bsize=4096 blocks=16384, version=2 +fssize=256g log =internal log bsize=4096 blocks=32768, version=2 +fssize=512g log =internal log bsize=4096 blocks=65536, version=2 +fssize=1024g log =internal log bsize=4096 blocks=131072, version=2 +fssize=2048g log =internal log bsize=4096 blocks=262144, version=2 +fssize=4096g log =internal log bsize=4096 blocks=521728, version=2 +fssize=8192g log =internal log bsize=4096 blocks=521728, version=2 +fssize=16384g log =internal log bsize=4096 blocks=521728, version=2
xfstests/group +1 -0
@@ -275,3 +275,4 @@ filestreams [email protected] 185 dmapi auto 186 attr auto 187 attr auto +188 log metadata auto
Quoted 2 lines · David Chinner
XFS-QA test to check that log size scaling works correctly for old and new maximum log sizes.
Am I missing somethign or would this fail if the partitions used for xfsqa are smaller than 256GB? I don't even have that much total storage on my laptop :)
Quoted 7 lines · Christoph Hellwig
Quoted 2 lines · David Chinner
XFS-QA test to check that log size scaling works correctly for old and new maximum log sizes.
Am I missing somethign or would this fail if the partitions used for xfsqa are smaller than 256GB? I don't even have that much total storage on my laptop :)
Uses loop devices and sparse files - should work just fine on any partition a bit over 2GB (the log gets zeroed during mkfs). I know it passses on a 14GB scratch filesystem....
Cheers,
Dave.
Signature · 3 lines
Dave Chinner Principal Engineer SGI Australian Software Group
Quoted 5 lines · David Chinner
Quoted 4 lines · Christoph Hellwig
Quoted 2 lines · David Chinner
XFS-QA test to check that log size scaling works correctly for old and new maximum log sizes.
Quoted 7 lines
Quoted 3 lines
Am I missing somethign or would this fail if the partitions used for xfsqa are smaller than 256GB? I don't even have that much total storage on my laptop :)
Uses loop devices and sparse files - should work just fine on any partition a bit over 2GB (the log gets zeroed during mkfs). I know it passses on a 14GB scratch filesystem....
Okay for the patch then.
ping?
Quoted 135 lines · David Chinner
XFS-QA test to check that log size scaling works correctly for old and new maximum log sizes.
Signed-off-by Dave Chinner <[email protected]>--- xfstests/188 | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ xfstests/188.out | 16 ++++++++++ xfstests/group | 1 3 files changed, 105 insertions(+)Index: xfs-cmds/xfstests/188
===================================================================xfstests/188 new file +88
-0@@ -0,0 +1,88 @@ +#! /bin/sh +# FS QA Test No. 188 +# +# large log size mkfs test - ensure the log size scaling works +# +#----------------------------------------------------------------------- +# Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved. +#----------------------------------------------------------------------- +# +# creator [email protected] + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* + _cleanup_testdir +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +_setup_testdir +_require_scratch +_scratch_mkfs_xfs >/dev/null 2>&1 +_scratch_mount + +_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 + done +} +# make large holey file +$XFS_IO_PROG -f -c "truncate 100t" $LOOP_DEV + +#make loopback mount dir +mkdir $LOOP_MNT + +# test if large logs are supported +LARGE_LOG= +$MKFS_XFS_PROG -f -l size=256m -d name=$LOOP_DEV,size=10g > /dev/null 2>&1 +if [ $? -eq 0 ]; then + LARGE_LOG=true +fi + +# walk over standard sizes (up to 256GB) +_do_mkfs 1 2 4 8 16 32 64 128 256 + +if [ -n "$LARGE_LOG" ]; then + # walk over larger sizes + _do_mkfs 512 1024 2048 4096 8192 16384 +else + # just cut'n'paste from the golden output for the remaining sizes + cat << EOF +fssize=512g log =internal log bsize=4096 blocks=65536, version=2 +fssize=1024g log =internal log bsize=4096 blocks=131072, version=2 +fssize=2048g log =internal log bsize=4096 blocks=262144, version=2 +fssize=4096g log =internal log bsize=4096 blocks=521728, version=2 +fssize=8192g log =internal log bsize=4096 blocks=521728, version=2 +fssize=16384g log =internal log bsize=4096 blocks=521728, version=2 +EOF +fi + +status=0 +exitIndex: xfs-cmds/xfstests/188.out
===================================================================xfstests/188.out new file +16
-0@@ -0,0 +1,16 @@ +QA output created by 188 +fssize=1g log =internal log bsize=4096 blocks=2560, version=2 +fssize=2g log =internal log bsize=4096 blocks=2560, version=2 +fssize=4g log =internal log bsize=4096 blocks=2560, version=2 +fssize=8g log =internal log bsize=4096 blocks=2560, version=2 +fssize=16g log =internal log bsize=4096 blocks=2560, version=2 +fssize=32g log =internal log bsize=4096 blocks=4096, version=2 +fssize=64g log =internal log bsize=4096 blocks=8192, version=2 +fssize=128g log =internal log bsize=4096 blocks=16384, version=2 +fssize=256g log =internal log bsize=4096 blocks=32768, version=2 +fssize=512g log =internal log bsize=4096 blocks=65536, version=2 +fssize=1024g log =internal log bsize=4096 blocks=131072, version=2 +fssize=2048g log =internal log bsize=4096 blocks=262144, version=2 +fssize=4096g log =internal log bsize=4096 blocks=521728, version=2 +fssize=8192g log =internal log bsize=4096 blocks=521728, version=2 +fssize=16384g log =internal log bsize=4096 blocks=521728, version=2Index: xfs-cmds/xfstests/group
===================================================================xfstests/group +1
-0@@ -275,3 +275,4 @@ filestreams [email protected] 185 dmapi auto 186 attr auto 187 attr auto +188 log metadata auto
Signature · 2 lines
Dave Chinner [email protected]
Quoted 2 lines · David Chinner
XFS-QA test to check that log size scaling works correctly for old and new maximum log sizes.
This patch has a couple of problems.
For 32bit architecturs with 4k pages the maximum filesize is limited to just under 16 Terrabytes, so the 100 Terrabyte file can't be created. Even if limit the size to just under 16TB we can run of space quite quickly by just creating the filesystem and the large log on smaller test setups.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs