On Wed, 20 Apr 2011 10:34:13 +0800 Wen Congyang <wency@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxx> > > > > * 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list