On Mon, 14 Oct 2024 at 23:27, Bernd Schubert <bernd.schubert@xxxxxxxxxxx> wrote: > With only libfuse as ring user it is more like > > prep_requests(nr=N); > wait_cq(1); ==> we must not wait for more than 1 as more might never arrive > io_uring_for_each_cqe { > } Right. I think the point Pavel is trying to make is that io_uring queue sizes don't have to match fuse queue size. So we could have sq_entries=4, cq_entries=4 and have the server queue 64 FUSE_URING_REQ_FETCH commands, it just has to do that in batches of 4 max. > @Miklos maybe we avoid using large CQEs/SQEs and instead set up our own > separate buffer for FUSE headers? The only gain from this would be in the case where the uring is used for non-fuse requests as well, in which case the extra space in the queue entries would be unused (i.e. 48 unused bytes in the cacheline). I don't know if this is a realistic use case or not. It's definitely a challenge to create a library API that allows this. The disadvantage would be a more complex interface. Thanks, Miklos