On 10/27/21 9:35 AM, Martin K. Petersen wrote: > > Jens, > >> But yes, reuse of the existing request is probably another potentially >> viable approach. My worry there is that inevitably you end up needing >> to stash a lot of data to restore the original, and we're certainly >> not adding anything to struct request for that. > > Yeah, I much prefer the reserved tag approach. That was my original > recommendation. > > SCSI error handling does command hijacking and it is absolutely > dreadful. Then let's make sure we nudge it in that direction! It'd be feasible to have less reserved tags, you only need as many as you want to have these special commands inflight. Post that, returning BUSY and just retrying when a request completes should be fine. Hence I'd size the reserved tag pool appropriately depending on what kind of performance is expected out of this, with just 1 reserved tag being enough to give us the guarantees we need for forward progress. I think the plan forward is clear here then: 1) Revert the optimization that requires the use of cloned insert for 5.15. 2) Re-write the optimization using reserved tags, post 5.15 obviously. -- Jens Axboe