Re: [PATCH][RFC] AIO: always reinitialize iocb->ki_run_list at theend of aio_run_iocb()

From: Andrew Morton
Date: Wed Apr 28 2010 - 14:32:29 EST


On Wed, 28 Apr 2010 02:51:43 +0400
Sergey Temerkhanov <temerkhanov@xxxxxxxxx> wrote:

> 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.
>
>
> [reinit-ki_run_list.patch text/x-patch (657B)]
> 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)) {

I assume that this fixes some runtime problem which you observed?

Can you please describe that problem? This code is pretty old - what
was your application doing that nobody else's application has thus far
done?

Also, please send your Signed-off-by: for this patch, as per
Documentation/Submittingpatches, thanks.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/