qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 1/5] block: Emit BLOCK_IO_ERROR before vm_stop()


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 1/5] block: Emit BLOCK_IO_ERROR before vm_stop() call
Date: Tue, 09 Mar 2010 08:25:13 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091209 Fedora/3.0-4.fc12 Lightning/1.0pre Thunderbird/3.0

On 02/25/2010 09:06 AM, Luiz Capitulino wrote:
The next commit will move the STOP event into do_vm_stop(), to
have the expected event sequence we need to emit the I/O error
event before calling vm_stop().

The expected sequence is:

{ "event": "BLOCK_IO_ERROR" [...] }
{ "event": "STOP" }

Signed-off-by: Luiz Capitulino<address@hidden>

Applied all.  Thanks.

Regards,

Anthony Liguori
---
  hw/ide/core.c   |    2 +-
  hw/scsi-disk.c  |    2 +-
  hw/virtio-blk.c |    2 +-
  3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/ide/core.c b/hw/ide/core.c
index 2e0971d..67480bb 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -491,8 +491,8 @@ static int ide_handle_rw_error(IDEState *s, int error, int 
op)
              || 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);
+        vm_stop(0);
      } else {
          if (op&  BM_STATUS_DMA_RETRY) {
              dma_buf_commit(s, 0);
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index b2f61fe..7bb9c6c 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -190,8 +190,8 @@ static int scsi_handle_write_error(SCSIDiskReq *r, int 
error)
      if ((error == ENOSPC&&  action == BLOCK_ERR_STOP_ENOSPC)
              || action == BLOCK_ERR_STOP_ANY) {
          r->status |= SCSI_REQ_STATUS_RETRY;
-        vm_stop(0);
          bdrv_mon_event(s->bs, BDRV_ACTION_STOP, 0);
+        vm_stop(0);
      } else {
          scsi_command_complete(r, CHECK_CONDITION,
                  HARDWARE_ERROR);
diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
index b80402d..8939bb2 100644
--- a/hw/virtio-blk.c
+++ b/hw/virtio-blk.c
@@ -72,8 +72,8 @@ static int virtio_blk_handle_rw_error(VirtIOBlockReq *req, 
int error,
              || action == BLOCK_ERR_STOP_ANY) {
          req->next = s->rq;
          s->rq = req;
-        vm_stop(0);
          bdrv_mon_event(req->dev->bs, BDRV_ACTION_STOP, is_read);
+        vm_stop(0);
      } else {
          virtio_blk_req_complete(req, VIRTIO_BLK_S_IOERR);
          bdrv_mon_event(req->dev->bs, BDRV_ACTION_REPORT, is_read);





reply via email to

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