qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [Bug 1709025] Re: Disk corrupted after snapshot deletion


From: junchi
Subject: [Qemu-devel] [Bug 1709025] Re: Disk corrupted after snapshot deletion
Date: Tue, 08 Aug 2017 05:59:21 -0000

Thanks for your reply
For some reason, I can't update my version. I believe the latest version have 
fixed the problem in commit 3432a1929ee18e08787ce35476abd74f2c93a17c or 
27a7649a48f9019fa5bd2998d8e342791397bdda.  But I'm not sure the first patch 
have fixed the problem, as the second patch is too much change for me.

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1709025

Title:
  Disk corrupted after snapshot deletion

Status in QEMU:
  Incomplete

Bug description:
    I found the vm disk corruption after snapshot deletion sometimes(the 
probability is very low, I'm afraid i can't reproduce it). And I found there is 
a patch for it as follow, but I'm not sure whether the patch repaired the bug. 
    Drain disk before snapshot deletion can't guarantee anything, there is 
still pending IO in snapshot-deletion process. Anyone can help?

  author        Zhang Haoyu <address@hidden>    2014-10-21 16:38:01 +0800
  committer     Stefan Hajnoczi <address@hidden>        2014-11-03 09:48:42 
+0000
  commit        3432a1929ee18e08787ce35476abd74f2c93a17c (patch)
  tree  13a81c0a46707d91622f1593ccf7b926935371fd /block/snapshot.c
  parent        573742a5431a99ceaba6968ae269cee247727cce (diff)
  snapshot: add bdrv_drain_all() to bdrv_snapshot_delete() to avoid concurrency 
problem
  If there are still pending i/o while deleting snapshot,
  because deleting snapshot is done in non-coroutine context, and
  the pending i/o read/write (bdrv_co_do_rw) is done in coroutine context,
  so it's possible to cause concurrency problem between above two operations.
  Add bdrv_drain_all() to bdrv_snapshot_delete() to avoid this problem.

  Signed-off-by: Zhang Haoyu <address@hidden>
  Reviewed-by: Paolo Bonzini <address@hidden>
  Message-id: address@hidden
  Signed-off-by: Stefan Hajnoczi <address@hidden>
  Diffstat (limited to 'block/snapshot.c')
  -rw-r--r--    block/snapshot.c        4       
  1 files changed, 4 insertions, 0 deletions
  diff --git a/block/snapshot.c b/block/snapshot.c
  index 85c52ff..698e1a1 100644
  --- a/block/snapshot.c
  +++ b/block/snapshot.c
  @@ -236,6 +236,10 @@ int bdrv_snapshot_delete(BlockDriverState *bs,
           error_setg(errp, "snapshot_id and name are both NULL");
           return -EINVAL;
       }
  +
  +    /* drain all pending i/o before deleting snapshot */
  +    bdrv_drain_all();
  +
       if (drv->bdrv_snapshot_delete) {
           return drv->bdrv_snapshot_delete(bs, snapshot_id, name, errp);
       }

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1709025/+subscriptions



reply via email to

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