From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ncadu-0005dL-6V for qemu-devel@nongnu.org; Wed, 03 Feb 2010 03:31:23 -0500 Received: from [199.232.76.173] (port=56516 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ncadq-0005cM-WA for qemu-devel@nongnu.org; Wed, 03 Feb 2010 03:31:19 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Ncado-0003WO-U3 for qemu-devel@nongnu.org; Wed, 03 Feb 2010 03:31:18 -0500 Received: from mx20.gnu.org ([199.232.41.8]:46067) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Ncado-0003WD-EJ for qemu-devel@nongnu.org; Wed, 03 Feb 2010 03:31:16 -0500 Received: from verein.lst.de ([213.95.11.210]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ncadm-0000op-S3 for qemu-devel@nongnu.org; Wed, 03 Feb 2010 03:31:15 -0500 Date: Wed, 3 Feb 2010 09:31:07 +0100 From: Christoph Hellwig Subject: Re: [Qemu-devel] [PATCH 3/5] ide: Generate BLOCK_IO_ERROR QMP event Message-ID: <20100203083107.GA28969@lst.de> References: <1265145013-23231-1-git-send-email-lcapitulino@redhat.com> <1265145013-23231-4-git-send-email-lcapitulino@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1265145013-23231-4-git-send-email-lcapitulino@redhat.com> List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Luiz Capitulino Cc: kwolf@redhat.com, qemu-devel@nongnu.org On Tue, Feb 02, 2010 at 07:10:11PM -0200, Luiz Capitulino wrote: > Just call bdrv_mon_event() in the right place. > > Signed-off-by: Luiz Capitulino > --- > hw/ide/core.c | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/hw/ide/core.c b/hw/ide/core.c > index b6643e8..603e537 100644 > --- a/hw/ide/core.c > +++ b/hw/ide/core.c > @@ -480,14 +480,17 @@ static int ide_handle_rw_error(IDEState *s, int error, int op) > int is_read = (op & BM_STATUS_RETRY_READ); > BlockInterfaceErrorAction action = drive_get_on_error(s->bs, is_read); > > - if (action == BLOCK_ERR_IGNORE) > + if (action == BLOCK_ERR_IGNORE) { > + bdrv_mon_event(s->bs, BDRV_ACTION_IGNORE, is_read); > return 0; > + } > > if ((error == ENOSPC && action == BLOCK_ERR_STOP_ENOSPC) > || action == BLOCK_ERR_STOP_ANY) { > s->bus->bmdma->unit = s->unit; > s->bus->bmdma->status |= op; > vm_stop(0); > + bdrv_mon_event(s->bs, BDRV_ACTION_STOP, is_read); Why isn't the event directly sent from drive_get_on_error? Having to opencode this in every driver is a sure way to make sure it's going to be broken somewhere.