If I'm not terribly mistaken, looks like libvirt 1.2.1 does not provide ability of merging only a subset of the entire chain of backing files.

So, if I have a chain like this:

                 root <- a <-b <- c <- d <- active

... and  I'd like to obtain a chain like this:

                  root <-  c <- d <- active

... looks like it's not supported, since I'm trying the command

                   virsh blockpull domain --path /path/to/c --bandwidth 30 --base /path/to/root          (1)

... but it complains because --path /path/to/c is not recognized, since only --path /path/to/active is acceptable:

                   virsh blockpull domain --path /path/to/active --bandwidth 30 --base /path/to/root          (2)

So, command (1) fails but command (2) succeeds.

The point is: How could I obtain the results I'm trying to achieve via command (1) ?

I'm new to libvirt, but the article below made me think that what I'm trying to do would be possible:
      http://kashyapc.fedorapeople.org/virt/lc-2012/snapshots-handout.html  ( see section on blockpull )


For your information, my environment is:
Compiled against library: libvirt 1.2.1
Using library: libvirt 1.2.1
Using API: QEMU 1.2.1
Running hypervisor: QEMU 1.7.0
Running against daemon: 1.2.1


Richard Gomes
mobile: +44(77)9955-6813
inum: +883(5100)0800-9804