[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] 802.1Qbg: use pre-associate state at beginning of incoming migration

On 11/23/2010 03:50 PM, Eric Blake wrote:
On 11/18/2010 08:31 AM, Stefan Berger wrote:

[apologies for letting this delay a week]

This patch introduces the usage of the pre-associate state of the IEEE
802.1Qbg standard on incoming VM migration on the target host. It is in
response to bugzilla entry 632750.


For being able to differentiate the exact reason as to why a macvtap
device is being created, either due to a VM creation or an incoming VM
migration, I needed to pass that reason as a parameter from wherever
qemudStartVMDaemon is being called in order to determine whether to send
an ASSOCIATE (VM creation) or a PRE-ASSOCIATE (incoming VM migration)
towards lldpad.

I am also fixing problem with the virsh domainxml-to-native call on the

Gerhard successfully tested the patch with a recent blade network
802.1Qbg-compliant switch.

The patch should not have any side-effects on the 802.1Qbh support in
libvirt, but Scott (cc'ed) may want to verify this.

Signed-off-by: Stefan Berger<stefanb us ibm com>
Signed-off-by: Gerhard Stenzel<gerhard stenzel de ibm com>
@@ -3951,7 +3953,8 @@ int qemudBuildCommandLine(virConnectPtr
                            int **vmfds,
                            int *nvmfds,
                            const char *migrateFrom,
-                          virDomainSnapshotObjPtr current_snapshot)
+                          virDomainSnapshotObjPtr current_snapshot,
+                          enum vmOperation vmop)
Oh joy - a merge conflict with my virCommand stuff.  If you push first,
then I get to pick up the pieces :)

@@ -11844,6 +11851,41 @@ cleanup:
      return ret;

+static void
+qemudVPAssociatePortProfiles(virDomainDefPtr def) {
+    int i;
+    int last_good_net = -1;
+    virDomainNetDefPtr net;
+    for (i = 0; i<   def->nnets; i++) {
+        net = def->nets[i];
+        if (net->type == VIR_DOMAIN_NET_TYPE_DIRECT) {
+            if (vpAssociatePortProfileId(net->ifname,
+                                         net->mac,
+                                         net->data.direct.linkdev,
+                                         def->uuid,
+                                         VM_OP_MIGRATE_IN_FINISH) != 0)
+                goto err_exit;
+        }
+        last_good_net = i;
+    }
+    return;
+    for (i = 0; i<   last_good_net; i++) {
Should this loop be from (last_good_net,0] instead of [0,last_good_net)
(that is, inverse of creation order)?

The order of the teardown doesn't matter from what I can see.
Index: libvirt-acl/src/util/macvtap.c
--- libvirt-acl.orig/src/util/macvtap.c
+++ libvirt-acl/src/util/macvtap.c
@@ -77,9 +77,22 @@
  # define LLDPAD_PID_FILE  "/var/run/lldpad.pid"

+static const char *vmOpStr[] = {
+    [VM_OP_CREATE] = "create",
+    [VM_OP_SAVE] = "save",
+    [VM_OP_RESTORE] = "restore",
+    [VM_OP_DESTROY] = "destroy",
+    [VM_OP_MIGRATE_OUT] = "migrate out",
+    [VM_OP_MIGRATE_IN_START] = "migrate in start",
+    [VM_OP_MIGRATE_IN_FINISH] = "migrate in finish",
+    [VM_OP_NO_OP] = "no-op"
This seems like it would better be done via VIR_ENUM_DECL and VIR_ENUM_IMPL?

Yes, I'll convert it and repost.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]