diff options
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index b4fb7247b3ed..ee199d462520 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -2054,13 +2054,15 @@ static int do_md_run(mddev_t * mddev) | |||
2054 | if (start_readonly) | 2054 | if (start_readonly) |
2055 | mddev->ro = 2; /* read-only, but switch on first write */ | 2055 | mddev->ro = 2; /* read-only, but switch on first write */ |
2056 | 2056 | ||
2057 | /* before we start the array running, initialise the bitmap */ | 2057 | err = mddev->pers->run(mddev); |
2058 | err = bitmap_create(mddev); | 2058 | if (!err && mddev->pers->sync_request) { |
2059 | if (err) | 2059 | err = bitmap_create(mddev); |
2060 | printk(KERN_ERR "%s: failed to create bitmap (%d)\n", | 2060 | if (err) { |
2061 | mdname(mddev), err); | 2061 | printk(KERN_ERR "%s: failed to create bitmap (%d)\n", |
2062 | else | 2062 | mdname(mddev), err); |
2063 | err = mddev->pers->run(mddev); | 2063 | mddev->pers->stop(mddev); |
2064 | } | ||
2065 | } | ||
2064 | if (err) { | 2066 | if (err) { |
2065 | printk(KERN_ERR "md: pers->run() failed ...\n"); | 2067 | printk(KERN_ERR "md: pers->run() failed ...\n"); |
2066 | module_put(mddev->pers->owner); | 2068 | module_put(mddev->pers->owner); |