Native Linux AIO in Samba4

Jeremy Allison jra at samba.org
Fri Jan 12 17:17:47 GMT 2007


On Fri, Jan 12, 2007 at 05:11:54PM +1100, Andrew Tridgell wrote:
> I've been working a bit on supporting the native Linux AIO API in
> Samba4. The code is now committed, and is working well.

Cool stuff !!!!

> The native Linux API is somewhat different to the posix AIO API. The
> native API is based on libaio.h, and uses io_submit() and
> io_getevents(). The posix API uses calls like aio_read().

Yeah, that's one of the reasons I was ignoring it. The
POSIX api is bad (as usual :-) but is at least a standard.
I'm worried about too many Linux-specific hacks.

Once Solaris goes GPLv3 the whole world will probably
want to move from GNU/Linux to GNU/Solaris so we need
to make sure we're portable (*).

> The main advantages of the native Linux API are that:
> 
>  - on Linux it doesn't spawn off threads to do the work. This makes it
>    much more efficient

That's a problem in the Linux kernel - I'm hoping they'll
adapt glibc to hook the underlying interface into the POSIX api.

> Regarding the epoll/aio kernel code that this relies on, there is some
> discussion of using a new events system in the kernel called kevents
> instead. The kevents API is certainly much cleaner (the aio/epoll
> integration is a pretty nasty hack in comparison!), but I don't know
> which will end up being the standard. Maybe we'll end up with both,
> in which case we'll support both in Samba4.

That's another reason I was waiting - I'm hoping one will win out
in the end and become "standard" on Linux.

Jeremy.

(*) Yes, this is a joke :-). But maybe not so funny in the long run :-).


More information about the samba-technical mailing list