On Thu, 2018-12-20 at 14:34 -0700, Jens Axboe wrote: +AD4 Yeah, I don't think it's bullet proof either, it just closes the gap. +AD4 I'm fine with fiddling with the tag iteration. On top of what I sent, we +AD4 could have tag iteration hold the RCU read lock, and then we just need +AD4 to ensure that the tags are freed with RCU. Do you mean using call+AF8-rcu() to free tags? Would that require to add a struct rcu+AF8-head to every request? Would it be acceptable to increase the size of struct request with an rcu+AF8-head? Additionally, could that reduce the queue depth if the time between grace periods is larger than the time between I/O submissions? Thanks, Bart.