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: