
From: NeilBrown <neilb@cse.unsw.edu.au>

Current code calls do_md_stop to clean up if do_md_run fails, but this is 

a/ not needed as do_md_run cleans up itself

b/ bad as it could try to clean up after an -EBUSY error !!!



---

 25-akpm/drivers/md/md.c |   15 +--------------
 1 files changed, 1 insertion(+), 14 deletions(-)

diff -puN drivers/md/md.c~md-06-do_md_run-fix drivers/md/md.c
--- 25/drivers/md/md.c~md-06-do_md_run-fix	Thu Jan 15 17:36:19 2004
+++ 25-akpm/drivers/md/md.c	Thu Jan 15 17:36:19 2004
@@ -1766,10 +1766,8 @@ static void autorun_array(mddev_t *mddev
 	printk("\n");
 
 	err = do_md_run (mddev);
-	if (err) {
+	if (err)
 		printk(KERN_WARNING "md :do_md_run() returned %d\n", err);
-		do_md_stop (mddev, 0);
-	}
 }
 
 /*
@@ -2571,19 +2569,8 @@ static int md_ioctl(struct inode *inode,
 			goto done_unlock;
 
 		case RUN_ARRAY:
-		{
 			err = do_md_run (mddev);
-			/*
-			 * we have to clean up the mess if
-			 * the array cannot be run for some
-			 * reason ...
-			 * ->pers will not be set, to superblock will
-			 * not be updated.
-			 */
-			if (err)
-				do_md_stop (mddev, 0);
 			goto done_unlock;
-		}
 
 		default:
 			if (_IOC_TYPE(cmd) == MD_MAJOR)

_
