Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -809,11 +809,15 @@ static void flush_pending_writes(struct r1conf *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_bio_list(conf, bio);
		blk_finish_plug(&plug);
	} else
		spin_unlock_irq(&conf->device_lock);
}
+4 −0
Original line number Diff line number Diff line
@@ -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);
}