trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-
_cleanup()
{
cd /
. ./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
}
# 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"
original=$1
new_size=$2
bsize=$3
+ check=$4
echo
echo "=== GROWFS (from $original to $new_size, $bsize blocksize)"
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
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
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
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
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