On 06/01/2021 19:46, Bijan Mottahedeh wrote: > On 1/4/2021 6:43 PM, Pavel Begunkov wrote: >> On 18/12/2020 18:07, Bijan Mottahedeh wrote: >>> Apply fixed_rsrc functionality for fixed buffers support. >> >> git generated a pretty messy diff... > > I had tried to break this up a few ways but it didn't work well because I think most of the code changes depend on the io_uring structure changes. I can look again or if you some idea of how you want to split it, I can do that. Nah, that's fine, I just may have missed something without applying it. > >> Because it's do quiesce, fixed read/write access buffers from asynchronous >> contexts without synchronisation. That won't work anymore, so >> >> 1. either we save it in advance, that would require extra req_async >> allocation for linked fixed rw >> >> 2. or synchronise whenever async. But that would mean that a request >> may get and do IO on two different buffers, that's rotten. >> >> 3. do mixed -- lazy, but if do IO then alloc. >> >> 3.5 also "synchronise" there would mean uring_lock, that's not welcome, >> but we can probably do rcu. > > Are you referring to a case where a fixed buffer request can be submitted from async context while those buffers are being unregistered, or something like that? Yes, io_import_fixed() called from io-wq, and in parallel with unregister/etc. That may happen in many cases, e.g. linked reqs or IOSQE_ASYNC. -- Pavel Begunkov