generic/405: test mkfs against thin provision device
authorBoyang Xue <bxue@redhat.com>
Wed, 18 Jan 2017 09:27:24 +0000 (17:27 +0800)
committerEryu Guan <eguan@redhat.com>
Wed, 18 Jan 2017 09:29:57 +0000 (17:29 +0800)
Test mkfs against thin provision device, which has very small
backing size and very big virtual size. mkfs should return error
when it hits EIO.

Signed-off-by: Boyang Xue <bxue@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
tests/generic/405 [new file with mode: 0755]
tests/generic/405.out [new file with mode: 0644]
tests/generic/group

diff --git a/tests/generic/405 b/tests/generic/405
new file mode 100755 (executable)
index 0000000..01eb5ff
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/bash
+# FS QA Test 405
+#
+# Test mkfs against thin provision device, which has very small backing size,
+# mkfs should return error when it hits EIO.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2016 Red Hat Inc.  All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#-----------------------------------------------------------------------
+#
+
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+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
+
+# Initialize dmthin device with very small backing size & very big virtual
+# size, with the hope that mkfs hit EIO at mkfs time
+BACKING_SIZE=$((1 * 1024 * 1024 / 512))                        # 1M
+VIRTUAL_SIZE=$((1 * 1024 * 1024 * 1024 * 1024 / 512))  # 1T
+
+_cleanup()
+{
+       _dmthin_cleanup
+       cd /
+       rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+. ./common/dmthin
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+# $SCRATCH_DEV won't be directly created filesystem on, so fsck isn't required
+_require_scratch_nocheck
+_require_dm_target thin-pool
+
+_dmthin_init $BACKING_SIZE $VIRTUAL_SIZE
+
+# try mkfs on dmthin device, expect mkfs failure if 1M isn't big enough to hold
+# all the metadata. But if mkfs returns success, we expect the filesystem is
+# consistent, make sure it doesn't currupt silently.
+$MKFS_PROG -t $FSTYP $DMTHIN_VOL_DEV >>$seqres.full 2>&1
+if [ $? -eq 0 ]; then
+       _dmthin_check_fs
+fi
+
+echo "Silence is golden"
+status=0
+exit
diff --git a/tests/generic/405.out b/tests/generic/405.out
new file mode 100644 (file)
index 0000000..bae761d
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 405
+Silence is golden
index 6fc9c3d..5621906 100644 (file)
 402 auto quick rw
 403 auto quick attr
 404 auto quick insert
 402 auto quick rw
 403 auto quick attr
 404 auto quick insert
+405 auto mkfs