[Sheepdog] [PATCH v3] sheep: change snapshot/clone flow

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Wed Apr 25 19:16:17 CEST 2012


At Tue, 24 Apr 2012 14:24:04 +0800,
HaiTing Yao wrote:
> 
> I used collie tool to test and get this result.
> 
> Before my modification, the relation as belowe
> 
> [wujue.yht at v134092.sqa.cm4 ~]$ collie vdi list
>   Name        Id    Size    Used  Shared    Creation time   VDI id  Tag
> s v1           1  1.0 GB   20 MB  0.0 MB 2012-04-24 11:23   709128
> s v1           2  1.0 GB  0.0 MB   20 MB 2012-04-24 11:24   709129
>   v1           3  1.0 GB  0.0 MB   20 MB 2012-04-24 11:24   70912a
> 
> vdi ID 709128
> its parent ID 0
> its 1st child id 709129
> 
> vdi ID 709129
> its parent ID 709128
> its 1st child id 70912a
> 
> vdi ID 70912a
> its parent ID 709129
> no child
> 
> After my modification, the relation as belowe. All of snapshots belong to
> base VDI. Would you mind give the details you expected, thanks.
> 
> [wujue.yht at v134092.sqa.cm4 ~]$ collie vdi list
>   Name        Id    Size    Used  Shared    Creation time   VDI id  Tag
>  v1           1  1.0 GB   20 MB  0.0 MB 2012-04-24 11:23   709128
> s v1           2  1.0 GB  0.0 MB   20 MB 2012-04-24 11:24   709129
> s v1           3  1.0 GB  0.0 MB   20 MB 2012-04-24 11:24   70912a
> 
> vdi ID 709128
> its parent ID 0
> its 1st child id 709129
> its 2nd child id 70912a

709128 is the current branch, so
 - it shouldn't have children.
 - its parent should be 70912a since it is the previous current vdi.

> 
> vdi ID 709129
> its parent ID 709128
> no child

709129 is the first snapshot of this vdi, so
 - it shouldn't have a parent
 - its children should be 70912a since it is the next snapshot

> 
> vdi ID 70912a
> its parent ID 709128
> no child

 - its parent should be 709129
 - its child should be 709128


What we want to do is to show snapshots relationships as VMware does.

 http://www.vmware.com/support/ws55/doc/ws_preserve_sshot_manager.html


> > > BTW, since we change the inode structure, how about increse the
> > > SD_PROTO_VER?
> >
> > If we would merge this change, we must increment SD_PROTO_VER.  But
> > I'm still not sure this change is really necessary.  As I said before,
> > I'd like to avoid changing the sheepdog_inode structure if possible.
> > If we don't show VDI id in the output of 'collie vdi list', there is
> > no confusing issue you want to fix, no?
> >
> > Thanks,
> >
> > Kazutaka
> >
> 
> Besides confusing, there is some other conditions we need to consider.
> 
> 1, find_first_vdi() looks up from the right side of the hash point. The new
> created VDI bacomes the base VDI, so we must begin looking up from right
> side. We find the next zero from the hash point at bitmap, and use the next
> zero as the right side edge. Then we can not clear bitmap anytime, because
> we need the next zero as the right side point. The 1 at bitmap does not
> mean the VDI ID is used, we must check the inode object and find its name
> is null or not. Without the patch, we must do like this and did like
> this. With the patch, base VDI is never changed so we can look up from the
> left side.
> 
> 2, Before the patch, every VDI have one child at most in inode. It is
> hard to control children maximum, and can not delete any inode object of
> snapshots. If we miss one, the tree list is broken because parent/child
> relation is one by one.
> 
> I do not thik this patch is good enough for these problems, and perhaps we
> have better soultions.

I see the problem, but I'd like to see another approach instead of
changing the current vdi relationships.

Thanks,

Kazutaka



More information about the sheepdog mailing list