[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/4] ivshmem: use migration blockers to prevent live
From: |
Anthony Liguori |
Subject: |
[Qemu-devel] [PATCH 2/4] ivshmem: use migration blockers to prevent live migration in peer mode |
Date: |
Fri, 11 Nov 2011 14:29:36 -0600 |
Now when you try to migrate with ivshmem, you get a proper QMP error:
(qemu) migrate tcp:localhost:1025
Migration is disabled when using feature 'peer mode' in device 'ivshmem'
(qemu)
Signed-off-by: Anthony Liguori <address@hidden>
---
hw/ivshmem.c | 12 +++++++++++-
qerror.c | 4 ++++
qerror.h | 3 +++
3 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/hw/ivshmem.c b/hw/ivshmem.c
index 242fbea..a3a0e98 100644
--- a/hw/ivshmem.c
+++ b/hw/ivshmem.c
@@ -18,6 +18,8 @@
#include "pci.h"
#include "msix.h"
#include "kvm.h"
+#include "migration.h"
+#include "qerror.h"
#include <sys/mman.h>
#include <sys/types.h>
@@ -78,6 +80,8 @@ typedef struct IVShmemState {
uint32_t features;
EventfdEntry *eventfd_table;
+ Error *migration_blocker;
+
char * shmobj;
char * sizearg;
char * role;
@@ -646,7 +650,8 @@ static int pci_ivshmem_init(PCIDevice *dev)
}
if (s->role_val == IVSHMEM_PEER) {
- register_device_unmigratable(&s->dev.qdev, "ivshmem", s);
+ error_set(&s->migration_blocker, QERR_DEVICE_FEATURE_BLOCKS_MIGRATION,
"ivshmem", "peer mode");
+ migrate_add_blocker(s->migration_blocker);
}
pci_conf = s->dev.config;
@@ -741,6 +746,11 @@ static int pci_ivshmem_uninit(PCIDevice *dev)
{
IVShmemState *s = DO_UPCAST(IVShmemState, dev, dev);
+ if (s->migration_blocker) {
+ migrate_del_blocker(s->migration_blocker);
+ error_free(s->migration_blocker);
+ }
+
memory_region_destroy(&s->ivshmem_mmio);
memory_region_del_subregion(&s->bar, &s->ivshmem);
memory_region_destroy(&s->ivshmem);
diff --git a/qerror.c b/qerror.c
index 4b48b39..8e30e2d 100644
--- a/qerror.c
+++ b/qerror.c
@@ -73,6 +73,10 @@ static const QErrorStringTable qerror_table[] = {
.desc = "Device '%(device)' is in use",
},
{
+ .error_fmt = QERR_DEVICE_FEATURE_BLOCKS_MIGRATION,
+ .desc = "Migration is disabled when using feature '%(feature)' in
device '%(device)'",
+ },
+ {
.error_fmt = QERR_DEVICE_LOCKED,
.desc = "Device '%(device)' is locked",
},
diff --git a/qerror.h b/qerror.h
index d4bfcfd..7e2eebf 100644
--- a/qerror.h
+++ b/qerror.h
@@ -72,6 +72,9 @@ QError *qobject_to_qerror(const QObject *obj);
#define QERR_DEVICE_IN_USE \
"{ 'class': 'DeviceInUse', 'data': { 'device': %s } }"
+#define QERR_DEVICE_FEATURE_BLOCKS_MIGRATION \
+ "{ 'class': 'DeviceFeatureBlocksMigration', 'data': { 'device': %s,
'feature': %s } }"
+
#define QERR_DEVICE_LOCKED \
"{ 'class': 'DeviceLocked', 'data': { 'device': %s } }"
--
1.7.4.1
- [Qemu-devel] [PATCH 1/4] migrate: add migration blockers, Anthony Liguori, 2011/11/11
- [Qemu-devel] [PATCH 4/4] qed: add migration blocker, Anthony Liguori, 2011/11/11
- [Qemu-devel] [PATCH 2/4] ivshmem: use migration blockers to prevent live migration in peer mode,
Anthony Liguori <=
- [Qemu-devel] [PATCH 3/4] qcow2: add a migration blocker, Anthony Liguori, 2011/11/11
- Re: [Qemu-devel] [PATCH 3/4] qcow2: add a migration blocker, Stefan Hajnoczi, 2011/11/14
- Re: [Qemu-devel] [PATCH 3/4] qcow2: add a migration blocker, Anthony Liguori, 2011/11/14
- Re: [Qemu-devel] [PATCH 3/4] qcow2: add a migration blocker, Kevin Wolf, 2011/11/14
- Re: [Qemu-devel] [PATCH 3/4] qcow2: add a migration blocker, Stefan Hajnoczi, 2011/11/14
- Re: [Qemu-devel] [PATCH 3/4] qcow2: add a migration blocker, Anthony Liguori, 2011/11/14
- Re: [Qemu-devel] [PATCH 3/4] qcow2: add a migration blocker, Stefan Hajnoczi, 2011/11/14