md/raid1/10: add missed blk plug
flush_pending_writes isn't always called with block plug, so add it, and plug works in nested way. Signed-off-by: Shaohua Li <shli@fb.com>
This commit is contained in:
parent
d2e2ec8222
commit
18022a1bd3
|
@ -809,11 +809,15 @@ static void flush_pending_writes(struct r1conf *conf)
|
||||||
spin_lock_irq(&conf->device_lock);
|
spin_lock_irq(&conf->device_lock);
|
||||||
|
|
||||||
if (conf->pending_bio_list.head) {
|
if (conf->pending_bio_list.head) {
|
||||||
|
struct blk_plug plug;
|
||||||
struct bio *bio;
|
struct bio *bio;
|
||||||
|
|
||||||
bio = bio_list_get(&conf->pending_bio_list);
|
bio = bio_list_get(&conf->pending_bio_list);
|
||||||
conf->pending_count = 0;
|
conf->pending_count = 0;
|
||||||
spin_unlock_irq(&conf->device_lock);
|
spin_unlock_irq(&conf->device_lock);
|
||||||
|
blk_start_plug(&plug);
|
||||||
flush_bio_list(conf, bio);
|
flush_bio_list(conf, bio);
|
||||||
|
blk_finish_plug(&plug);
|
||||||
} else
|
} else
|
||||||
spin_unlock_irq(&conf->device_lock);
|
spin_unlock_irq(&conf->device_lock);
|
||||||
}
|
}
|
||||||
|
|
|
@ -894,10 +894,13 @@ static void flush_pending_writes(struct r10conf *conf)
|
||||||
spin_lock_irq(&conf->device_lock);
|
spin_lock_irq(&conf->device_lock);
|
||||||
|
|
||||||
if (conf->pending_bio_list.head) {
|
if (conf->pending_bio_list.head) {
|
||||||
|
struct blk_plug plug;
|
||||||
struct bio *bio;
|
struct bio *bio;
|
||||||
|
|
||||||
bio = bio_list_get(&conf->pending_bio_list);
|
bio = bio_list_get(&conf->pending_bio_list);
|
||||||
conf->pending_count = 0;
|
conf->pending_count = 0;
|
||||||
spin_unlock_irq(&conf->device_lock);
|
spin_unlock_irq(&conf->device_lock);
|
||||||
|
blk_start_plug(&plug);
|
||||||
/* flush any pending bitmap writes to disk
|
/* flush any pending bitmap writes to disk
|
||||||
* before proceeding w/ I/O */
|
* before proceeding w/ I/O */
|
||||||
bitmap_unplug(conf->mddev->bitmap);
|
bitmap_unplug(conf->mddev->bitmap);
|
||||||
|
@ -918,6 +921,7 @@ static void flush_pending_writes(struct r10conf *conf)
|
||||||
generic_make_request(bio);
|
generic_make_request(bio);
|
||||||
bio = next;
|
bio = next;
|
||||||
}
|
}
|
||||||
|
blk_finish_plug(&plug);
|
||||||
} else
|
} else
|
||||||
spin_unlock_irq(&conf->device_lock);
|
spin_unlock_irq(&conf->device_lock);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue