qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Liu Yuan <tailai.ly@taobao.com>,
	MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Subject: [Qemu-devel] [PATCH 17/18] sheepdog: don't update inode when create_and_write fails
Date: Wed,  2 Jan 2013 16:15:55 +0100	[thread overview]
Message-ID: <1357139756-11951-18-git-send-email-stefanha@redhat.com> (raw)
In-Reply-To: <1357139756-11951-1-git-send-email-stefanha@redhat.com>

From: Liu Yuan <tailai.ly@taobao.com>

For the error case such as SD_RES_NO_SPACE, we shouldn't update the inode bitmap
to avoid the scenario that the object is allocated but wasn't created at the
server side. This will result in VM's IO error on the failed object.

Cc: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Cc: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
Reviewed-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 block/sheepdog.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/block/sheepdog.c b/block/sheepdog.c
index 13dc023..b9186fb 100644
--- a/block/sheepdog.c
+++ b/block/sheepdog.c
@@ -714,10 +714,11 @@ static void coroutine_fn aio_read_response(void *opaque)
              * and max_dirty_data_idx are changed to include updated
              * index between them.
              */
-            s->inode.data_vdi_id[idx] = s->inode.vdi_id;
-            s->max_dirty_data_idx = MAX(idx, s->max_dirty_data_idx);
-            s->min_dirty_data_idx = MIN(idx, s->min_dirty_data_idx);
-
+            if (rsp.result == SD_RES_SUCCESS) {
+                s->inode.data_vdi_id[idx] = s->inode.vdi_id;
+                s->max_dirty_data_idx = MAX(idx, s->max_dirty_data_idx);
+                s->min_dirty_data_idx = MIN(idx, s->min_dirty_data_idx);
+            }
             /*
              * Some requests may be blocked because simultaneous
              * create requests are not allowed, so we search the
-- 
1.8.0.2

  parent reply	other threads:[~2013-01-02 15:17 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-02 15:15 [Qemu-devel] [PULL v2 00/18] Block patches Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 01/18] raw-posix: add raw_get_aio_fd() for virtio-blk-data-plane Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 02/18] configure: add CONFIG_VIRTIO_BLK_DATA_PLANE Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 03/18] dataplane: add host memory mapping code Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 04/18] dataplane: add virtqueue vring code Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 05/18] dataplane: add event loop Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 06/18] dataplane: add Linux AIO request queue Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 07/18] iov: add iov_discard_front/back() to remove data Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 08/18] test-iov: add iov_discard_front/back() testcases Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 09/18] iov: add qemu_iovec_concat_iov() Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 10/18] virtio-blk: restore VirtIOBlkConf->config_wce flag Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 11/18] dataplane: add virtio-blk data plane code Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 12/18] virtio-blk: add x-data-plane=on|off performance feature Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 13/18] virtio-blk: Return UNSUPP for unknown request types Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 14/18] cutils: change strtosz_suffix_unit function Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 15/18] qemu-img: report size overflow error message Stefan Hajnoczi
2013-01-02 15:15 ` [Qemu-devel] [PATCH 16/18] block/raw-win32: Fix compiler warnings (wrong format specifiers) Stefan Hajnoczi
2013-01-02 15:15 ` Stefan Hajnoczi [this message]
2013-01-02 15:15 ` [Qemu-devel] [PATCH 18/18] sheepdog: pass oid directly to send_pending_req() Stefan Hajnoczi
2013-01-02 19:35 ` [Qemu-devel] [PULL v2 00/18] Block patches Anthony Liguori
  -- strict thread matches above, loose matches on Subject: below --
2012-12-19 15:38 [Qemu-devel] [PULL " Stefan Hajnoczi
2012-12-19 15:38 ` [Qemu-devel] [PATCH 17/18] sheepdog: don't update inode when create_and_write fails Stefan Hajnoczi

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=1357139756-11951-18-git-send-email-stefanha@redhat.com \
    --to=stefanha@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=kwolf@redhat.com \
    --cc=morita.kazutaka@lab.ntt.co.jp \
    --cc=qemu-devel@nongnu.org \
    --cc=tailai.ly@taobao.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).