On 5/4/21 1:57 AM, Martin Wilck wrote: > No, I can't. I haven't reviewed every caller. I thought about the > function's documentation, which simply says "find the tagged command by > host". Maybe I got this wrong. > > You're right that returning non-in-flight requests makes no sense for > drivers calling this function in the request completion code path. > > The situation was a bit different until recently, when drivers used > scsi_host_find_tag() also for iterating over commands. The commit > message of e73a5e8e8003 stated that it avoids 'random errors' in this > case; I am not sure if that's actually the case. I can at least imagine > that a driver would want to abort or otherwise invalidate requests even > if they're not in flight yet (e.g. when shutting down a controller). > As the drivers have now been fixed to use blk_mq_tagset_busy_iter(), > there's no need to discuss this further. Unless if there is a strong argument I'd like to keep commit e73a5e8e8003 ("scsi: core: Only return started requests from scsi_host_find_tag()"). I think that commit implements the behavior that is needed in the completion path of SCSI LLDs. Thanks, Bart.