[libvirt] [PATCH 02/15] Moved the code to create implicit interface pool from PF to a new function
Laine Stump
laine at laine.org
Tue Aug 14 04:38:06 UTC 2012
On 08/10/2012 12:23 PM, Shradha Shah wrote:
> Just code movement no functional changes here. This makes the code reusable
>
> Signed-off-by: Shradha Shah <sshah at solarflare.com>
> ---
> src/network/bridge_driver.c | 86 ++++++++++++++++++++++++++----------------
> 1 files changed, 53 insertions(+), 33 deletions(-)
Nearly pure code movement. ACK.
>
> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
> index a5046f1..f128bd0 100644
> --- a/src/network/bridge_driver.c
> +++ b/src/network/bridge_driver.c
> @@ -2728,6 +2728,56 @@ int networkRegister(void) {
> * "backend" function table.
> */
>
> +/* networkCreateInterfacePool:
> + * @netdef: the original NetDef from the network
> + *
> + * Creates an implicit interface pool of VF's when a PF dev is given
> + */
> +static int
> +networkCreateInterfacePool(virNetworkDefPtr netdef) {
> + unsigned int num_virt_fns = 0;
> + char **vfname = NULL;
> + int ret = -1, ii = 0;
> +
> + if ((virNetDevGetVirtualFunctions(netdef->forwardPfs->dev,
> + &vfname, &num_virt_fns)) < 0) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("Could not get Virtual functions on %s"),
> + netdef->forwardPfs->dev);
> + goto finish;
> + }
> +
> + if (num_virt_fns == 0) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("No Vf's present on SRIOV PF %s"),
> + netdef->forwardPfs->dev);
> + goto finish;
> + }
> +
> + if ((VIR_ALLOC_N(netdef->forwardIfs, num_virt_fns)) < 0) {
> + virReportOOMError();
> + goto finish;
> + }
> +
> + netdef->nForwardIfs = num_virt_fns;
> +
> + for (ii = 0; ii < netdef->nForwardIfs; ii++) {
> + netdef->forwardIfs[ii].dev = strdup(vfname[ii]);
> + if (!netdef->forwardIfs[ii].dev) {
> + virReportOOMError();
> + goto finish;
> + }
> + netdef->forwardIfs[ii].usageCount = 0;
> + }
> +
> + ret = 0;
> +finish:
> + for (ii = 0; ii < num_virt_fns; ii++)
> + VIR_FREE(vfname[ii]);
> + VIR_FREE(vfname);
> + return ret;
> +}
> +
> /* networkAllocateActualDevice:
> * @iface: the original NetDef from the domain
> *
> @@ -2746,8 +2796,6 @@ networkAllocateActualDevice(virDomainNetDefPtr iface)
> virNetworkObjPtr network;
> virNetworkDefPtr netdef;
> virPortGroupDefPtr portgroup;
> - unsigned int num_virt_fns = 0;
> - char **vfname = NULL;
> int ii;
> int ret = -1;
>
> @@ -2894,36 +2942,11 @@ networkAllocateActualDevice(virDomainNetDefPtr iface)
> */
> if (netdef->forwardType == VIR_NETWORK_FORWARD_PASSTHROUGH) {
> if ((netdef->nForwardPfs > 0) && (netdef->nForwardIfs <= 0)) {
> - if ((virNetDevGetVirtualFunctions(netdef->forwardPfs->dev,
> - &vfname, &num_virt_fns)) < 0) {
> - virReportError(VIR_ERR_INTERNAL_ERROR,
> - _("Could not get Virtual functions on %s"),
> - netdef->forwardPfs->dev);
> + if ((networkCreateInterfacePool(netdef)) < 0) {
> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Could not Interface Pool"));
> goto cleanup;
> }
> -
> - if (num_virt_fns == 0) {
> - virReportError(VIR_ERR_INTERNAL_ERROR,
> - _("No Vf's present on SRIOV PF %s"),
> - netdef->forwardPfs->dev);
> - goto cleanup;
> - }
> -
> - if ((VIR_ALLOC_N(netdef->forwardIfs, num_virt_fns)) < 0) {
> - virReportOOMError();
> - goto cleanup;
> - }
> -
> - netdef->nForwardIfs = num_virt_fns;
> -
> - for (ii = 0; ii < netdef->nForwardIfs; ii++) {
> - netdef->forwardIfs[ii].dev = strdup(vfname[ii]);
> - if (!netdef->forwardIfs[ii].dev) {
> - virReportOOMError();
> - goto cleanup;
> - }
> - netdef->forwardIfs[ii].usageCount = 0;
> - }
> }
>
> /* pick first dev with 0 usageCount */
> @@ -2976,9 +2999,6 @@ networkAllocateActualDevice(virDomainNetDefPtr iface)
>
> ret = 0;
> cleanup:
> - for (ii = 0; ii < num_virt_fns; ii++)
> - VIR_FREE(vfname[ii]);
> - VIR_FREE(vfname);
> if (network)
> virNetworkObjUnlock(network);
> if (ret < 0) {
More information about the libvir-list
mailing list