On Mon, May 22, 2017 at 08:06:46AM +0200, Hannes Reinecke wrote: > Problem is that quite some LLDDs require a hardware tag for sending > TMFs, and currently the re-use the tag from the passed in scmd for that. > So first we need to move those to a sane interface, and having them > requesting a new tag for TMFs. Some do indeed. But these seems to be the exception and not the rule. > Should be made easier with Christophs rework, but we still don't have > any defined way how TMFs should request their tag; should they use > private tags? Should they use 'normal' tags? Should the driver implement > their own tag pool, seeing that these commands will never ever making > use of the associated request? I think the right way to go is that every driver that needs tags for TMFs should use private tags internally without the core knowing about it. > Hence I'm looking into implementing a REQ_RESET block request operation, > which then could be used to facilitate all of this (the request would be > allocated from the private tag pool if present). That seems to be overkill to me for the few drivers. And I suspect most of them would be better off now even using blk-mq private tags (which we'd have to implement for the legacy path first or just kill it off) but just not expose a tag per host to the scsi and block layers and set that aside. > It would also neatly solve the scsi_ioctl_reset() problem, as we then > could just issue a REQ_RESET and would avoid having to call into the > eh_* function directly. I don't think calling the eh_* methods is a problem per see. It's just their stupid calling conventions..