[libvirt] [PATCH] 802.1Qbh: Delay IFF_UP'ing interface until migration final stage
Stefan Berger
stefanb at linux.vnet.ibm.com
Sat Feb 19 18:20:58 UTC 2011
On 02/18/2011 11:11 PM, Roopa Prabhu wrote:
> From: Roopa Prabhu<roprabhu at cisco.com>
>
> Current code does an IFF_UP on a 8021Qbh interface immediately after a port
> profile set. This is ok in most cases except when its the migration prepare
> stage. During migration we want to postpone IFF_UP'ing the interface on the
> destination host until the source host has disassociated the interface.
> This patch moves IFF_UP of the interface to the final stage of migration.
> The motivation for this change is to postpone any addr registrations on the
> destination host until the source host has done the addr deregistrations.
>
> While at it, for symmetry with associate move ifDown of a 8021Qbh interface
> to before disassociate
>
> Signed-off-by: Roopa Prabhu<roprabhu at cisco.com>
> Signed-off-by: David Wang<dwang2 at cisco.com>
> Signed-off-by: Christian Benvenuti<benve at cisco.com>
> ---
> src/util/macvtap.c | 13 ++++++-------
> 1 files changed, 6 insertions(+), 7 deletions(-)
>
>
> diff --git a/src/util/macvtap.c b/src/util/macvtap.c
> index 8814400..a71db86 100644
> --- a/src/util/macvtap.c
> +++ b/src/util/macvtap.c
> @@ -1470,8 +1470,6 @@ doPortProfileOp8021Qbh(const char *ifname,
> NULL,
> vf,
> PORT_REQUEST_DISASSOCIATE);
> - if (!rc)
> - ifaceUp(ifname);
> break;
>
> case DISASSOCIATE:
> @@ -1484,7 +1482,6 @@ doPortProfileOp8021Qbh(const char *ifname,
> NULL,
> vf,
> PORT_REQUEST_DISASSOCIATE);
> - ifaceDown(ifname);
> break;
>
> default:
> @@ -1550,10 +1547,11 @@ vpAssociatePortProfileId(const char *macvtap_ifname,
>
> case VIR_VIRTUALPORT_8021QBH:
> /* avoid associating twice */
> - if (vmOp == VIR_VM_OP_MIGRATE_IN_FINISH)
> - break;
> - rc = doPortProfileOp8021Qbh(linkdev, macvtap_macaddr,
> - virtPort, vmuuid, ASSOCIATE);
> + if (vmOp != VIR_VM_OP_MIGRATE_IN_FINISH)
> + rc = doPortProfileOp8021Qbh(linkdev, macvtap_macaddr,
> + virtPort, vmuuid, ASSOCIATE);
> + if (vmOp != VIR_VM_OP_MIGRATE_IN_START&& !rc)
> + ifaceUp(linkdev);
> break;
> }
>
> @@ -1600,6 +1598,7 @@ vpDisassociatePortProfileId(const char *macvtap_ifname,
> /* avoid disassociating twice */
> if (vmOp == VIR_VM_OP_MIGRATE_IN_FINISH)
> break;
> + ifaceDown(linkdev);
> rc = doPortProfileOp8021Qbh(linkdev, macvtap_macaddr,
> virtPort, NULL, DISASSOCIATE);
> break;
>
The patch only touches 802.1Qbh paths. Looks good to me. ACK.
(I'll push the patch on Tuesday)
Regards,
Stefan
More information about the libvir-list
mailing list