[libvirt] [PATCHv10 1/6] libvirt/qemu - clean up for qemudDomainAt(de)tachDevice(Flags)
Wen Congyang
wency at cn.fujitsu.com
Tue Apr 19 09:29:08 UTC 2011
At 04/19/2011 03:40 PM, KAMEZAWA Hiroyuki Write:
>
> Centralize device modification in the more flexible APIs, to allow
> future honoring of additional flags. Explicitly reject the
> VIR_DOMAIN_DEVICE_MODIFY_FORCE flag on attach/detach.
>
> Based on Eric Blake<eblake at redhat.com>'s work.
>
> From: Eric Blake <eblake at redhat.com>
> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
>
> * src/qemu/qemu_driver.c (qemudDomainAttachDevice)
> (qemudDomainAttachDeviceFlags): Swap bodies, and rename...
Hmm, you do not rename the function(qemudDomainAttachDevice ===> qemuDomainAttachDevice)
> (qemuDomainAttachDevice, qemuDomainAttachDeviceFlags): to this.
Hmm, it may be update not attach here.
> (qemudDomainDetachDevice, qemudDomainDetachDeviceFlags):
Missing 'Likewise.'
> ---
> src/qemu/qemu_driver.c | 53 ++++++++++++++++++++++++++---------------------
> 1 files changed, 29 insertions(+), 24 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index f6e503a..a8f3849 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -3786,8 +3786,8 @@ cleanup:
> }
>
>
> -static int qemudDomainAttachDevice(virDomainPtr dom,
> - const char *xml)
> +static int qemudDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
> + unsigned int flags)
> {
> struct qemud_driver *driver = dom->conn->privateData;
> virDomainObjPtr vm;
> @@ -3796,6 +3796,14 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
> virCgroupPtr cgroup = NULL;
> int ret = -1;
>
> + virCheckFlags(VIR_DOMAIN_DEVICE_MODIFY_LIVE |
> + VIR_DOMAIN_DEVICE_MODIFY_CONFIG, -1);
> + if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
> + qemuReportError(VIR_ERR_OPERATION_INVALID,
> + "%s", _("cannot modify the persistent configuration of a domain"));
> + return -1;
> + }
> +
> qemuDriverLock(driver);
> vm = virDomainFindByUUID(&driver->domains, dom->uuid);
> if (!vm) {
> @@ -3943,16 +3951,10 @@ cleanup:
> return ret;
> }
>
> -static int qemudDomainAttachDeviceFlags(virDomainPtr dom,
> - const char *xml,
> - unsigned int flags) {
> - if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
> - qemuReportError(VIR_ERR_OPERATION_INVALID,
> - "%s", _("cannot modify the persistent configuration of a domain"));
> - return -1;
> - }
> -
> - return qemudDomainAttachDevice(dom, xml);
> +static int qemudDomainAttachDevice(virDomainPtr dom, const char *xml)
> +{
> + return qemudDomainAttachDeviceFlags(dom, xml,
> + VIR_DOMAIN_DEVICE_MODIFY_LIVE);
> }
>
>
> @@ -4078,14 +4080,23 @@ cleanup:
> }
>
>
> -static int qemudDomainDetachDevice(virDomainPtr dom,
> - const char *xml) {
> +static int qemudDomainDetachDeviceFlags(virDomainPtr dom, const char *xml,
> + unsigned int flags)
> +{
> struct qemud_driver *driver = dom->conn->privateData;
> virDomainObjPtr vm;
> virBitmapPtr qemuCaps = NULL;
> virDomainDeviceDefPtr dev = NULL;
> int ret = -1;
>
> + virCheckFlags(VIR_DOMAIN_DEVICE_MODIFY_LIVE|
> + VIR_DOMAIN_DEVICE_MODIFY_CONFIG, -1);
> +
> + if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
> + qemuReportError(VIR_ERR_OPERATION_INVALID,
> + "%s", _("cannot modify the persistent configuration of a domain:"));
> + return -1;
> + }
> qemuDriverLock(driver);
> vm = virDomainFindByUUID(&driver->domains, dom->uuid);
> if (!vm) {
> @@ -4164,16 +4175,10 @@ cleanup:
> return ret;
> }
>
> -static int qemudDomainDetachDeviceFlags(virDomainPtr dom,
> - const char *xml,
> - unsigned int flags) {
> - if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
> - qemuReportError(VIR_ERR_OPERATION_INVALID,
> - "%s", _("cannot modify the persistent configuration of a domain"));
> - return -1;
> - }
> -
> - return qemudDomainDetachDevice(dom, xml);
> +static int qemudDomainDetachDevice(virDomainPtr dom, const char *xml)
> +{
> + return qemudDomainDetachDeviceFlags(dom, xml,
> + VIR_DOMAIN_DEVICE_MODIFY_LIVE);
> }
>
> static int qemudDomainGetAutostart(virDomainPtr dom,
More information about the libvir-list
mailing list