drivers/md/md.c |   25 +++++++++++--------------
 1 files changed, 11 insertions(+), 14 deletions(-)

diff -puN drivers/md/md.c~KD35-md-B5 drivers/md/md.c
--- 25/drivers/md/md.c~KD35-md-B5	2003-09-21 22:35:14.000000000 -0700
+++ 25-akpm/drivers/md/md.c	2003-09-21 22:35:14.000000000 -0700
@@ -1450,7 +1450,7 @@ abort:
 static struct kobject *md_probe(dev_t dev, int *part, void *data)
 {
 	static DECLARE_MUTEX(disks_sem);
-	int unit = MINOR(dev);
+	int unit = *part;
 	mddev_t *mddev = mddev_find(unit);
 	struct gendisk *disk;
 
@@ -1874,11 +1874,8 @@ static int autostart_array(dev_t startde
 	list_add(&start_rdev->same_set, &pending_raid_disks);
 
 	for (i = 0; i < MD_SB_DISKS; i++) {
-		mdp_disk_t *desc;
-		dev_t dev;
-
-		desc = sb->disks + i;
-		dev = MKDEV(desc->major, desc->minor);
+		mdp_disk_t *desc = sb->disks + i;
+		dev_t dev = MKDEV(desc->major, desc->minor);
 
 		if (!dev)
 			continue;
@@ -2006,8 +2003,8 @@ static int add_new_disk(mddev_t * mddev,
 {
 	char b[BDEVNAME_SIZE], b2[BDEVNAME_SIZE];
 	mdk_rdev_t *rdev;
-	dev_t dev;
-	dev = MKDEV(info->major,info->minor);
+	dev_t dev = MKDEV(info->major,info->minor);
+
 	if (!mddev->raid_disks) {
 		int err;
 		/* expecting a device which has a superblock */
@@ -2133,7 +2130,7 @@ static int hot_generate_error(mddev_t * 
 
 	rdev = find_rdev(mddev, dev);
 	if (!rdev) {
-		MD_BUG();
+		/* MD_BUG(); */ /* like hell - it's not a driver bug */
 		return -ENXIO;
 	}
 
@@ -2406,7 +2403,7 @@ static int md_ioctl(struct inode *inode,
 		/* START_ARRAY doesn't need to lock the array as autostart_array
 		 * does the locking, and it could even be a different array
 		 */
-		err = autostart_array(arg);
+		err = autostart_array(old_decode_dev(arg));
 		if (err) {
 			printk(KERN_WARNING "md: autostart %s failed!\n",
 				__bdevname(arg, b));
@@ -2543,18 +2540,18 @@ static int md_ioctl(struct inode *inode,
 			goto done_unlock;
 		}
 		case HOT_GENERATE_ERROR:
-			err = hot_generate_error(mddev, arg);
+			err = hot_generate_error(mddev, old_decode_dev(arg));
 			goto done_unlock;
 		case HOT_REMOVE_DISK:
-			err = hot_remove_disk(mddev, arg);
+			err = hot_remove_disk(mddev, old_decode_dev(arg));
 			goto done_unlock;
 
 		case HOT_ADD_DISK:
-			err = hot_add_disk(mddev, arg);
+			err = hot_add_disk(mddev, old_decode_dev(arg));
 			goto done_unlock;
 
 		case SET_DISK_FAULTY:
-			err = set_disk_faulty(mddev, arg);
+			err = set_disk_faulty(mddev, old_decode_dev(arg));
 			goto done_unlock;
 
 		case RUN_ARRAY:

_