aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNishank Trivedi <nistrive@cisco.com>2012-08-30 15:27:27 -0400
committerStefan Berger <stefanb@us.ibm.com>2012-08-30 15:27:27 -0400
commit3044433f29eacd57f98360e688634b42f1d48d56 (patch)
tree09cbea17fcf4bbc7584c6864765e25d1cab573b6
parentnwfilter: loop generated too many rules (diff)
downloadlibvirt-3044433f29eacd57f98360e688634b42f1d48d56.tar.gz
libvirt-3044433f29eacd57f98360e688634b42f1d48d56.tar.bz2
libvirt-3044433f29eacd57f98360e688634b42f1d48d56.zip
Fix issue of PF brought down if VF is 8021.Qbh and pci passthrough
If a 8021.Qbh network device supports SRIOV and its VF is being used in pci passthrough mode, when the guest is shutdown or destroyed, the PF inteface is also brought down. qemuDomainHostdevNetConfigRestore() finds out the PF for provided hostdev (which is VF) and passes it to virNetDevPortProfileDisassociate() as linkdev. Later, linkdev gets passed to virNetDevSetOnline() where the interface is brought down by clearing IFF_UP flag. Bringing down a PF, when only VF is being brought down is not expected behavior. This patch adds a check so that virNetDevSetOnline() is called only for PF and not if device is a VF. Signed-off-by: Nishank Trivedi <nistrive@cisco.com>
-rw-r--r--AUTHORS1
-rw-r--r--src/util/virnetdevvportprofile.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/AUTHORS b/AUTHORS
index 3a961c9a4..58a7303bf 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -261,6 +261,7 @@ Patches have also been contributed by:
J.B. Joret <jb@linux.vnet.ibm.com>
Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Gene Czarcinski <gene@czarc.net>
+ Nishank Trivedi <nistrive@cisco.com>
[....send patches to get your name here....]
diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprofile.c
index 52133782f..fbbdde91a 100644
--- a/src/util/virnetdevvportprofile.c
+++ b/src/util/virnetdevvportprofile.c
@@ -1235,7 +1235,8 @@ virNetDevVPortProfileDisassociate(const char *macvtap_ifname,
/* avoid disassociating twice */
if (vmOp == VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_FINISH)
break;
- ignore_value(virNetDevSetOnline(linkdev, false));
+ if (vf < 0)
+ ignore_value(virNetDevSetOnline(linkdev, false));
rc = virNetDevVPortProfileOp8021Qbh(linkdev, macvtap_macaddr, vf,
virtPort, NULL,
VIR_NETDEV_VPORT_PROFILE_LINK_OP_DISASSOCIATE);