From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54508) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VEDEj-0004bi-9X for qemu-devel@nongnu.org; Tue, 27 Aug 2013 02:58:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VEDEa-000579-0k for qemu-devel@nongnu.org; Tue, 27 Aug 2013 02:58:45 -0400 Received: from mail-wi0-x229.google.com ([2a00:1450:400c:c05::229]:62863) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VEDEZ-00056z-RE for qemu-devel@nongnu.org; Tue, 27 Aug 2013 02:58:35 -0400 Received: by mail-wi0-f169.google.com with SMTP id l12so4960716wiv.4 for ; Mon, 26 Aug 2013 23:58:10 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <521C4DFD.30805@redhat.com> Date: Tue, 27 Aug 2013 08:58:05 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1377582781-640-1-git-send-email-bharata@linux.vnet.ibm.com> In-Reply-To: <1377582781-640-1-git-send-email-bharata@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] gluster: Abort on AIO completion failure List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Bharata B Rao Cc: kwolf@redhat.com, asias@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com 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 > --- > 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(); > } > } > >