diff options
Diffstat (limited to 'drivers/md/raid5.c')
-rw-r--r-- | drivers/md/raid5.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 96b7f6a1b6f2..83f2c44e170f 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -3336,7 +3336,7 @@ static void handle_stripe(struct stripe_head *sh) | |||
3336 | 3336 | ||
3337 | finish: | 3337 | finish: |
3338 | /* wait for this device to become unblocked */ | 3338 | /* wait for this device to become unblocked */ |
3339 | if (unlikely(s.blocked_rdev)) | 3339 | if (conf->mddev->external && unlikely(s.blocked_rdev)) |
3340 | md_wait_for_blocked_rdev(s.blocked_rdev, conf->mddev); | 3340 | md_wait_for_blocked_rdev(s.blocked_rdev, conf->mddev); |
3341 | 3341 | ||
3342 | if (s.handle_bad_blocks) | 3342 | if (s.handle_bad_blocks) |
@@ -4939,8 +4939,7 @@ static int run(mddev_t *mddev) | |||
4939 | 4939 | ||
4940 | return 0; | 4940 | return 0; |
4941 | abort: | 4941 | abort: |
4942 | md_unregister_thread(mddev->thread); | 4942 | md_unregister_thread(&mddev->thread); |
4943 | mddev->thread = NULL; | ||
4944 | if (conf) { | 4943 | if (conf) { |
4945 | print_raid5_conf(conf); | 4944 | print_raid5_conf(conf); |
4946 | free_conf(conf); | 4945 | free_conf(conf); |
@@ -4954,8 +4953,7 @@ static int stop(mddev_t *mddev) | |||
4954 | { | 4953 | { |
4955 | raid5_conf_t *conf = mddev->private; | 4954 | raid5_conf_t *conf = mddev->private; |
4956 | 4955 | ||
4957 | md_unregister_thread(mddev->thread); | 4956 | md_unregister_thread(&mddev->thread); |
4958 | mddev->thread = NULL; | ||
4959 | if (mddev->queue) | 4957 | if (mddev->queue) |
4960 | mddev->queue->backing_dev_info.congested_fn = NULL; | 4958 | mddev->queue->backing_dev_info.congested_fn = NULL; |
4961 | free_conf(conf); | 4959 | free_conf(conf); |