summaryrefslogtreecommitdiff
path: root/test/shell/fsadm.sh
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2013-03-05 01:47:43 -0800
committerAnas Nashif <anas.nashif@intel.com>2013-03-05 01:47:43 -0800
commit44a3c2255bc480c82f34db156553a595606d8a0b (patch)
tree5e6df96a6c6e40207cb3a711860e16b543918c0d /test/shell/fsadm.sh
parent8bd28eea831fd5215c12e6fcecc8e9a772398ed9 (diff)
downloaddevice-mapper-44a3c2255bc480c82f34db156553a595606d8a0b.tar.gz
device-mapper-44a3c2255bc480c82f34db156553a595606d8a0b.tar.bz2
device-mapper-44a3c2255bc480c82f34db156553a595606d8a0b.zip
Imported Upstream version 2.02.98upstream/2.02.98upstream/1.02.77
Diffstat (limited to 'test/shell/fsadm.sh')
-rw-r--r--test/shell/fsadm.sh160
1 files changed, 160 insertions, 0 deletions
diff --git a/test/shell/fsadm.sh b/test/shell/fsadm.sh
new file mode 100644
index 0000000..4e624db
--- /dev/null
+++ b/test/shell/fsadm.sh
@@ -0,0 +1,160 @@
+#!/bin/sh
+# Copyright (C) 2008-2012 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+test_description='Exercise fsadm filesystem resize'
+
+. lib/test
+
+aux prepare_vg 1 100
+
+# set to "skip" to avoid testing given fs and test warning result
+# i.e. check_reiserfs=skip
+check_ext3=
+check_xfs=
+check_reiserfs=
+
+which mkfs.ext3 || check_ext3=${check_ext3:-mkfs.ext3}
+which fsck.ext3 || check_ext3=${check_ext3:-fsck.ext3}
+which mkfs.xfs || check_xfs=${check_xfs:-mkfs.xfs}
+which xfs_check || check_xfs=${check_xfs:-xfs_check}
+which mkfs.reiserfs || check_reiserfs=${check_reiserfs:-mkfs.reiserfs}
+which reiserfsck || check_reiserfs=${check_reiserfs:-reiserfsck}
+
+vg_lv=$vg/$lv1
+vg_lv2=$vg/${lv1}bar
+dev_vg_lv="$DM_DEV_DIR/$vg_lv"
+dev_vg_lv2="$DM_DEV_DIR/$vg_lv2"
+mount_dir="mnt"
+mount_space_dir="mnt space dir"
+# for recursive call
+export LVM_BINARY=$(which lvm)
+
+test ! -d "$mount_dir" && mkdir "$mount_dir"
+test ! -d "$mount_space_dir" && mkdir "$mount_space_dir"
+
+cleanup_mounted_and_teardown()
+{
+ umount "$mount_dir" || true
+ umount "$mount_space_dir" || true
+ aux teardown
+}
+
+fscheck_ext3()
+{
+ fsck.ext3 -p -F -f "$dev_vg_lv"
+}
+
+fscheck_xfs()
+{
+ xfs_check "$dev_vg_lv"
+}
+
+fscheck_reiserfs()
+{
+ reiserfsck --check -p -f "$dev_vg_lv" </dev/null
+}
+
+check_missing()
+{
+ eval local t=$\check_$1
+ test -z "$t" && return 0
+ test "$t" = skip && return 1
+ # trick for warning test
+ echo "WARNING: fsadm test skipped $1 tests, $t tool is missing"
+ return 1
+}
+
+# Test for block sizes != 1024 (rhbz #480022)
+lvcreate -n $lv1 -L20M $vg
+lvcreate -n ${lv1}bar -L10M $vg
+trap 'cleanup_mounted_and_teardown' EXIT
+
+if check_missing ext2; then
+ mkfs.ext2 -b4096 -j "$dev_vg_lv"
+
+ fsadm --lvresize resize $vg_lv 30M
+ # Fails - not enough space for 4M fs
+ not fsadm -y --lvresize resize "$dev_vg_lv" 4M
+ lvresize -L+10M -r $vg_lv
+ lvreduce -L10M -r $vg_lv
+
+ fscheck_ext3
+ mount "$dev_vg_lv" "$mount_dir"
+ not fsadm -y --lvresize resize $vg_lv 4M
+ echo n | not lvresize -L4M -r -n $vg_lv
+ lvresize -L+20M -r -n $vg_lv
+ umount "$mount_dir"
+ fscheck_ext3
+
+ lvresize -f -L20M $vg_lv
+fi
+
+if check_missing ext3; then
+ mkfs.ext3 -b4096 -j "$dev_vg_lv"
+ mkfs.ext3 -b4096 -j "$dev_vg_lv2"
+
+ fsadm --lvresize resize $vg_lv 30M
+ # Fails - not enough space for 4M fs
+ not fsadm -y --lvresize resize "$dev_vg_lv" 4M
+ lvresize -L+10M -r $vg_lv
+ lvreduce -L10M -r $vg_lv
+
+ fscheck_ext3
+ mount "$dev_vg_lv" "$mount_dir"
+ lvresize -L+10M -r $vg_lv
+ mount "$dev_vg_lv2" "$mount_space_dir"
+ fsadm --lvresize -e -y resize $vg_lv2 25M
+
+ not fsadm -y --lvresize resize $vg_lv 4M
+ echo n | not lvresize -L4M -r -n $vg_lv
+ lvresize -L+20M -r -n $vg_lv
+ umount "$mount_dir"
+ umount "$mount_space_dir"
+ fscheck_ext3
+
+ lvresize -f -L20M $vg_lv
+fi
+
+if check_missing xfs; then
+ mkfs.xfs -l internal,size=1000b -f "$dev_vg_lv"
+
+ fsadm --lvresize resize $vg_lv 30M
+ # Fails - not enough space for 4M fs
+ lvresize -L+10M -r $vg_lv
+ not lvreduce -L10M -r $vg_lv
+
+ fscheck_xfs
+ mount "$dev_vg_lv" "$mount_dir"
+ lvresize -L+10M -r -n $vg_lv
+ umount "$mount_dir"
+ fscheck_xfs
+
+ lvresize -f -L20M $vg_lv
+fi
+
+if check_missing reiserfs; then
+ mkfs.reiserfs -s 513 -f "$dev_vg_lv"
+
+ fsadm --lvresize resize $vg_lv 30M
+ lvresize -L+10M -r $vg_lv
+ fsadm --lvresize -y resize $vg_lv 10M
+
+ fscheck_reiserfs
+ mount "$dev_vg_lv" "$mount_dir"
+
+ fsadm -y --lvresize resize $vg_lv 30M
+ umount "$mount_dir"
+ fscheck_reiserfs
+
+ lvresize -f -L20M $vg_lv
+fi
+
+vgremove -ff $vg