Current implementation of virDomainBlockPull is actually a subset of
virDomainBlockRebase with NULL base.
I suggest to add new generalised API call virDomainBlockRebase2 which
will serve as a superset of both and support params list.
Having params list is more flexible and extendible for future possible
improvements of qemu block-stream or block-copy.
Could you please outline your motivations to do this besides the last
paragraph?
I'm asking because I personally think that virDomainBlockRebase trying
to "magically" do either block-stream or block-copy was a mistake.
The mistake was partially rectified by having virDomainBlockCopy as the
proper endpoint for block-copy/blockdev-mirror.
We do lack a fully-featured interface for 'block-stream' (to do
intermediate layer pull) but I don't think the fix for it is to have
once again a API that does both.
Peter, thank you for your review. Actually, you're totally right - that
was my initial motivation: to provide better interface for
'block-stream'. I agree we don't have to mix stream and copy within
single API call.
I'll prepare v2 patchset with 'block-stream'-only API and keep in mind
all your code related comments.
Best regards,
Nikolai