diff options
Diffstat (limited to 'drivers/md/multipath.c')
-rw-r--r-- | drivers/md/multipath.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c index c9b134cd1532..4e4bfde3db5d 100644 --- a/drivers/md/multipath.c +++ b/drivers/md/multipath.c | |||
@@ -103,7 +103,8 @@ static void multipath_end_bh_io (struct multipath_bh *mp_bh, int err) | |||
103 | mempool_free(mp_bh, conf->pool); | 103 | mempool_free(mp_bh, conf->pool); |
104 | } | 104 | } |
105 | 105 | ||
106 | int multipath_end_request(struct bio *bio, unsigned int bytes_done, int error) | 106 | static int multipath_end_request(struct bio *bio, unsigned int bytes_done, |
107 | int error) | ||
107 | { | 108 | { |
108 | int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); | 109 | int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); |
109 | struct multipath_bh * mp_bh = (struct multipath_bh *)(bio->bi_private); | 110 | struct multipath_bh * mp_bh = (struct multipath_bh *)(bio->bi_private); |
@@ -355,7 +356,7 @@ static int multipath_remove_disk(mddev_t *mddev, int number) | |||
355 | goto abort; | 356 | goto abort; |
356 | } | 357 | } |
357 | p->rdev = NULL; | 358 | p->rdev = NULL; |
358 | synchronize_kernel(); | 359 | synchronize_rcu(); |
359 | if (atomic_read(&rdev->nr_pending)) { | 360 | if (atomic_read(&rdev->nr_pending)) { |
360 | /* lost the race, try later */ | 361 | /* lost the race, try later */ |
361 | err = -EBUSY; | 362 | err = -EBUSY; |