[dm-devel] dm-mq and end_clone_request()

Bart Van Assche bart.vanassche at sandisk.com
Tue Jul 19 22:57:34 UTC 2016


Hello Mike,

If I run a fio data integrity test against kernel v4.7-rc7 then I see 
often that fio reports I/O errors if a path is removed despite 
queue_if_no_path having been set in /etc/multipath.conf. Further 
analysis showed that this happens because during SCSI device removal a 
SCSI device enters state SDEV_CANCEL before the block layer queue is 
marked as "dying". In that state I/O requests submitted to that SCSI 
device are failed with -EIO. The behavior for end_clone_request() in 
drivers/md/dm.c for such requests is as follows:
- With multiqueue support disabled, call __blk_put_request() and ignore
   the "error" argument passed to end_clone_request().
- With multiqueue support enabled, pass the "error" argument to
   dm_complete_request().

Shouldn't end_clone_request() requeue failed requests in both cases 
instead of passing the I/O error to the submitter only if multiqueue is 
enabled?

Thanks,

Bart.




More information about the dm-devel mailing list