common/fuzzy: if the fuzz verb is random, keep fuzzing until we get a new value
[xfstests-dev.git] / common / dmthin
index 1b5c85698f5210dd6849dcef579ec18da6cdcf45..baab62848c3d6cba7d3b3b2ec7dcc21e59748330 100644 (file)
@@ -38,6 +38,9 @@ DMTHIN_VOL_DEV="/dev/mapper/$DMTHIN_VOL_NAME"
 _dmthin_cleanup()
 {
        $UMOUNT_PROG $SCRATCH_MNT > /dev/null 2>&1
+       # wait for device to be fully settled so that 'dmsetup remove' doesn't
+       # fail due to EBUSY
+       $UDEV_SETTLE_PROG >/dev/null 2>&1
        $DMSETUP_PROG remove $DMTHIN_VOL_NAME> /dev/null 2>&1
        $DMSETUP_PROG remove $DMTHIN_POOL_NAME> /dev/null 2>&1
        $DMSETUP_PROG remove $DMTHIN_META_NAME> /dev/null 2>&1
@@ -91,6 +94,8 @@ _dmthin_init()
        if [ -z "$low_water" ]; then
                low_water=204800        # 100M, in sectors
        fi
+       # low_water is expressed in blocks of size $cluster_size
+       low_water=$((low_water / cluster_size))
 
        # Need to make linear metadata and data devs.  From kernel docs:
        # As a guide, we suggest you calculate the number of bytes to use in the
@@ -173,12 +178,12 @@ _dmthin_grow()
        local blk_dev_size=`blockdev --getsz $dm_backing_dev`
 
        # Get current sizes & values
-       local   meta_dev_size=`$DMSETUP_PROG table | grep $DMTHIN_META_NAME | awk '{print $3}'`
-       local meta_dev_offset=`$DMSETUP_PROG table | grep $DMTHIN_META_NAME | awk '{print $6}'`
-       local   data_dev_size=`$DMSETUP_PROG table | grep $DMTHIN_DATA_NAME | awk '{print $3}'`
-       local   pool_dev_size=`$DMSETUP_PROG table | grep $DMTHIN_POOL_NAME | awk '{print $3}'`
-       local    cluster_size=`$DMSETUP_PROG table | grep $DMTHIN_POOL_NAME | awk '{print $7}'`
-       local       low_water=`$DMSETUP_PROG table | grep $DMTHIN_POOL_NAME | awk '{print $8}'`
+       local   meta_dev_size=`$DMSETUP_PROG table | grep ^$DMTHIN_META_NAME | awk '{print $3}'`
+       local meta_dev_offset=`$DMSETUP_PROG table | grep ^$DMTHIN_META_NAME | awk '{print $6}'`
+       local   data_dev_size=`$DMSETUP_PROG table | grep ^$DMTHIN_DATA_NAME | awk '{print $3}'`
+       local   pool_dev_size=`$DMSETUP_PROG table | grep ^$DMTHIN_POOL_NAME | awk '{print $3}'`
+       local    cluster_size=`$DMSETUP_PROG table | grep ^$DMTHIN_POOL_NAME | awk '{print $7}'`
+       local       low_water=`$DMSETUP_PROG table | grep ^$DMTHIN_POOL_NAME | awk '{print $8}'`
 
        # default to 25% growth
        if [ -z "$add_sectors" ]; then