diff options
author | Ken Chen <kenneth.w.chen@intel.com> | 2005-05-01 08:59:15 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-01 08:59:15 -0700 |
commit | 4bf69b2a06090c01c27f25ea5cd1440f7bf9256f (patch) | |
tree | 35bed1e865ee9f8b086954d866cee9c1c2b92b0f /fs/aio.c | |
parent | 212079cf4ee99e492a57b817e796825d423a30bb (diff) | |
download | linux-4bf69b2a06090c01c27f25ea5cd1440f7bf9256f.tar.gz linux-4bf69b2a06090c01c27f25ea5cd1440f7bf9256f.tar.bz2 linux-4bf69b2a06090c01c27f25ea5cd1440f7bf9256f.zip |
[PATCH] aio: ring wrapping simplification
Since the tail pointer in aio_ring structure never wrap ring size more than
once, so a simple compare is sufficient to wrap the index around. This avoid
a more expensive mod operation.
Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
Cc: Benjamin LaHaise <bcrl@kvack.org>
Cc: Suparna Bhattacharya <suparna@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/aio.c')
-rw-r--r-- | fs/aio.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -978,7 +978,8 @@ int fastcall aio_complete(struct kiocb *iocb, long res, long res2) tail = info->tail; event = aio_ring_event(info, tail, KM_IRQ0); - tail = (tail + 1) % info->nr; + if (++tail >= info->nr) + tail = 0; event->obj = (u64)(unsigned long)iocb->ki_obj.user; event->data = iocb->ki_user_data; |