On Wed, 2019-03-13 at 23:52 -0400, Douglas Gilbert wrote: +AD4 On 2019-03-13 10:39 p.m., Bart Van Assche wrote: +AD4 +AD4 On 3/13/19 6:32 PM, Douglas Gilbert wrote: +AD4 +AD4 +AD4 I agree that scsi+AF8-ioctl+AF8-reset() should be taught how to produce a request +AD4 +AD4 +AD4 that doesn't blow up intermediate code expecting all requests to be well +AD4 +AD4 +AD4 made with respect to mq. +AD4 +AD4 +AD4 +AD4 Hi Doug, +AD4 +AD4 +AD4 +AD4 Do you perhaps have a proposal for how to do that without allocating a new +AD4 +AD4 request from the error handler and without reserving a request for error +AD4 +AD4 handling purposes. +AD4 +AD4 Well yes. The SCSI ML could tell the block layer that the LU/device +AD4 was unavailable (temporarily) and then the ML would communicate +AD4 directly with the LLD. A block layer/mq bypass ... +AD4 +AD4 Probably don't like that one. Why rule out reserving a request (e.g. one +AD4 per host)? The lowest supported queue depth is one so we reserving a request may break some SCSI LLDs. Additionally, reserving one request may have a performance impact. BTW, it is not clear to me why a struct scsi+AF8-cmnd pointer is passed to the eh+AF8AKgBf-reset+AF8-handler() callbacks. Has it ever been considered to pass a struct scsi+AF8-device pointer to these callback functions instead? In other words, are there any eh+AF8AKgBf-reset+AF8-handler() callbacks that use more information from struct scsi+AF8-cmnd than the device pointer? Bart.