On Tue, Oct 09, 2012 at 03:32:10PM -0700, Zach Brown wrote: > > If it is measurable I'll take another stab at using memory from > > __get_free_pages() for the ringbuffer. That really would be the ideal > > solution. > > No, then you'll run into high order allocation failures with rings that > don't fit in a single page. Not if we decouple the ringbuffer size from max_requests. This would be useful to do anyways because right now, allocating a kiocb has to take a global refcount and check head and tail in the ringbuffer just so it can avoid overflowing the ringbuffer. If we change aio_complete() so that if the ringbuffer is full then the kiocb just goes on a linked list - we can size the ringbuffer so this doesn't happen normally and avoid the global synchronization in the fast path. > > The other reason I wanted to do this was for the aio attributes stuff - > > for return values, I think the only sane way is for the return values to > > go in the ringbuffer, which means records are no longer fixed size so > > dealing with pages is even more of a pain. > > Then let's see that, please. I was starting on that, but then I got sidetracked with refactoring... :P > And can we please stop calling them attributes? They're inputs and > outputs that change behaviour -- they're interfaces. Attributes isn't a good name but neither is interfaces, because they don't exist on their own; they're always attached to some other interface. I dunno. > And no, just for the record, I don't think generic packed variable size > structs are worth the trouble. > > If we're going to do a generic interface extension mechanism then we > should put it in its own well thought out system calls, not staple it on > to the side of aio because it's there. It's a really crummy base to > work from. Not arguing with you about aio, but most of the use cases I have for it want aio. So unless we're going to deprecate the existing aio interfaces and make something better (I wouldn't complain about that!) I do need to make it work with aio. Not that I'm opposed to new syscalls passing attributes to sync versions of read/write/etc, I just haven't started that yet or really thought about it. -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel