From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:41308) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qwwm3-0001wk-SD for qemu-devel@nongnu.org; Fri, 26 Aug 2011 09:48:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qwwm2-0004BZ-N5 for qemu-devel@nongnu.org; Fri, 26 Aug 2011 09:48:43 -0400 Received: from lo.gmane.org ([80.91.229.12]:50783) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qwwm2-0004BP-Gg for qemu-devel@nongnu.org; Fri, 26 Aug 2011 09:48:42 -0400 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Qwwm1-0007Xx-ER for qemu-devel@nongnu.org; Fri, 26 Aug 2011 15:48:41 +0200 Received: from 93-34-199-31.ip51.fastwebnet.it ([93.34.199.31]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 26 Aug 2011 15:48:41 +0200 Received: from pbonzini by 93-34-199-31.ip51.fastwebnet.it with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 26 Aug 2011 15:48:41 +0200 From: Paolo Bonzini Date: Fri, 26 Aug 2011 15:48:28 +0200 Message-ID: References: <1314356368-26522-1-git-send-email-berrange@redhat.com> <20110826112506.GM3944@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit In-Reply-To: <20110826112506.GM3944@redhat.com> Subject: Re: [Qemu-devel] [PATCH] Ensure migrate_cancel does not block doing I/O List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org On 08/26/2011 01:25 PM, Daniel P. Berrange wrote: > diff --git a/migration.c b/migration.c > index f5959b4..6448d0b 100644 > --- a/migration.c > +++ b/migration.c > @@ -319,6 +319,11 @@ ssize_t migrate_fd_put_buffer(void *opaque, const void *data, size_t size) > FdMigrationState *s = opaque; > ssize_t ret; > > + if (s->state == MIG_STATE_ERROR || > + s->state == MIG_STATE_CANCELLED) { > + return -EIO; > + } > + > do { > ret = s->write(s, data, size); > } while (ret == -1&& ((s->get_error(s)) == EINTR)); > > > I think I slightly prefer this second option, since it avoids the EBADF > scenario. Other opinions ? I agree. Paolo