diff options
Diffstat (limited to 'drivers/md/raid10.c')
| -rw-r--r-- | drivers/md/raid10.c | 4 | 
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)  	spin_lock_irq(&conf->device_lock);  	if (conf->pending_bio_list.head) { +		struct blk_plug plug;  		struct bio *bio; +  		bio = bio_list_get(&conf->pending_bio_list);  		conf->pending_count = 0;  		spin_unlock_irq(&conf->device_lock); +		blk_start_plug(&plug);  		/* flush any pending bitmap writes to disk  		 * before proceeding w/ I/O */  		bitmap_unplug(conf->mddev->bitmap); @@ -918,6 +921,7 @@ static void flush_pending_writes(struct r10conf *conf)  				generic_make_request(bio);  			bio = next;  		} +		blk_finish_plug(&plug);  	} else  		spin_unlock_irq(&conf->device_lock);  } |