On Mon, 07/22 14:43, Wenchao Xia wrote: > δΊ 2013-7-22 11:46, Fam Zheng ει: > > Previously live commit of active block device is not supported, this series > > implements it and updates corresponding qemu-iotests cases. > > > > Please see commit messages for implementation details. > > > > Fam Zheng (2): > > block: allow live commit of active image > > qemu-iotests: update test cases for commit active > > > > block.c | 102 ++++++++++--------------------- > > block/commit.c | 160 > > +++++++++++++++++++++++++------------------------ > > include/block/block.h | 5 +- > > tests/qemu-iotests/040 | 68 ++++++++------------- > > 4 files changed, 141 insertions(+), 194 deletions(-) > > > I have thought the commit with top issue before, a question comes to > me: what is the relationship with block-stream? > > for example: > base->mid->top > > you can block-stream mid to top(if I remember correctly), result is: > base->(mid+top) > > with this patch, you can block-commit top to mid, result is: > base->(mod+top) > > it seems the function is duplicated. Maybe you can raise another > good user case. I must say it may help user to do every thing > with block-commit, but if you find it is too much to make it work, > maybe you can postpond it, since block-stream is available. >
Of course, you can either merge 'top' into 'mid', or merge 'mid' into 'top', you always get sum of them. However if 'mid' is very large while you only allocated a few clusters in 'top', block-stream is not very nice to use: you need to copy the whole 'mid' to 'top'. But committing 'top' back to 'mid', if it has no other children, will be much faster. -- Fam