At Fri, 20 Apr 2012 14:40:26 +0800, yaohaiting.wujue at gmail.com wrote: > > From: HaiTing Yao <wujue.yht at taobao.com> > > When create snapshot for source VDI, the new created VDI used as source > VDI, and the old source VDI used as snapshot. This flow make users > confused about VDI and snapshot relation. The snapshot metadata maybe is > stored on multi-VDI, so need read multi VDIs inode to get snapshot list. > > When create snapshot, we does not need change new created VDI to source > VDI. The source VDI just need use snapshot VDI ID as its object data ID. > > Show one example. > > Before modification: > > Name Id Size Used Shared Creation time VDI id Tag > s v1 1 64 MB 20 MB 0.0 MB 2012-03-26 16:55 709128 > s v1 2 64 MB 0.0 MB 20 MB 2012-03-26 16:56 709129 sn3 > v1 3 64 MB 0.0 MB 20 MB 2012-03-26 16:56 70912a > > After modification: > > Name Id Size Used Shared Creation time VDI id Tag > v1 0 64 MB 20 MB 0.0 MB 2012-03-27 11:06 709128 > s v1 1 64 MB 0.0 MB 20 MB 2012-03-27 11:06 709129 > s v1 2 64 MB 0.0 MB 20 MB 2012-03-27 11:07 70912a sn3 > > Signed-off-by: HaiTing Yao <wujue.yht at taobao.com> > --- > collie/common.c | 2 +- > collie/vdi.c | 33 ++++++++++++++++++++++----------- > include/sheepdog_proto.h | 6 ++++-- > sheep/vdi.c | 18 ++++++++++-------- > 4 files changed, 37 insertions(+), 22 deletions(-) Your patch breaks the relationship between VDI snapshots. For example: == $ collie cluster format -c 1 $ qemu-img create sheepdog:test 4G $ qemu-img snapshot -c tag1 sheepdog:test $ qemu-img snapshot -c tag2 sheepdog:test $ qemu-img snapshot -c tag3 sheepdog:test $ qemu-img create sheepdog:test2 4G $ qemu-img snapshot -c tag1 sheepdog:test2 $ qemu-img snapshot -c tag2 sheepdog:test2 $ qemu-io -c "write 0 512" sheepdog:test2:1 $ qemu-img snapshot -c tag3 sheepdog:test2 $ collie vdi tree == and the expected output is: == test---[2012-04-21 05:51]---[2012-04-21 05:51]---[2012-04-21 05:51]---(you are here) test2---[2012-04-21 05:51]-+-[2012-04-21 05:51]---[2012-04-21 05:51] `-[2012-04-21 05:51]---(you are here) == BTW, How about displaying the current Id as zero and removing VDI id from the output of 'collie vdi list'? VDI IDs are used for internal purpose only, so I think we don't need to display them here. I'd like to avoid changing the VDI structure if possible. Thanks, Kazutaka |