<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    On 05/03/2012 12:12 AM, Christoph Hellwig wrote:
    <blockquote cite="mid:20120502161203.GA19111@infradead.org"
      type="cite">
      <pre wrap="">On Wed, May 02, 2012 at 12:03:18PM +0800, Li Wenpeng wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">From: levin li <a class="moz-txt-link-rfc2396E" href="mailto:xingke.lwp@taobao.com"><xingke.lwp@taobao.com></a>

Take a view of the following snapshot chain:

base vdi --> snapshot vdi --> cloned vdi

when cloned vdi has its own data objects created by copy-on-write,
we firstly delete the cloned vdi, the delete the base vdi, at last
we delete snapshot vdi.

when deleting the snapshot vdi, it try to traverse the snapshot chain to
cleanup all the data objects, but the copy-on-write objects has been
deleted by the first deletion work, so it may get failed and set the
dw->delete_error to be true, it doesn't matter for the future deletion,
we just need to guarantee the objects of the snapshot vdi deleteing success,
but before this, we need to clear the previous error flag at dw->delete_error,
orelse it may cause failure of deleting the snapshot vdi.
</pre>
      </blockquote>
      <pre wrap="">
Can you post a list of command lines to reproduce this issue?  That we
</pre>
      <tt>we can add it to the upcoming regression test suite.</tt><br>
    </blockquote>
    <tt>Here's my test script:<br>
      <br>
      for i in 0 1 2; do<br>
          echo "initializing sheep on port 700$i"<br>
          sheep/sheep -d /home/levin/disk/store/$i -p 700$i -z $i;<br>
          sleep 1;<br>
      done<br>
      <br>
      collie/collie cluster format -c 3 -b "farm"<br>
      <br>
      # linux-0.2.img is small linux image file.<br>
      qemu-img convert ~/linux-0.2.img sheepdog:linux<br>
      qemu-img snapshot -c snap sheepdog:linux<br>
      qemu-img create -b sheepdog:linux:1 sheepdog:test<br>
      <br>
      sleep 1<br>
      qemu-system-i386 -m 64 -hda sheepdog:test<br>
      <br>
      # close qemu after linux setup successfully.<br>
      <br>
      sleep 1<br>
      collie/collie vdi delete test<br>
      <br>
      sleep 1<br>
      collie/collie vdi delete linux<br>
      <br>
      sleep 1<br>
      collie/collie vdi delete -s 1 linux<br>
      <br>
      sleep 3<br>
      collie/collie vdi list</tt><br>
    <tt><br>
      Note that without this patch (<a
        href="http://lists.wpkg.org/pipermail/sheepdog/2012-May/003284.html">http://lists.wpkg.org/pipermail/sheepdog/2012-May/003284.html)</a><br>
      sheep will stop this script from working correctly.<br>
      <br>
      thanks,<br>
      levin<br>
    </tt>
  </body>
</html>