I’ve noticed that Linux uses something called KAIO which seems to wrap EIO functions derived from the EIO library for instance in fdbrpc/Net2Filesystem.cpp KAIO is initialized here:
#ifdef __linux__ AsyncFileKAIO::init( Reference<IEventFD>(N2::ASIOReactor::getEventFD()), ioTimeout );
Well I guess the first thing, what does KAIO stand for? How is it different from using EIO directly? Looks like EIO can be initialized actually outside of the KAIO altogether. I’m interested in how it works because FreeBSD is not using KAIO currently but EIO has hooks into sendfile and possibly then sendfile(2) via some customizations. I have not been able to get the Async File tests (AsyncFileRead, AsyncFileWrite) to complete on Linux due to this “.fdb-lock” file not being present it turns out. Now I’m starting to think that is a setup issue- I hit this assertion in both Linux Docker and FreeBSD here: https://github.com/wolfspider/foundationdb/blob/4ffbb776ceab8fc01be30a3dad211b6585a573c9/fdbrpc/sim2.actor.cpp#L1703
If anyone has any info on this I’d really appreciate it. Being able to run these tests on any platform would allow me to make changes necessary so that Async file handling can be supported even if it has to be platform specific or not. Just a few days behind on merging latest also so if any recent changes here have happened let me know. Thanks!