[libvirt] [PATCH] qemu: Allow migration with host USB devices

Recently, patches were added support for (managed)saving, restoring, and migrating domains with host USB devices. However, qemu driver would still forbid migration of such domains because qemuMigrationIsAllowed was not updated. --- src/qemu/qemu_migration.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 65cd6ec..a2402ce 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -800,6 +800,8 @@ qemuMigrationIsAllowed(struct qemud_driver *driver, virDomainObjPtr vm, virDomainDefPtr def) { int nsnapshots; + bool forbid; + int i; if (vm) { if (qemuProcessAutoDestroyActive(driver, vm)) { @@ -817,9 +819,23 @@ qemuMigrationIsAllowed(struct qemud_driver *driver, virDomainObjPtr vm, def = vm->def; } - if (def->nhostdevs > 0) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain with assigned host devices cannot be migrated")); + + /* Migration with USB host devices is allowed, all other devices are + * forbidden. + */ + forbid = false; + for (i = 0; i < def->nhostdevs; i++) { + virDomainHostdevDefPtr hostdev = def->hostdevs[i]; + if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS || + hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) { + forbid = true; + break; + } + } + if (forbid) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("Domain with assigned non-USB host devices " + "cannot be migrated")); return false; } -- 1.7.12.4

On 19.10.2012 14:21, Jiri Denemark wrote:
Recently, patches were added support for (managed)saving, restoring, and migrating domains with host USB devices. However, qemu driver would still forbid migration of such domains because qemuMigrationIsAllowed was not updated. --- src/qemu/qemu_migration.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 65cd6ec..a2402ce 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -800,6 +800,8 @@ qemuMigrationIsAllowed(struct qemud_driver *driver, virDomainObjPtr vm, virDomainDefPtr def) { int nsnapshots; + bool forbid; + int i;
if (vm) { if (qemuProcessAutoDestroyActive(driver, vm)) { @@ -817,9 +819,23 @@ qemuMigrationIsAllowed(struct qemud_driver *driver, virDomainObjPtr vm,
def = vm->def; } - if (def->nhostdevs > 0) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain with assigned host devices cannot be migrated")); + + /* Migration with USB host devices is allowed, all other devices are + * forbidden. + */ + forbid = false; + for (i = 0; i < def->nhostdevs; i++) { + virDomainHostdevDefPtr hostdev = def->hostdevs[i]; + if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS || + hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) { + forbid = true; + break; + } + } + if (forbid) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("Domain with assigned non-USB host devices " + "cannot be migrated")); return false; }
ACK Michal

On Fri, Oct 19, 2012 at 14:37:57 +0200, Michal Privoznik wrote:
On 19.10.2012 14:21, Jiri Denemark wrote:
Recently, patches were added support for (managed)saving, restoring, and migrating domains with host USB devices. However, qemu driver would still forbid migration of such domains because qemuMigrationIsAllowed was not updated. --- src/qemu/qemu_migration.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-)
ACK
Thanks, pushed. Jirka
participants (2)
-
Jiri Denemark
-
Michal Privoznik