[lvm-devel] master - tests: play better with mdadm

Zdenek Kabelac zkabelac at fedoraproject.org
Mon May 4 11:12:38 UTC 2015


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=7a5a4f952e567ebb32e61414db62292eab81b6c7
Commit:        7a5a4f952e567ebb32e61414db62292eab81b6c7
Parent:        88421c883ebe20730e31e601d209f48b64b14ad0
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Mon May 4 13:07:33 2015 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon May 4 13:11:41 2015 +0200

tests: play better with mdadm

Manage mdadm devices on older distros is a challange.
---
 test/lib/aux.sh                     |   14 +++++++++++++-
 test/shell/pvcreate-operation-md.sh |    7 +++++++
 2 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index d0a5173..80792f5 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -427,7 +427,19 @@ prepare_md_dev() {
 		mddev=/dev/md/md_lvm_test0 || \
 		mddev=/dev/md_lvm_test0
 
-	mdadm --create --metadata=1.0 "$mddev" --auto=md --level $level --chunk $rchunk --raid-devices=$rdevs "${@:4}"
+	mdadm --create --metadata=1.0 "$mddev" --auto=md --level $level --chunk $rchunk --raid-devices=$rdevs "${@:4}" || {
+		# Some older 'mdadm' version managed to open and close devices internaly
+		# and reporting non-exclusive access on such device
+		# let's just skip the test if this happens.
+		# Note: It's pretty complex to get rid of consequences
+		#       the following sequence avoid leaks on f19
+		# TODO: maybe try here to recreate few times....
+		mdadm --stop "$mddev" || true
+		udev_wait
+		mdadm --zero-superblock "${@:4}" || true
+		udev_wait
+		skip "Test skipped, unreliable mdadm detected!"
+	}
 	test -b "$mddev" || skip "mdadm has not created device!"
 
 	# LVM/DM will see this device
diff --git a/test/shell/pvcreate-operation-md.sh b/test/shell/pvcreate-operation-md.sh
index 52a2c37..8291215 100644
--- a/test/shell/pvcreate-operation-md.sh
+++ b/test/shell/pvcreate-operation-md.sh
@@ -50,6 +50,7 @@ if aux kernel_at_least 2 6 33 ; then
     pvcreate --metadatasize 128k \
 	--config 'devices { md_chunk_alignment=0 }' "$pvdev"
     check pv_field "$pvdev" pe_start "1.00m"
+    pvremove "$pvdev"
 fi
 
 # partition MD array directly, depends on blkext in Linux >= 2.6.28
@@ -58,6 +59,12 @@ if aux kernel_at_least 2 6 28 ; then
     sfdisk "$mddev" <<EOF
 ,,83
 EOF
+    # Wait till all partition links in udev are created
+    aux udev_wait
+
+    # Skip test if udev rule has not created proper links for partitions
+    test -b "${mddev}p1" || { ls -laR /dev ; skip "Missing partition link" ; }
+
     pvscan
     # make sure partition on MD is _not_ removed
     # - tests partition -> parent lookup via sysfs paths




More information about the lvm-devel mailing list