aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid10.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/raid10.c')
-rw-r--r--drivers/md/raid10.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index b9edbc747a95..c131835cf008 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -894,10 +894,13 @@ static void flush_pending_writes(struct r10conf *conf)
894 spin_lock_irq(&conf->device_lock); 894 spin_lock_irq(&conf->device_lock);
895 895
896 if (conf->pending_bio_list.head) { 896 if (conf->pending_bio_list.head) {
897 struct blk_plug plug;
897 struct bio *bio; 898 struct bio *bio;
899
898 bio = bio_list_get(&conf->pending_bio_list); 900 bio = bio_list_get(&conf->pending_bio_list);
899 conf->pending_count = 0; 901 conf->pending_count = 0;
900 spin_unlock_irq(&conf->device_lock); 902 spin_unlock_irq(&conf->device_lock);
903 blk_start_plug(&plug);
901 /* flush any pending bitmap writes to disk 904 /* flush any pending bitmap writes to disk
902 * before proceeding w/ I/O */ 905 * before proceeding w/ I/O */
903 bitmap_unplug(conf->mddev->bitmap); 906 bitmap_unplug(conf->mddev->bitmap);
@@ -918,6 +921,7 @@ static void flush_pending_writes(struct r10conf *conf)
918 generic_make_request(bio); 921 generic_make_request(bio);
919 bio = next; 922 bio = next;
920 } 923 }
924 blk_finish_plug(&plug);
921 } else 925 } else
922 spin_unlock_irq(&conf->device_lock); 926 spin_unlock_irq(&conf->device_lock);
923} 927}