>> + /* >> + * Unblock any pending dispatch I/Os before we destroy the device. >> + * From null_destroy_dev()->del_gendisk() will set GD_DEAD flag >> + * causing any new I/O from __bio_queue_enter() to fail with -ENODEV. >> + */ >> + blk_mq_unquiesce_queue(nullb->q); >> + >> + null_destroy_dev(nullb); > > destroying device is never good cleanup for handling timeout/abort, and it > should have been the last straw any time. > That is exactly why I've added the rq_abort_limit, so until the limit is not reached null_abort_work() will not get scheduled and device is not destroyed. -ck