On 6/7/23 22:44, Christoph Hellwig wrote:
Thanks. This wasn't obvious to me from the current code. I'll add a
comment in the next version.
The crucial question is now, is it sufficient to call
blk_mq_quiesce_queue_nowait() under the mutex, or does the call to
blk_mq_wait_quiesce_done() have to be under the mutex, too?
The latter would actually kill off our attempt to fix the delay
in fc_remote_port_delete() that was caused by repeated
synchronize_rcu() calls.
But if I understand you correctly, moving the wait out of the mutex
should be ok. I'll update the series accordingly.
I can't think of a reason we'd want to lock over the wait, but Bart
knows this code way better than I do.
Unless deep changes would be made in the block layer
blk_mq_quiesce_queue_nowait() and/or blk_mq_wait_quiesce_done()
functions, moving blk_mq_wait_quiesce_done() outside the critical
section seems fine to me.
Thanks,
Bart.