@@ -879,6 +879,46 @@ variants:
fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1 oflag=direct"
kill_vm = yes
+ - lvm:
+ only Linux
+ images += ' stg1 stg2'
+ image_name_stg1 = storage_4k
+ image_cluster_size_stg1 = 4096
+ image_size_stg1 = 1G
+ image_format_stg1 = qcow2
+ image_name_stg2 = storage_64k
+ image_cluster_size_stg2 = 65536
+ image_size_stg2 = 1G
+ image_format_stg2 = qcow2
+ guest_testdir = /mnt
+ disks = "/dev/sdb /dev/sdc"
+ kill_vm = no
+ post_command_noncritical = no
+ variants:
+ lvm_create:
+ type = lvm
+ force_create_image_stg1 = yes
+ force_create_image_stg2 = yes
+ clean = no
+ lvm_fill: lvm_create
+ type = fillup_disk
+ force_create_image_stg1 = no
+ force_create_image_stg2 = no
+ guest_testdir = /mnt/kvm_test_lvm
+ fillup_timeout = 120
+ fillup_size = 20
+ fillup_cmd = "dd if=/dev/zero of=%s/fillup.%d bs=%dM count=1 oflag=direct"
+ lvm_ioquit: lvm_create
+ type = ioquit
+ force_create_image_stg1 = no
+ force_create_image_stg2 = no
+ kill_vm = yes
+ background_cmd = "for i in 1 2 3 4; do (dd if=/dev/urandom of=/mnt/kvm_test_lvm/file bs=102400 count=10000000 &); done"
+ check_cmd = pgrep dd
+ clean = yes
+ remove_image_stg1 = yes
+ remove_image_stg2 = yes
+
- ioquit:
only Linux
type = ioquit
@@ -1656,6 +1696,8 @@ variants:
md5sum_1m_cd1 = 127081cbed825d7232331a2083975528
fillup_disk:
fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1"
+ lvm.lvm_fill:
+ fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1"
- 4.7.x86_64:
no setup autotest
@@ -1677,6 +1719,8 @@ variants:
md5sum_1m_cd1 = 58fa63eaee68e269f4cb1d2edf479792
fillup_disk:
fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1"
+ lvm.lvm_fill:
+ fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1"
- 4.8.i386:
no setup autotest
@@ -1696,6 +1740,8 @@ variants:
sys_path = "/sys/class/net/%s/driver"
fillup_disk:
fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1"
+ lvm.lvm_fill:
+ fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1"
- 4.8.x86_64:
@@ -1716,6 +1762,8 @@ variants:
sys_path = "/sys/class/net/%s/driver"
fillup_disk:
fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1"
+ lvm.lvm_fill:
+ fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1"
- 5.3.i386:
new file mode 100644
@@ -0,0 +1,84 @@
+import logging, os
+from autotest_lib.client.common_lib import error
+
+
+@error.context_aware
+def mount_lv(lv_path, session):
+ error.context("mounting ext3 filesystem made on logical volume %s" %
+ os.path.basename(lv_path))
+ session.cmd("mkdir -p /mnt/kvm_test_lvm")
+ session.cmd("mount %s /mnt/kvm_test_lvm" % lv_path)
+
+
+@error.context_aware
+def umount_lv(lv_path, session):
+ error.context("umounting ext3 filesystem made on logical volume %s" %
+ os.path.basename(lv_path))
+ session.cmd("umount %s" % lv_path)
+ session.cmd("rm -rf /mnt/kvm_test_lvm")
+
+
+@error.context_aware
+def run_lvm(test, params, env):
+ """
+ KVM reboot test:
+ 1) Log into a guest
+ 2) Create a volume group and add both disks as pv to the Group
+ 3) Create a logical volume on the VG
+ 5) `fsck' to check the partition that LV locates
+
+ @param test: kvm test object
+ @param params: Dictionary with the test parameters
+ @param env: Dictionary with test environment.
+ """
+ vm = env.get_vm(params["main_vm"])
+ vm.verify_alive()
+ timeout = int(params.get("login_timeout", 360))
+ session = vm.wait_for_login(timeout=timeout)
+
+ vg_name = "vg_kvm_test"
+ lv_name = "lv_kvm_test"
+ lv_path = "/dev/%s/%s" % (vg_name, lv_name)
+ disks = params.get("disks", "/dev/hdb /dev/hdc")
+ clean = params.get("clean", "yes")
+ timeout = params.get("lvm_timeout", "600")
+
+ try:
+ error.context("adding physical volumes %s" % disks)
+ session.cmd("pvcreate %s" % disks)
+
+ error.context("creating a volume group out of %s" % disks)
+ session.cmd("vgcreate %s %s" % (vg_name, disks))
+
+ error.context("activating volume group %s" % vg_name)
+ session.cmd("vgchange -ay %s" % vg_name)
+
+ error.context("creating logical volume on volume group %s" % vg_name)
+ session.cmd("lvcreate -L2000 -n %s %s" % (lv_name, vg_name))
+
+ error.context("creating ext3 filesystem on logical volume %s" % lv_name)
+ session.cmd("yes | mkfs.ext3 %s" % lv_path, timeout=int(timeout))
+
+ mount_lv(lv_path, session)
+
+ umount_lv(lv_path, session)
+
+ error.context("checking ext3 filesystem made on logical volume %s" %
+ lv_name)
+ session.cmd("fsck %s" % lv_path, timeout=int(timeout))
+
+ if clean == "no":
+ mount_lv(lv_path, session)
+
+ finally:
+ if clean == "yes":
+ umount_lv(lv_path, session)
+
+ error.context("removing logical volume %s" % lv_name)
+ session.cmd("lvremove %s" % lv_name)
+
+ error.context("disabling volume group %s" % vg_name)
+ session.cmd("vgchange -a n %s" % vg_name)
+
+ error.context("removing volume group %s" % vg_name)
+ session.cmd("vgremove -f %s" % vg_name)