On 10/14/24 13:10, Miklos Szeredi wrote: > On Mon, 14 Oct 2024 at 04:44, Ming Lei <tom.leiming@xxxxxxxxx> wrote: > >> It also depends on how fuse user code consumes the big CQE payload, if >> fuse header needs to keep in memory a bit long, you may have to copy it >> somewhere for post-processing since io_uring(kernel) needs CQE to be >> returned back asap. > > Yes. > > I'm not quite sure how the libfuse interface will work to accommodate > this. Currently if the server needs to delay the processing of a > request it would have to copy all arguments, since validity will not > be guaranteed after the callback returns. With the io_uring Well, it depends on the libfuse implementation. In plain libfuse the buffer is associated with the the thread. This could be improved by creating a request pool and buffers per request. AFAIK, Antonio has done that for mergerfs. > infrastructure the headers would need to be copied, but the data > buffer would be per-request and would not need copying. This is > relaxing a requirement so existing servers would continue to work Yep, that is actually how we use it at ddn for requests over io-uring. > fine, but would not be able to take full advantage of the multi-buffer > design. What do you actually mean with "multi-buffer design"? Thanks, Bernd