[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#699431: partman-auto: don't hide whole-disk partitionable mdraid arrays



Package: partman-auto
Version: 106
Tags: patch

See metabug 699430, http://bugs.debian.org/699430 :
	(debian-installer: support for Intel Matrix Raid (RST, imsm)

  * don't hide /dev/md* arrays if they are provisioned on whole-disk
    devices - in that case the md array itself is partitionable,
    e.g. for md-fakeraid like imsm (Intel Matrix raid).

Thanks

diff -ruN 00-ORIG/partman-auto-106/debian/changelog partman-auto-106/debian/changelog
--- 00-ORIG/partman-auto-106/debian/changelog	2012-12-12 05:52:35.000000000 +0000
+++ partman-auto-106/debian/changelog	2013-01-29 14:52:14.946726850 +0000
@@ -1,3 +1,11 @@
+partman-auto (106+1) unstable; urgency=low
+
+  * don't hide /dev/md* arrays if they are provisioned on whole-disk
+    devices - in that case the md array itself is partitionable,
+    e.g. for md-fakeraid like imsm (Intel Matrix raid).
+
+ -- Miquel van Smoorenburg <miquels@debian.org>  Tue, 29 Jan 2013 15:50:37 +0100
+
 partman-auto (106) unstable; urgency=low
 
   [ Updated translations ]
diff -ruN 00-ORIG/partman-auto-106/lib/auto-shared.sh partman-auto-106/lib/auto-shared.sh
--- 00-ORIG/partman-auto-106/lib/auto-shared.sh	2011-02-07 02:00:27.000000000 +0000
+++ partman-auto-106/lib/auto-shared.sh	2013-01-29 14:49:59.644371625 +0000
@@ -208,6 +208,28 @@
 	free_space=$(partition_after $id)'
 }
 
+is_wholedisk_mdraid () {
+	local device="`echo $1 | sed -e 's!/\([0-9]*\)$!\1!'`"
+	local mddisk=${device#/dev/}
+	local ret=0
+	local d
+
+	[ -d /sys/block/$mddisk/md ] || return 1
+
+	for d in /sys/block/$mddisk/slaves/*; do
+		case "$d" in
+			dm-*|md*)
+				;;
+			*p[0-9]|*p[0-9][0-9])
+				ret=1
+				break
+				;;
+		esac
+	done
+
+	return $ret
+}
+
 get_auto_disks() {
 	local dev device dmtype
 
@@ -217,7 +239,12 @@
 		device=$(cat $dev/device)
 		
 		# Skip software RAID (mdadm) devices (/dev/md/X and /dev/mdX)
-		$(echo "$device" | grep -Eq "/dev/md/?[0-9]*$") && continue
+		# unless it's a whole-disk partitionable array
+		if echo "$device" | grep -Eq "/dev/md/?[0-9]*$"; then
+			if ! is_wholedisk_mdraid "$device"; then
+				continue
+			fi
+		fi
 
 		# Skip device mapper devices (/dev/mapper/),
 		# except for dmraid or multipath devices


Reply to: