md/raid1-10: don't handle pluged bio by daemon thread
authorYu Kuai <yukuai3@huawei.com>
Mon, 29 May 2023 13:11:05 +0000 (21:11 +0800)
committerSong Liu <song@kernel.org>
Tue, 13 Jun 2023 22:25:44 +0000 (15:25 -0700)
commit9efcc2c3df7612eea02daa159ae7c6ac44420513
tree24fc507db66f76f1b31b4a05ced89b7c169fa479
parenta022325ab970cf04b66ca128a87345714aa44b99
md/raid1-10: don't handle pluged bio by daemon thread

current->bio_list will be set under submit_bio() context, in this case
bitmap io will be added to the list and wait for current io submission to
finish, while current io submission must wait for bitmap io to be done.
commit 874807a83139 ("md/raid1{,0}: fix deadlock in bitmap_unplug.") fix
the deadlock by handling plugged bio by daemon thread.

On the one hand, the deadlock won't exist after commit a214b949d8e3
("blk-mq: only flush requests from the plug in blk_mq_submit_bio"). On
the other hand, current solution makes it impossible to flush plugged bio
in raid1/10_make_request(), because this will cause that all the writes
will goto daemon thread.

In order to limit the number of plugged bio, commit 874807a83139
("md/raid1{,0}: fix deadlock in bitmap_unplug.") is reverted, and the
deadlock is fixed by handling bitmap io asynchronously.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230529131106.2123367-7-yukuai1@huaweicloud.com
drivers/md/raid1-10.c
drivers/md/raid1.c
drivers/md/raid10.c