[libvirt] [PATCHv4 12/18] blockjob: implement block copy for qemu

Jiri Denemark jdenemar at redhat.com
Tue Apr 17 08:32:48 UTC 2012


On Mon, Apr 16, 2012 at 17:28:10 -0600, Eric Blake wrote:
> On 04/13/2012 09:15 AM, Eric Blake wrote:
> > On 04/13/2012 08:46 AM, Jiri Denemark wrote:
> >> On Mon, Apr 09, 2012 at 21:52:21 -0600, Eric Blake wrote:
> >>> Minimal patch to wire up all the pieces in the previous patches
> >>> to actually enable a block copy job.  By minimal, I mean that
> >>> qemu creates the file (that is, no REUSE_EXT flag support yet),
> >>> SELinux must be disabled, a lock manager is not informed, and
> >>> the audit logs aren't updated.  But those will be added as
> >>> improvements in future patches.
> >>>
> 
> >>> +    qemuDomainObjEnterMonitorWithDriver(driver, vm);
> >>> +    ret = qemuMonitorDriveMirror(priv->mon, NULL, device, dest, format, flags);
> >>> +    if (ret == 0 && bandwidth != 0)
> >>> +        ret = qemuMonitorBlockJob(priv->mon, device, NULL, bandwidth, NULL,
> >>> +                                  BLOCK_JOB_SPEED_INTERNAL);
> >>> +    qemuDomainObjExitMonitorWithDriver(driver, vm);
> >>
> >> Can BLOCK_JOB_SPEED_INTERNAL fail while block copy remains running? If so, we
> >> should try to abort the job in case we fail to set the speed, otherwise we
> >> will report an error and forget about the job while qemu will keep copying
> >> data.
> > 
> > Good catch, and virDomainBlockPull() suffers from the same
> > ramifications.  I think both code paths need the same fix.
> 
> In the meantime, I think I will patch this instead by documentation:
> state that non-zero bandwidth in virDomainBlockRebase() may be silently
> ignored; if error checking is needed, the user should use a separate
> call to virDomainBlockJobSetSpeed(); and to see if a request was
> honored, use virDomainGetBlockJobInfo() (with the known race that the
> job might already be complete).

Makes sense, although we don't want to store the result of
BLOCK_JOB_SPEED_INTERNAL to be stored in ret, then.

Jirka




More information about the libvir-list mailing list