dm: improve BLK_STS_DM_REQUEUE and BLK_STS_AGAIN handling
authorMing Lei <ming.lei@redhat.com>
Fri, 24 Jun 2022 14:12:53 +0000 (22:12 +0800)
committerMike Snitzer <snitzer@kernel.org>
Wed, 29 Jun 2022 18:17:16 +0000 (14:17 -0400)
commit444fe04f7a5a7991daa1a8fc3680670ac87fc2ce
tree4ee9ffed1c6199432d695e061affda10a2271498
parente810cb78bc4b4febeac451a0d823ca68622cd86b
dm: improve BLK_STS_DM_REQUEUE and BLK_STS_AGAIN handling

If either BLK_STS_DM_REQUEUE or BLK_STS_AGAIN is returned for POLLED
io, we requeue the original bio into deferred list and kick md->wq to
re-submit it to block layer.

Improve the handling in the following way:

1) Factor out dm_handle_requeue() for handling dm_io requeue.

2) Unify handling for BLK_STS_DM_REQUEUE and BLK_STS_AGAIN: clear
   REQ_POLLED for BLK_STS_DM_REQUEUE too, for the sake of simplicity,
   given BLK_STS_DM_REQUEUE is very unusual.

3) Queue md->wq explicitly in dm_handle_requeue(), so requeue handling
   becomes more robust.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
drivers/md/dm.c