diff options
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index c068f171b4eb..194580fba7fd 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -718,6 +718,7 @@ static void super_written(struct bio *bio) | |||
718 | 718 | ||
719 | if (atomic_dec_and_test(&mddev->pending_writes)) | 719 | if (atomic_dec_and_test(&mddev->pending_writes)) |
720 | wake_up(&mddev->sb_wait); | 720 | wake_up(&mddev->sb_wait); |
721 | rdev_dec_pending(rdev, mddev); | ||
721 | bio_put(bio); | 722 | bio_put(bio); |
722 | } | 723 | } |
723 | 724 | ||
@@ -732,6 +733,8 @@ void md_super_write(struct mddev *mddev, struct md_rdev *rdev, | |||
732 | */ | 733 | */ |
733 | struct bio *bio = bio_alloc_mddev(GFP_NOIO, 1, mddev); | 734 | struct bio *bio = bio_alloc_mddev(GFP_NOIO, 1, mddev); |
734 | 735 | ||
736 | atomic_inc(&rdev->nr_pending); | ||
737 | |||
735 | bio->bi_bdev = rdev->meta_bdev ? rdev->meta_bdev : rdev->bdev; | 738 | bio->bi_bdev = rdev->meta_bdev ? rdev->meta_bdev : rdev->bdev; |
736 | bio->bi_iter.bi_sector = sector; | 739 | bio->bi_iter.bi_sector = sector; |
737 | bio_add_page(bio, page, size, 0); | 740 | bio_add_page(bio, page, size, 0); |
@@ -6883,7 +6886,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, | |||
6883 | 6886 | ||
6884 | case ADD_NEW_DISK: | 6887 | case ADD_NEW_DISK: |
6885 | /* We can support ADD_NEW_DISK on read-only arrays | 6888 | /* We can support ADD_NEW_DISK on read-only arrays |
6886 | * on if we are re-adding a preexisting device. | 6889 | * only if we are re-adding a preexisting device. |
6887 | * So require mddev->pers and MD_DISK_SYNC. | 6890 | * So require mddev->pers and MD_DISK_SYNC. |
6888 | */ | 6891 | */ |
6889 | if (mddev->pers) { | 6892 | if (mddev->pers) { |