From: Mohamed Barwani Date: Tue, 9 Oct 2007 06:11:20 +0000 (+0000) Subject: Add extra test cases for growfs X-Git-Tag: v1.1.0~437 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9c1fdb640494b6f668a0328f9c7296301c0c12c2;p=xfstests-dev.git Add extra test cases for growfs Merge of master-melb:xfs-cmds:29854a by kenmcd. Modify the loop back grow function to include a flag for checking the fs after growin and added few more growfs test cases that are less 16TB --- diff --git a/078 b/078 index 9f7b4c5b..b6572eae 100755 --- a/078 +++ b/078 @@ -19,11 +19,6 @@ status=1 trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15 -# get standard environment, filters and checks -. ./common.rc -. ./common.filter - - _cleanup() { cd / @@ -37,6 +32,11 @@ _cleanup() . ./common.rc . ./common.filter +# loop devices are available in Linux only +_supported_fs xfs +_supported_os Linux + +# Must have loop device _require_loop LOOP_DEV=$TEST_DIR/$seq.fs @@ -48,7 +48,7 @@ _filter_io() } # real QA test starts here -_supported_fs xfs + echo "*** create loop mount point" rm -f $LOOP_MNT 2>/dev/null mkdir $LOOP_MNT || _fail "cannot create loopback mount point" @@ -58,6 +58,7 @@ _grow_loop() original=$1 new_size=$2 bsize=$3 + check=$4 echo echo "=== GROWFS (from $original to $new_size, $bsize blocksize)" @@ -73,21 +74,59 @@ _grow_loop() mount -t xfs -o loop $LOOP_DEV $LOOP_MNT echo "*** grow loop filesystem" - xfs_growfs $LOOP_MNT | _filter_mkfs 2>/dev/null + #xfs_growfs $LOOP_MNT 2>&1 | grep -e "^data" #| _filter_growfs 2>/dev/null + xfs_growfs $LOOP_MNT 2>&1 | _filter_growfs 2>&1 - echo "*** unmount and check" + echo "*** unmount" umount $LOOP_MNT - _check_xfs_filesystem $LOOP_DEV none none + + # Large grows takes forever to check.. + if [ "$check" -gt "0" ] + then + echo "*** check" + _check_xfs_filesystem $LOOP_DEV none none + fi + rm -f $LOOP_DEV } # Wes' problem sizes... -_grow_loop 168024b 1376452608 4096 +_grow_loop 168024b 1376452608 4096 1 # Some other blocksize cases... -_grow_loop 168024b 1376452608 2048 -_grow_loop 168024b 1376452608 512 -_grow_loop 168024b 688230400 1024 +_grow_loop 168024b 1376452608 2048 1 +_grow_loop 168024b 1376452608 512 1 +_grow_loop 168024b 688230400 1024 1 + + +# Other corner cases suggested by dgc +# also the following doesn't check if the filesystem is consistent. +# - grow 1TB by 1.5TB (control) +_grow_loop 1t 2500g 4096 0 + +# - grow 1TB by 2.5TB (grow by > 2TB) +_grow_loop 1t 3500g 4096 0 + +# - grow 1TB by 3.5TB (grow past 4TB) +_grow_loop 1t 4500g 4096 0 + +# - grow 1TB by 4.5TB (grow by > 4TB) +_grow_loop 1t 5500g 4096 0 + +# - grow 1TB by 7.5TB (grow past 8TB) +_grow_loop 1t 8500g 4096 0 + +# - grow 1TB by 8.5TB (grow by > 8TB) +_grow_loop 1t 9500g 4096 0 + +# - grow 1TB by 14.5TB (grow by > 8TB) +_grow_loop 1t 15500g 4096 0 + +# - grow 1TB by 15TB (grow to 16TB) +_grow_loop 1t 16000g 4096 0 + +# It would be nice to go on, but this would require a totally new test in order +# to take care of 64-bit machines. echo "*** all done" status=0 diff --git a/078.out b/078.out index c1ed10d0..1c91a21d 100644 --- a/078.out +++ b/078.out @@ -14,15 +14,30 @@ realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX wrote 4096/4096 bytes at offset 1376452608 *** mount loop filesystem *** grow loop filesystem +xfs_growfs --BlockSize=4096 --Blocks=168024 +data blocks changed from 168024 to 336048 +*** unmount +*** check + +=== GROWFS (from 168024b to 1376452608, 2048 blocksize) + +*** mkfs loop file (size=168024b) meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks data = bsize=XXX blocks=XXX, imaxpct=PCT = sunit=XXX swidth=XXX, unwritten=X naming =VERN bsize=XXX log =LDEV bsize=XXX blocks=XXX realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX -*** unmount and check +*** extend loop file +wrote 2048/2048 bytes at offset 1376452608 +*** mount loop filesystem +*** grow loop filesystem +xfs_growfs --BlockSize=2048 --Blocks=168024 +data blocks changed from 168024 to 672096 +*** unmount +*** check -=== GROWFS (from 168024b to 1376452608, 2048 blocksize) +=== GROWFS (from 168024b to 1376452608, 512 blocksize) *** mkfs loop file (size=168024b) meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks @@ -32,20 +47,35 @@ naming =VERN bsize=XXX log =LDEV bsize=XXX blocks=XXX realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX *** extend loop file -wrote 2048/2048 bytes at offset 1376452608 +wrote 512/512 bytes at offset 1376452608 *** mount loop filesystem *** grow loop filesystem +xfs_growfs --BlockSize=512 --Blocks=163840 +data blocks changed from 163840 to 2688384 +*** unmount +*** check + +=== GROWFS (from 168024b to 688230400, 1024 blocksize) + +*** mkfs loop file (size=168024b) meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks data = bsize=XXX blocks=XXX, imaxpct=PCT = sunit=XXX swidth=XXX, unwritten=X naming =VERN bsize=XXX log =LDEV bsize=XXX blocks=XXX realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX -*** unmount and check +*** extend loop file +wrote 1024/1024 bytes at offset 688230400 +*** mount loop filesystem +*** grow loop filesystem +xfs_growfs --BlockSize=1024 --Blocks=168024 +data blocks changed from 168024 to 672096 +*** unmount +*** check -=== GROWFS (from 168024b to 1376452608, 512 blocksize) +=== GROWFS (from 1t to 2500g, 4096 blocksize) -*** mkfs loop file (size=168024b) +*** mkfs loop file (size=1t) meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks data = bsize=XXX blocks=XXX, imaxpct=PCT = sunit=XXX swidth=XXX, unwritten=X @@ -53,20 +83,33 @@ naming =VERN bsize=XXX log =LDEV bsize=XXX blocks=XXX realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX *** extend loop file -wrote 512/512 bytes at offset 1376452608 +wrote 4096/4096 bytes at offset 2684354560000 *** mount loop filesystem *** grow loop filesystem +xfs_growfs --BlockSize=4096 --Blocks=268435456 +data blocks changed from 268435456 to 655360001 +*** unmount + +=== GROWFS (from 1t to 3500g, 4096 blocksize) + +*** mkfs loop file (size=1t) meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks data = bsize=XXX blocks=XXX, imaxpct=PCT = sunit=XXX swidth=XXX, unwritten=X naming =VERN bsize=XXX log =LDEV bsize=XXX blocks=XXX realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX -*** unmount and check +*** extend loop file +wrote 4096/4096 bytes at offset 3758096384000 +*** mount loop filesystem +*** grow loop filesystem +xfs_growfs --BlockSize=4096 --Blocks=268435456 +data blocks changed from 268435456 to 917504001 +*** unmount -=== GROWFS (from 168024b to 688230400, 1024 blocksize) +=== GROWFS (from 1t to 4500g, 4096 blocksize) -*** mkfs loop file (size=168024b) +*** mkfs loop file (size=1t) meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks data = bsize=XXX blocks=XXX, imaxpct=PCT = sunit=XXX swidth=XXX, unwritten=X @@ -74,14 +117,95 @@ naming =VERN bsize=XXX log =LDEV bsize=XXX blocks=XXX realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX *** extend loop file -wrote 1024/1024 bytes at offset 688230400 +wrote 4096/4096 bytes at offset 4831838208000 +*** mount loop filesystem +*** grow loop filesystem +xfs_growfs --BlockSize=4096 --Blocks=268435456 +data blocks changed from 268435456 to 1179648001 +*** unmount + +=== GROWFS (from 1t to 5500g, 4096 blocksize) + +*** mkfs loop file (size=1t) +meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks +data = bsize=XXX blocks=XXX, imaxpct=PCT + = sunit=XXX swidth=XXX, unwritten=X +naming =VERN bsize=XXX +log =LDEV bsize=XXX blocks=XXX +realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX +*** extend loop file +wrote 4096/4096 bytes at offset 5905580032000 +*** mount loop filesystem +*** grow loop filesystem +xfs_growfs --BlockSize=4096 --Blocks=268435456 +data blocks changed from 268435456 to 1441792001 +*** unmount + +=== GROWFS (from 1t to 8500g, 4096 blocksize) + +*** mkfs loop file (size=1t) +meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks +data = bsize=XXX blocks=XXX, imaxpct=PCT + = sunit=XXX swidth=XXX, unwritten=X +naming =VERN bsize=XXX +log =LDEV bsize=XXX blocks=XXX +realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX +*** extend loop file +wrote 4096/4096 bytes at offset 9126805504000 +*** mount loop filesystem +*** grow loop filesystem +xfs_growfs --BlockSize=4096 --Blocks=268435456 +data blocks changed from 268435456 to 2228224001 +*** unmount + +=== GROWFS (from 1t to 9500g, 4096 blocksize) + +*** mkfs loop file (size=1t) +meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks +data = bsize=XXX blocks=XXX, imaxpct=PCT + = sunit=XXX swidth=XXX, unwritten=X +naming =VERN bsize=XXX +log =LDEV bsize=XXX blocks=XXX +realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX +*** extend loop file +wrote 4096/4096 bytes at offset 10200547328000 +*** mount loop filesystem +*** grow loop filesystem +xfs_growfs --BlockSize=4096 --Blocks=268435456 +data blocks changed from 268435456 to 2490368001 +*** unmount + +=== GROWFS (from 1t to 15500g, 4096 blocksize) + +*** mkfs loop file (size=1t) +meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks +data = bsize=XXX blocks=XXX, imaxpct=PCT + = sunit=XXX swidth=XXX, unwritten=X +naming =VERN bsize=XXX +log =LDEV bsize=XXX blocks=XXX +realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX +*** extend loop file +wrote 4096/4096 bytes at offset 16642998272000 *** mount loop filesystem *** grow loop filesystem +xfs_growfs --BlockSize=4096 --Blocks=268435456 +data blocks changed from 268435456 to 4063232001 +*** unmount + +=== GROWFS (from 1t to 16000g, 4096 blocksize) + +*** mkfs loop file (size=1t) meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks data = bsize=XXX blocks=XXX, imaxpct=PCT = sunit=XXX swidth=XXX, unwritten=X naming =VERN bsize=XXX log =LDEV bsize=XXX blocks=XXX realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX -*** unmount and check +*** extend loop file +wrote 4096/4096 bytes at offset 17179869184000 +*** mount loop filesystem +*** grow loop filesystem +xfs_growfs --BlockSize=4096 --Blocks=268435456 +data blocks changed from 268435456 to 4194304000 +*** unmount *** all done diff --git a/common.filter b/common.filter index 0c3f41d9..199b0c45 100644 --- a/common.filter +++ b/common.filter @@ -153,5 +153,19 @@ _filter_mkfs() }' } + +# prints the bits we care about in growfs +# +_filter_growfs() +{ + perl -ne ' + if (/^data\s+=\s+bsize=(\d+)\s+blocks=(\d+), imaxpct=(\d+)/) { + print "xfs_growfs --BlockSize=$1 --Blocks=$2\n"; + } + elsif (/^data/) { + print; + }' +} + # make sure this script returns success /bin/true