On Tue, Nov 30, 2021 at 06:26:13PM +0100, Jan Kara wrote: > I'm not quite sure about dropping the rcu protection here. This function > generally runs without any protection so what guards us against icq being > freed just after we've got its pointer from the list? How does the RCU protection scheme work for the icq lookups? ioc_lookup_icq takes it and then drops it before getting any kind of refcount, so this all looks weird. But I guess you are right that I should probably keep this cargo culted scheme unless I have an actual plan on how this could work. While we're at it: I don't see how put put_io_context could be called under q->queue_lock and thus actually need the whole workqueue scheme. Then again we really need to do an audit on queue_lock and split it into actually documented locks now that the old request code is gone.