Thanks, Eric!
However, I met more problems today. I tried blockpull with an test env. And virsh command returned an error:

error: failed to query job for disk /test/over_5_1.qcow2

error: internal error: client socket is closed

error: One or more references were leaked after disconnect from the hypervisor

error: Reconnected to the hypervisor


I "qemu-img info" the top image, its back file was already pointed to the base file. 
But the virtual machine process's cpu load was very high in the hypervisor, and that vm was a "dummy" machine, should not be high loaded.
I don't know whether the pull operation is still going on or not, and what is the final result.

And one more question hits me. What if the "blockpull" command fails? will it leave the disk files in unconsistant/corrupt state?
Thank you very much.

Daniel
 
From: Eric Blake
Date: 2014-08-06 21:29
To: chenyanqiu@keytonecloud.com; libvirt-users
Subject: Re: [libvirt-users] [help] Does "virsh blockpull" works on live virtual machine
On 08/06/2014 06:04 AM, chenyanqiu@keytonecloud.com wrote:
> Hi all,
 
[please configure your mailer to wrap long lines]
 
> ...Now I want to remove snap1 and snap2, and let current disk using the
base image file as back file directly. Unfortunately, for some reason, I
can not shutdown the vm, and exectue the "virsh blockpull" command. Can
I execute the "virsh blockpull" while the vm is power on, and the
application in the vm is not affected?
 
Yes, that's the point of the 'virsh blockpull' command - live chain
manipulation with no impact to the running guest.
 
--
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org