|
@@ -2636,11 +2636,13 @@ static struct r1conf *setup_conf(struct mddev *mddev)
|
|
|
return ERR_PTR(err);
|
|
|
}
|
|
|
|
|
|
+static int stop(struct mddev *mddev);
|
|
|
static int run(struct mddev *mddev)
|
|
|
{
|
|
|
struct r1conf *conf;
|
|
|
int i;
|
|
|
struct md_rdev *rdev;
|
|
|
+ int ret;
|
|
|
|
|
|
if (mddev->level != 1) {
|
|
|
printk(KERN_ERR "md/raid1:%s: raid level not set to mirroring (%d)\n",
|
|
@@ -2705,7 +2707,11 @@ static int run(struct mddev *mddev)
|
|
|
mddev->queue->backing_dev_info.congested_data = mddev;
|
|
|
blk_queue_merge_bvec(mddev->queue, raid1_mergeable_bvec);
|
|
|
}
|
|
|
- return md_integrity_register(mddev);
|
|
|
+
|
|
|
+ ret = md_integrity_register(mddev);
|
|
|
+ if (ret)
|
|
|
+ stop(mddev);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static int stop(struct mddev *mddev)
|