axboe / liburing

Library providing helpers for the Linux kernel io_uring support
MIT License
2.87k stars 402 forks source link

io_uring nvme passthrough failed : "test_io_uring_submit_enters failed" #920

Closed jdmfr closed 1 month ago

jdmfr commented 1 year ago

Hi,

I am studying passthru mechanism by running io_uring_passthrough.t , but it runs fail.

If my usage isn't wrong ,it is ./io_uring_passthrough.t /dev/ng0n1

But I got the ret-message: test_io_uring_submit_enters failed , which is caused by no detected cqe. After failed ,there is a kthread kworker/u64:16+events_unbound still running with cpu utilities 100%, seems polling the cqe(but can't trace its stack by catting /proc/xxxx/stack) By the way, my environment is latest liburing + linux6.4 ,with my ssd default/read/poll queues 15/0/1 , /dev/ng0n1 enabled of course. I have already use FIO to test uring passthru, and it works well.

Do you have any suggestions how I can debugging?

isilence commented 1 year ago

It would be helpful if you can help to narrow it down. There is a bunch of options/cases inside, what we can do is disable all of them and then enable them back one by one until it fails. Look at main.c, we're interested in test_io_uring_submit_enters() and test_invalid_passthru_submit() calls, and the loop calling test_io(). I'd start with the loop, replace 16 to 1 in the check, test it, set limit to 2, test and so on.