io_uring
tavianator opened this issue · 2 comments
Once https://lkml.org/lkml/2021/1/23/76 or something like it lands, we can use it to do async openat()/readdir(). This is likely to be a better approach than #46.
It does mean we'll need to do our own readdir() wrapper over getdents(). Looks like I'll be doing #9 (comment) after all.
This will be in LInux 5.17 it looks like: https://lore.kernel.org/io-uring/164011422387.623301.5246002969893185131.b4-ty@kernel.dk/T/
So io_uring still does not have getdents()
support: https://lore.kernel.org/io-uring/YdCyoQNPNcaM9rqD@zeniv-ca.linux.org.uk/
But doing something similar in userspace seems to work well: https://github.com/tavianator/bfs/tree/ioq. Very much a work-in-progress since open FD accounting is still broken and some of bfs is not thread-safe (e.g. lazy statics and use of fork()
). Oh and it breaks -s
.