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

md autodetect and osf disklabels



here is a patch (i made a LONG time ago), which enables md (software raid)
autodetection for osf partitions of type 0xfd.

the reason this isn't in 2.4 is due to alan cox rejecting it, in case osf/1
uses 0xfd for anything. can any tru64/dec unix users confirm (preferably
with a pointer to documention from dec/compaq) that it does not use the 0xfd
type for anything?

also, could someone fimiliar with the 2.5 partition api changes please port
it to 2.5? the 2.5 stuff is harder to figure out than 2.4. 8) otherwise,
i'll probably port it later this week.

i'd like to get md autodetection working in 2.4 and 2.5. i can't be the only
one using md for the rootfs.

-- 
Tom Vier <tmv@comcast.net>
DSA Key ID 0xE6CB97DA
diff -urN linux-2.4.10-ac7-patched-build/fs/partitions/osf.c linux-2.4.10-ac7-patched-build-osf/fs/partitions/osf.c
--- linux-2.4.10-ac7-patched-build/fs/partitions/osf.c	Sat Oct  6 13:25:48 2001
+++ linux-2.4.10-ac7-patched-build-osf/fs/partitions/osf.c	Sat Oct  6 13:25:20 2001
@@ -7,6 +7,7 @@
  *  Re-organised Feb 1998 Russell King
  */
 
+#include <linux/config.h>
 #include <linux/fs.h>
 #include <linux/genhd.h>
 #include <linux/kernel.h>
@@ -17,6 +18,10 @@
 #include "check.h"
 #include "osf.h"
 
+#if CONFIG_BLK_DEV_MD
+extern void md_autodetect_dev(kdev_t dev);
+#endif
+
 int osf_partition(struct gendisk *hd, struct block_device *bdev,
 		unsigned long first_sector, int current_minor)
 {
@@ -74,10 +79,16 @@
 	for (i = 0 ; i < le16_to_cpu(label->d_npartitions); i++, partition++) {
 		if ((current_minor & mask) == 0)
 		        break;
-		if (le32_to_cpu(partition->p_size))
-			add_gd_partition(hd, current_minor,
-				first_sector+le32_to_cpu(partition->p_offset),
-				le32_to_cpu(partition->p_size));
+		if (le32_to_cpu(partition->p_size)) {
+				add_gd_partition(hd, current_minor,
+					first_sector+le32_to_cpu(partition->p_offset),
+					le32_to_cpu(partition->p_size));
+#if CONFIG_BLK_DEV_MD
+				if (partition->p_fstype == LINUX_RAID_PARTITION) {
+					md_autodetect_dev(MKDEV(hd->major,current_minor));
+				}
+#endif
+		}
 		current_minor++;
 	}
 	printk("\n");

Reply to: