Hi Bernd, Sorry for interruption. I tested your fuse over io_uring patch set with libfuse null example, the fuse over io_uring mode has better performance than the default mode. e.g., the fio command is as below, fio -direct=1 --filename=/mnt/singfile --rw=read -iodepth=1 --ioengine=libaio --bs=4k --size=4G --runtime=60 --numjobs=1 -name=test_fuse1 But, if I increased fio iodepth option, the fuse over io_uring mode has worse performance than the default mode. e.g., the fio command is as below, fio -direct=1 --filename=/mnt/singfile --rw=read -iodepth=4 --ioengine=libaio --bs=4k --size=4G --runtime=60 --numjobs=1 -name=test_fuse2 The test result showed the fuse over io_uring mode cannot handle this case properly. could you take a look at this issue? or this is design issue? I went through the related source code, I do not understand each fuse_ring_queue thread has only one available ring entry? this design will cause the above issue? the related code is as follows, dev_uring.c 1099 1100 queue = ring->queues[qid]; 1101 if (!queue) { 1102 queue = fuse_uring_create_queue(ring, qid); 1103 if (!queue) 1104 return err; 1105 } 1106 1107 /* 1108 * The created queue above does not need to be destructed in 1109 * case of entry errors below, will be done at ring destruction time. 1110 */ 1111 1112 ent = fuse_uring_create_ring_ent(cmd, queue); 1113 if (IS_ERR(ent)) 1114 return PTR_ERR(ent); 1115 1116 fuse_uring_do_register(ent, cmd, issue_flags); 1117 1118 return 0; 1119 } Thanks Gang