[libvirt] [PATCHv10 3/6] clean up UpdateDevice for consolidation

KAMEZAWA Hiroyuki kamezawa.hiroyu at jp.fujitsu.com
Wed Apr 20 03:06:35 UTC 2011


On Wed, 20 Apr 2011 10:34:13 +0800
Wen Congyang <wency at cn.fujitsu.com> wrote:

> At 04/19/2011 03:44 PM, KAMEZAWA Hiroyuki Write:
> > This patch strips reusable part of qemudDomainUpdateDeviceFlags()
> > and consolidate it to qemudDomainModifyDeviceFlags().
> > No functional changes.
> > Based on Eric's and Hu's work.
> > 
> > 
> > Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
> > 
> > * src/qemu/qemu_driver.c
> > (qemudDomainUpdateDeviceLive) : core of UpdateDevice, extracted from
> > UpdateDeviceFlags()
> > (qemudDomainUpdateDeviceFlags): reworked as a wrapper function of
> > ModifyDeviceFlags()
> > ---
> >  src/qemu/qemu_driver.c |  209 +++++++++++++++++++++---------------------------
> >  1 files changed, 90 insertions(+), 119 deletions(-)
> > 
> > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> > index f33a7f4..2bdf42e 100644
> > --- a/src/qemu/qemu_driver.c
> > +++ b/src/qemu/qemu_driver.c
> > @@ -3991,6 +3991,74 @@ static int qemudDomainDetachDeviceLive(virDomainObjPtr vm,
> >      return ret;
> >  }
> >  
> > +static int
> > +qemudDomainChangeDiskMediaLive(virDomainObjPtr vm,
> > +                               virDomainDeviceDefPtr dev,
> > +                               struct qemud_driver *driver,
> > +                               virBitmapPtr qemuCaps,
> > +                               bool force)
> > +{
> > +    virDomainDiskDefPtr disk = dev->data.disk;
> > +    virCgroupPtr cgroup = NULL;
> > +    int ret;
> > +
> > +    if (qemuCgroupControllerActive(driver, VIR_CGROUP_CONTROLLER_DEVICES)) {
> > +        if (virCgroupForDomain(driver->cgroup,
> > +                               vm->def->name, &cgroup, 0) !=0 ) {
> > +            qemuReportError(VIR_ERR_INTERNAL_ERROR,
> > +                            _("Unable to find cgroup for %s"),
> > +                            vm->def->name);
> > +            goto end;
> > +        }
> > +        if (qemuSetupDiskCgroup(driver, vm, cgroup, disk) < 0)
> > +            goto end;
> > +    }
> > +
> > +    switch (disk->device) {
> > +    case VIR_DOMAIN_DISK_DEVICE_CDROM:
> > +    case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
> > +        ret = qemuDomainChangeEjectableMedia(driver, vm, disk, qemuCaps, force);
> > +        if (ret == 0)
> > +            dev->data.disk = NULL;
> > +        break;
> > +    default:
> > +        qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> > +                        _("disk bus '%s' cannot be updated."),
> > +                        virDomainDiskBusTypeToString(disk->bus));
> > +        break;
> > +    }
> > +end:
> 
> If ret is not 0 and cgroup is not NULL, you should call qemuTeardownDiskCgroup() to do
> some cleanup.
> 

Ah, yes. it's mistake. Will fix in v11.

Thanks,
-Kame






More information about the libvir-list mailing list