dcavalca / rpms / mdadm

Forked from rpms/mdadm 3 years ago
Clone

Blame SOURCES/mdadm-test-Add-disks-to-support-testing-phsical-devi.patch

2c1b57
From 25357919d227fd907e4da167d0e07f33f9c94bca Mon Sep 17 00:00:00 2001
2c1b57
From: Zhilong Liu <zlliu@suse.com>
2c1b57
Date: Wed, 14 Jun 2017 21:02:53 +0800
2c1b57
Subject: [RHEL7.5 PATCH 157/169] mdadm/test: Add '--disks=' to support
2c1b57
 testing phsical devices
2c1b57
2c1b57
If test mode has set as '--dev=disk', then users can specify
2c1b57
the argument of "--disks" to test a bunch of physical devices.
2c1b57
For example: ./test --dev=disk --disks=/dev/sda{2..15}
2c1b57
could execute all test cases on physical devices.
2c1b57
2c1b57
Currently, the --dev=disk mode would confilct with testdev()
2c1b57
in current test cases, thus ignore testing testdev() if has
2c1b57
set --dev=disk mode.
2c1b57
2c1b57
Signed-off-by: Zhilong Liu <zlliu@suse.com>
2c1b57
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
2c1b57
---
2c1b57
 test | 37 ++++++++++++++++++++++++++++++++-----
2c1b57
 1 file changed, 32 insertions(+), 5 deletions(-)
2c1b57
2c1b57
diff --git a/test b/test
2c1b57
index df2eeab..87e2df2 100755
2c1b57
--- a/test
2c1b57
+++ b/test
2c1b57
@@ -73,11 +73,11 @@ save_log() {
2c1b57
 	then
2c1b57
 		# not supported lvm type yet
2c1b57
 		echo
2c1b57
-	elif [ $DEVTYPE == 'loop' ]
2c1b57
+	elif [ "$DEVTYPE" == 'loop' -o "$DEVTYPE" == 'disk' ]
2c1b57
 	then
2c1b57
 		if [ ! -z ${array[@]} -a ${#array[@]} -ge 1 ]
2c1b57
 		then
2c1b57
-			md_disks=($($mdadm -D -Y ${array[@]} | grep "/dev/$DEVTYPE" | cut -d'=' -f2))
2c1b57
+			md_disks=($($mdadm -D -Y ${array[@]} | grep "/dev/" | cut -d'=' -f2))
2c1b57
 			cat /proc/mdstat | grep -q "bitmap"
2c1b57
 			if [ $? -eq 0 ]
2c1b57
 			then
2c1b57
@@ -114,6 +114,9 @@ cleanup() {
2c1b57
 			eval "lvremove --quiet -f \$dev$d"
2c1b57
 		done
2c1b57
 		;;
2c1b57
+	disk )
2c1b57
+		$mdadm --zero ${disks[@]} &> /dev/null
2c1b57
+		;;
2c1b57
 	esac
2c1b57
 }
2c1b57
 
2c1b57
@@ -128,6 +131,7 @@ do_setup() {
2c1b57
 	[ -d $logdir ] || mkdir -p $logdir
2c1b57
 	dmesg -c > /dev/null
2c1b57
 
2c1b57
+	devlist=
2c1b57
 	if [ "$DEVTYPE" == "loop" ]
2c1b57
 	then
2c1b57
 		# make sure there are no loop devices remaining.
2c1b57
@@ -139,8 +143,22 @@ do_setup() {
2c1b57
 			losetup -d /dev/loop[0-9]* 2> /dev/null
2c1b57
 			sleep 0.2
2c1b57
 		done
2c1b57
+	elif [ "$DEVTYPE" == "disk" ]
2c1b57
+	then
2c1b57
+		if [ ! -z "$disks" ]
2c1b57
+		then
2c1b57
+			for d in $(seq 0 ${#disks[@]})
2c1b57
+			do
2c1b57
+				eval "dev$d=${disks[$d]}"
2c1b57
+				eval devlist=\"\$devlist \$dev$d\"
2c1b57
+				eval devlist$d=\"\$devlist\"
2c1b57
+			done
2c1b57
+			$mdadm --zero ${disks[@]} &> /dev/null
2c1b57
+		else
2c1b57
+			echo "Forget to provide physical devices for disk mode."
2c1b57
+			exit 1
2c1b57
+		fi
2c1b57
 	fi
2c1b57
-	devlist=
2c1b57
 	for d in 0 1 2 3 4 5 6 7 8 9 10 11 12 13
2c1b57
 	do
2c1b57
 		sz=$size
2c1b57
@@ -320,6 +338,7 @@ no_errors() {
2c1b57
 # basic device test
2c1b57
 testdev() {
2c1b57
 	[ -b $1 ] || die "$1 isn't a block device."
2c1b57
+	[ "$DEVTYPE" == "disk" ] && return 0
2c1b57
 	udevadm settle
2c1b57
 	dev=$1
2c1b57
 	cnt=$2
2c1b57
@@ -383,6 +402,7 @@ do_test() {
2c1b57
 do_help() {
2c1b57
 	cat <<-EOF
2c1b57
 	Usage: $0 [options]
2c1b57
+	Example for disk mode: ./test --dev=disk --disks=/dev/sda{2..15}
2c1b57
 	Options:
2c1b57
 		--tests=test1,test2,...     Comma separated list of tests to run
2c1b57
 		--raidtype=                 raid0|linear|raid1|raid456|raid10|ddf|imsm
2c1b57
@@ -391,7 +411,8 @@ do_help() {
2c1b57
 		--logdir=directory          Directory to save all logfiles in
2c1b57
 		--save-logs                 Usually use with --logdir together
2c1b57
 		--keep-going | --no-error   Don't stop on error, ie. run all tests
2c1b57
-		--dev=loop|lvm|ram          Use loop devices (default), LVM, or RAM disk
2c1b57
+		--dev=loop|lvm|ram|disk     Use loop devices (default), LVM, RAM or disk
2c1b57
+		--disks=                    Provide a bunch of physical devices for test
2c1b57
 		--volgroup=name             LVM volume group for LVM test
2c1b57
 		setup                       Setup test environment and exit
2c1b57
 		cleanup                     Cleanup test environment
2c1b57
@@ -476,6 +497,9 @@ parse_args() {
2c1b57
 			ram )
2c1b57
 				DEVTYPE=ram
2c1b57
 				;;
2c1b57
+			disk )
2c1b57
+				DEVTYPE=disk
2c1b57
+				;;
2c1b57
 			* )
2c1b57
 				echo "Unknown argument: $i"
2c1b57
 				do_help
2c1b57
@@ -483,6 +507,9 @@ parse_args() {
2c1b57
 				;;
2c1b57
 			esac
2c1b57
 			;;
2c1b57
+		--disks=* )
2c1b57
+			disks=(${disks[*]} ${i##*=})
2c1b57
+			;;
2c1b57
 		--volgroup=* )
2c1b57
 			LVM_VOLGROUP=`expr "x$i" : 'x[^=]*=\(.*\)'`
2c1b57
 			;;
2c1b57
@@ -509,7 +536,7 @@ check_env() {
2c1b57
 		echo "test: please run 'make everything' before perform testing."
2c1b57
 		exit 1
2c1b57
 	}
2c1b57
-	cmds=(mdadm lsblk df udevadm losetup mkfs.ext3 fsck)
2c1b57
+	cmds=(mdadm lsblk df udevadm losetup mkfs.ext3 fsck seq)
2c1b57
 	for cmd in ${cmds[@]}
2c1b57
 	do
2c1b57
 		which $cmd > /dev/null || {
2c1b57
-- 
2c1b57
2.7.4
2c1b57