Hi Mike, Why queue_work() is unnecessary here for bio with BLK_STS_DM_REQUEUE returned? Thanks Jeffle Xu --- drivers/md/dm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/md/dm.c b/drivers/md/dm.c index c18fc2548518..ae550daa99b5 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -908,9 +908,11 @@ static void dec_pending(struct dm_io *io, blk_status_t error) * Target requested pushing back the I/O. */ spin_lock_irqsave(&md->deferred_lock, flags); - if (__noflush_suspending(md)) + if (__noflush_suspending(md)) { /* NOTE early return due to BLK_STS_DM_REQUEUE below */ bio_list_add_head(&md->deferred, io->orig_bio); + queue_work(md->wq, &md->work); + } else /* noflush suspend was interrupted. */ io->status = BLK_STS_IOERR; -- 2.27.0 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel