Commit 18022a1b authored by Shaohua Li's avatar Shaohua Li

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: default avatarShaohua Li <shli@fb.com>
parent d2e2ec82
...@@ -809,11 +809,15 @@ static void flush_pending_writes(struct r1conf *conf) ...@@ -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) ...@@ -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) ...@@ -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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment