From acb8aade9a64f7eeb9b855cf3e4c4d5c91318fa8 Mon Sep 17 00:00:00 2001 From: majianpeng Date: Mon, 2 Apr 2012 09:48:38 +1000 Subject: [PATCH] --- yaml --- r: 298547 b: refs/heads/master c: 5220ea1e640869e70f894837678315c878c651fd h: refs/heads/master i: 298545: e5c33eda9aa1bd9380f94d41aa5c8a146bd25bb2 298543: a474db047848f3b5960c3c0519955f28fe1df5b0 v: v3 --- [refs] | 2 +- trunk/drivers/md/raid1.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 73f9476ca6c4..0e0e515fc534 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0366ef847581d692e197b88825867ca9ee00e358 +refs/heads/master: 5220ea1e640869e70f894837678315c878c651fd diff --git a/trunk/drivers/md/raid1.c b/trunk/drivers/md/raid1.c index 4a40a200d769..242440831b23 100644 --- a/trunk/drivers/md/raid1.c +++ b/trunk/drivers/md/raid1.c @@ -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)