All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@qumranet.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] [ide] Check that asynchronous (DMA) submission succeeds
Date: Sun, 31 Aug 2008 09:42:31 +0300	[thread overview]
Message-ID: <20080831064231.GB6192@minantech.com> (raw)
In-Reply-To: <18614.55228.190438.575778@mariner.uk.xensource.com>

On Thu, Aug 28, 2008 at 05:52:12PM +0100, Ian Jackson wrote:
> Check that asynchronous (DMA) submission succeeds
> 
> If it does not, abort the command immediately rather than dropping
> it on the floor.
> 
> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
> ---
>  hw/ide.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/ide.c b/hw/ide.c
> index 1e60591..9b95c35 100644
> --- a/hw/ide.c
> +++ b/hw/ide.c
> @@ -737,6 +737,13 @@ static inline void ide_abort_command(IDEState *s)
>      s->status = READY_STAT | ERR_STAT;
>      s->error = ABRT_ERR;
>  }
> +static inline void ide_dma_submit_check(IDEState *s,
> +          BlockDriverCompletionFunc *dma_cb, BMDMAState *bm)
> +{
> +    if (bm->aiocb)
> +	return;
> +    dma_cb(bm, -1);
> +}
>  
Currently neither ide_read_dma_cb() nor ide_write_dma_cb() checks ret
value. Was the error handling in a different patch that I've missed?


>  static inline void ide_set_irq(IDEState *s)
>  {
> @@ -933,6 +940,7 @@ static void ide_read_dma_cb(void *opaque, int ret)
>  #endif
>      bm->aiocb = bdrv_aio_read(s->bs, sector_num, s->io_buffer, n,
>                                ide_read_dma_cb, bm);
> +    ide_dma_submit_check(s, ide_read_dma_cb, bm);
>  }
>  
>  static void ide_sector_read_dma(IDEState *s)
> @@ -1035,6 +1043,7 @@ static void ide_write_dma_cb(void *opaque, int ret)
>  #endif
>      bm->aiocb = bdrv_aio_write(s->bs, sector_num, s->io_buffer, n,
>                                 ide_write_dma_cb, bm);
> +    ide_dma_submit_check(s, ide_write_dma_cb, bm);
>  }
>  
>  static void ide_sector_write_dma(IDEState *s)
> -- 
> 1.4.4.4
> 
> 

--
			Gleb.

  parent reply	other threads:[~2008-08-31  6:42 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-28 16:52 [Qemu-devel] [PATCH] [ide] Check that asynchronous (DMA) submission succeeds Ian Jackson
2008-08-28 20:23 ` Anthony Liguori
2008-08-29  9:41   ` Ian Jackson
2008-09-07  2:48     ` Anthony Liguori
2008-09-07  4:16       ` Jamie Lokier
2008-08-31  6:42 ` Gleb Natapov [this message]
2008-09-01 11:31   ` Ian Jackson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080831064231.GB6192@minantech.com \
    --to=gleb@qumranet.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.