qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] gluster: Abort on AIO completion failure


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] gluster: Abort on AIO completion failure
Date: Tue, 27 Aug 2013 08:58:05 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8

Il 27/08/2013 07:53, Bharata B Rao ha scritto:
> Currently if gluster AIO callback thread fails to notify the QEMU thread about
> AIO completion, we try graceful recovery by marking the disk drive as
> inaccessible. This error recovery code is race-prone as found by Asias and
> Stefan. However as found out by Paolo, this kind of error is impossible and
> hence simplify the code that handles this error recovery.
> 
> Signed-off-by: Bharata B Rao <address@hidden>
> ---
>  block/gluster.c | 15 ++-------------
>  1 file changed, 2 insertions(+), 13 deletions(-)
> 
> diff --git a/block/gluster.c b/block/gluster.c
> index 46f36f8..942154a 100644
> --- a/block/gluster.c
> +++ b/block/gluster.c
> @@ -427,20 +427,9 @@ static void gluster_finish_aiocb(struct glfs_fd *fd, 
> ssize_t ret, void *arg)
>          /*
>           * Gluster AIO callback thread failed to notify the waiting
>           * QEMU thread about IO completion.
> -         *
> -         * Complete this IO request and make the disk inaccessible for
> -         * subsequent reads and writes.
>           */
> -        error_report("Gluster failed to notify QEMU about IO completion");
> -
> -        qemu_mutex_lock_iothread(); /* We are in gluster thread context */
> -        acb->common.cb(acb->common.opaque, -EIO);
> -        qemu_aio_release(acb);
> -        close(s->fds[GLUSTER_FD_READ]);
> -        close(s->fds[GLUSTER_FD_WRITE]);
> -        qemu_aio_set_fd_handler(s->fds[GLUSTER_FD_READ], NULL, NULL, NULL);
> -        bs->drv = NULL; /* Make the disk inaccessible */
> -        qemu_mutex_unlock_iothread();
> +        error_report("Gluster AIO completion failed");

Still, considering everyone can be wrong, adding the errno here is
probably not a bad idea. :)

Paolo

> +        abort();
>      }
>  }
>  
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]