Messages in this thread Patch in this message | | | From | Sergey Temerkhanov <> | Subject | [PATCH][RFC] AIO: always reinitialize iocb->ki_run_list at the end of aio_run_iocb() | Date | Wed, 28 Apr 2010 02:51:43 +0400 |
| |
This patch makes aio_run_iocb() to always reinitialize iocb->ki_run_list (not only when iocb->ki_retry() function returns -EIOCBRETRY) so that subsequent call of kick_iocb() will succeed.
Regards, Sergey Temerkhanov, Cifronic ZAO. diff -r 97344a0f62c9 fs/aio.c --- a/fs/aio.c Tue Apr 27 21:18:14 2010 +0400 +++ b/fs/aio.c Tue Apr 27 21:30:23 2010 +0400 @@ -748,6 +748,9 @@ out: spin_lock_irq(&ctx->ctx_lock); + /* will make __queue_kicked_iocb succeed from here on */ + INIT_LIST_HEAD(&iocb->ki_run_list); + if (-EIOCBRETRY == ret) { /* * OK, now that we are done with this iteration @@ -756,8 +759,6 @@ * "kick" can start the next iteration */ - /* will make __queue_kicked_iocb succeed from here on */ - INIT_LIST_HEAD(&iocb->ki_run_list); /* we must queue the next iteration ourselves, if it * has already been kicked */ if (kiocbIsKicked(iocb)) { | |