<br><br>
<div class="gmail_quote">On Thu, Apr 26, 2012 at 1:16 AM, MORITA Kazutaka <span dir="ltr"><<a href="mailto:morita.kazutaka@lab.ntt.co.jp" target="_blank">morita.kazutaka@lab.ntt.co.jp</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT:#ccc 1px solid;MARGIN:0px 0px 0px 0.8ex;PADDING-LEFT:1ex" class="gmail_quote">At Tue, 24 Apr 2012 14:24:04 +0800,<br>
<div>
<div class="h5">HaiTing Yao wrote:<br>><br>> I used collie tool to test and get this result.<br>><br>> Before my modification, the relation as belowe<br>><br>> [wujue.yht@v134092.sqa.cm4 ~]$ collie vdi list<br>
>   Name        Id    Size    Used  Shared    Creation time   VDI id  Tag<br>> s v1           1  1.0 GB   20 MB  0.0 MB 2012-04-24 11:23   709128<br>> s v1           2  1.0 GB  0.0 MB   20 MB 2012-04-24 11:24   709129<br>
>   v1           3  1.0 GB  0.0 MB   20 MB 2012-04-24 11:24   70912a<br>><br>> vdi ID 709128<br>> its parent ID 0<br>> its 1st child id 709129<br>><br>> vdi ID 709129<br>> its parent ID 709128<br>> its 1st child id 70912a<br>
><br>> vdi ID 70912a<br>> its parent ID 709129<br>> no child<br>><br>> After my modification, the relation as belowe. All of snapshots belong to<br>> base VDI. Would you mind give the details you expected, thanks.<br>
><br>> [wujue.yht@v134092.sqa.cm4 ~]$ collie vdi list<br>>   Name        Id    Size    Used  Shared    Creation time   VDI id  Tag<br>>  v1           1  1.0 GB   20 MB  0.0 MB 2012-04-24 11:23   709128<br>> s v1           2  1.0 GB  0.0 MB   20 MB 2012-04-24 11:24   709129<br>
> s v1           3  1.0 GB  0.0 MB   20 MB 2012-04-24 11:24   70912a<br>><br>> vdi ID 709128<br>> its parent ID 0<br>> its 1st child id 709129<br>> its 2nd child id 70912a<br><br></div></div>709128 is the current branch, so<br>
 - it shouldn't have children.<br> - its parent should be 70912a since it is the previous current vdi.<br>
<div class="im"><br>><br>> vdi ID 709129<br>> its parent ID 709128<br>> no child<br><br></div>709129 is the first snapshot of this vdi, so<br> - it shouldn't have a parent<br> - its children should be 70912a since it is the next snapshot<br>

<div class="im"><br>><br>> vdi ID 70912a<br>> its parent ID 709128<br>> no child<br><br></div> - its parent should be 709129<br> - its child should be 709128<br><br><br>What we want to do is to show snapshots relationships as VMware does.<br>
<br> <a href="http://www.vmware.com/support/ws55/doc/ws_preserve_sshot_manager.html" target="_blank">http://www.vmware.com/support/ws55/doc/ws_preserve_sshot_manager.html</a><br>
<div>
<div class="h5"><br><br>> > > BTW, since we change the inode structure, how about increse the<br>> > > SD_PROTO_VER?<br>> ><br>> > If we would merge this change, we must increment SD_PROTO_VER.  But<br>
> > I'm still not sure this change is really necessary.  As I said before,<br>> > I'd like to avoid changing the sheepdog_inode structure if possible.<br>> > If we don't show VDI id in the output of 'collie vdi list', there is<br>
> > no confusing issue you want to fix, no?<br>> ><br>> > Thanks,<br>> ><br>> > Kazutaka<br>> ><br>><br>> Besides confusing, there is some other conditions we need to consider.<br>
><br>> 1, find_first_vdi() looks up from the right side of the hash point. The new<br>> created VDI bacomes the base VDI, so we must begin looking up from right<br>> side. We find the next zero from the hash point at bitmap, and use the next<br>
> zero as the right side edge. Then we can not clear bitmap anytime, because<br>> we need the next zero as the right side point. The 1 at bitmap does not<br>> mean the VDI ID is used, we must check the inode object and find its name<br>
> is null or not. Without the patch, we must do like this and did like<br>> this. With the patch, base VDI is never changed so we can look up from the<br>> left side.<br>><br>> 2, Before the patch, every VDI have one child at most in inode. It is<br>
> hard to control children maximum, and can not delete any inode object of<br>> snapshots. If we miss one, the tree list is broken because parent/child<br>> relation is one by one.<br>><br>> I do not thik this patch is good enough for these problems, and perhaps we<br>
> have better soultions.<br><br></div></div>I see the problem, but I'd like to see another approach instead of<br>changing the current vdi relationships.<br></blockquote>
<div> </div>
<div>Today I read some papers about VMware snapshot. </div>
<div> </div>
<div>Yes I think it is right to keep the snapshot chain like VMware. I should not change the VDI relationships.</div>
<div> </div>
<div>How about this solution?</div>
<div> </div>
<div>As I saied, the parent VDI ID of base VDI is zero now. When create one snapshot, assign the VDI ID of newest snapshot to  parent VDI ID of base VDI. </div>
<div> </div>
<div>With this, we have two choice.</div>
<div> </div>
<div>1, never change base VDI to new created one</div>
<div> </div>
<div>For I/O, we use the parent VDI ID to replace the VDI ID. There is only a little change.</div>
<div> </div>
<div>2, change base VDI to new created one</div>
<div> </div>
<div>Looking up the VDI from the left, we find the first and use the parent VDI ID to find the last.</div>
<div> </div>
<div>Thanks</div>
<div>Haiti  </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<blockquote style="BORDER-LEFT:#ccc 1px solid;MARGIN:0px 0px 0px 0.8ex;PADDING-LEFT:1ex" class="gmail_quote"><br>Thanks,<br><br>Kazutaka<br></blockquote></div><br>