[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <b040c32a0704120050h5b4f03d3ve8813d96c18e082f@mail.gmail.com>
Date: Thu, 12 Apr 2007 00:50:39 -0700
From: "Ken Chen" <kenchen@...gle.com>
To: "Zach Brown" <zach.brown@...cle.com>
Cc: akpm@...ux-foundation.org, linux-aio@...ck.org,
linux-kernel@...r.kernel.org, "Benjamin LaHaise" <bcrl@...ck.org>
Subject: Re: [patch] convert aio event reap to use atomic-op instead of spin_lock
On 4/11/07, Zach Brown <zach.brown@...cle.com> wrote:
> First, I'll NAK this and all AIO patches until the patch description
> says that it's been run through the regression tests that we've started
> collecting in autotest. They're trivial to run, never fear:
>
> cd /usr/local
> svn checkout svn://test.kernel.org/autotest/trunk/client autotest
> cd autotest
> bin/autotest tests/aio_dio_bugs/control
I ran through the autotest (with bug fix in the test code). It passes
the regression tests. I made the following change since last rev:
* struct aio_ring stays unchanged. I added a cast to atomic_cmpxchg()
* aio_ring_event() has grown too big, I turned that into a function
* take out white space change from previous rev.
open issue that this patch does not try to fix:
* kmap address alias needs a flush_dcache_page
Zach, does this make you more comfortable? (or maybe less iffy is the
right word?)
From: Ken Chen <kenchen@...gle.com>
Resurrect an old patch that uses atomic operation to update ring buffer
index on AIO event queue. This work allows further application/libaio
optimization to run fast path io_getevents in user space.
I've also added one more change on top of old implementation that rounds
ring buffer size to power of 2 to allow fast head/tail calculation. With
the new scheme, there is no more modulo operation on them and we simply
increment either pointer index directly. This scheme also automatically
handles integer wrap nicely without any additional special treatment.
Patch was stress tested and in addition, tested on
autotest:aio_dio_bugs. The results were all pass: Output of
autotest:aio_dio_bugs:
ran for 200 seconds without error, passing
AIO read of last block in file succeeded.
aio-free-ring-with-bogus-nr-pages: Success!
aio-io-setup-with-nonwritable-context-pointer: Success!
GOOD aio_dio_bugs completed successfully
Signed-off-by: Ken Chen <kenchen@...gle.com>
View attachment "aio-use-atomic.patch" of type "text/x-patch" (5106 bytes)
Powered by blists - more mailing lists