[Devel] [PATCH RH9 1/4] Revert "net: openvswitch: add capability to specify ifindex of new links"

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Thu Apr 27 05:37:51 MSK 2023


Just a note: old criu will get EOPNOTSUPP on restore in create_one_vport 
on new kernel.

Probably it's OK and we can afford it, as we only released beta version 
yet. And probably nobody will just update kernel and reboot without 
updating criu.

On 25.04.2023 18:11, Andrey Zhadchenko wrote:
> This reverts commit 757ebade1eec8c6a3d1a150c8bd6f564c939c058.
> We should use the version upstream accepted
> 
> https://jira.vzint.dev/browse/PSBM-105844
> Signed-off-by: Andrey Zhadchenko <andrey.zhadchenko at virtuozzo.com>
> ---
>   net/openvswitch/datapath.c           | 16 ++--------------
>   net/openvswitch/vport-internal_dev.c |  1 -
>   net/openvswitch/vport.h              |  2 --
>   3 files changed, 2 insertions(+), 17 deletions(-)
> 
> diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
> index 8033c97a8d65..7e8a39a35627 100644
> --- a/net/openvswitch/datapath.c
> +++ b/net/openvswitch/datapath.c
> @@ -1739,7 +1739,6 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct genl_info *info)
>   	struct vport *vport;
>   	struct ovs_net *ovs_net;
>   	int err;
> -	struct ovs_header *ovs_header = info->userhdr;
>   
>   	err = -EINVAL;
>   	if (!a[OVS_DP_ATTR_NAME] || !a[OVS_DP_ATTR_UPCALL_PID])
> @@ -1780,7 +1779,6 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct genl_info *info)
>   	parms.dp = dp;
>   	parms.port_no = OVSP_LOCAL;
>   	parms.upcall_portids = a[OVS_DP_ATTR_UPCALL_PID];
> -	parms.desired_ifindex = ovs_header->dp_ifindex;
>   
>   	/* So far only local changes have been made, now need the lock. */
>   	ovs_lock();
> @@ -2201,10 +2199,7 @@ static int ovs_vport_cmd_new(struct sk_buff *skb, struct genl_info *info)
>   	if (!a[OVS_VPORT_ATTR_NAME] || !a[OVS_VPORT_ATTR_TYPE] ||
>   	    !a[OVS_VPORT_ATTR_UPCALL_PID])
>   		return -EINVAL;
> -
> -	parms.type = nla_get_u32(a[OVS_VPORT_ATTR_TYPE]);
> -
> -	if (a[OVS_VPORT_ATTR_IFINDEX] && parms.type != OVS_VPORT_TYPE_INTERNAL)
> +	if (a[OVS_VPORT_ATTR_IFINDEX])
>   		return -EOPNOTSUPP;
>   
>   	port_no = a[OVS_VPORT_ATTR_PORT_NO]
> @@ -2241,19 +2236,12 @@ static int ovs_vport_cmd_new(struct sk_buff *skb, struct genl_info *info)
>   	}
>   
>   	parms.name = nla_data(a[OVS_VPORT_ATTR_NAME]);
> +	parms.type = nla_get_u32(a[OVS_VPORT_ATTR_TYPE]);
>   	parms.options = a[OVS_VPORT_ATTR_OPTIONS];
>   	parms.dp = dp;
>   	parms.port_no = port_no;
>   	parms.upcall_portids = a[OVS_VPORT_ATTR_UPCALL_PID];
>   
> -	if (parms.type == OVS_VPORT_TYPE_INTERNAL) {
> -		if (a[OVS_VPORT_ATTR_IFINDEX])
> -			parms.desired_ifindex =
> -				nla_get_u32(a[OVS_VPORT_ATTR_IFINDEX]);
> -		else
> -			parms.desired_ifindex = 0;
> -	}
> -
>   	vport = new_vport(&parms);
>   	err = PTR_ERR(vport);
>   	if (IS_ERR(vport)) {
> diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c
> index 1c25158fbdf2..1e5468137c88 100644
> --- a/net/openvswitch/vport-internal_dev.c
> +++ b/net/openvswitch/vport-internal_dev.c
> @@ -157,7 +157,6 @@ static struct vport *internal_dev_create(const struct vport_parms *parms)
>   	if (vport->port_no == OVSP_LOCAL)
>   		vport->dev->features |= NETIF_F_NETNS_LOCAL;
>   
> -	dev->ifindex = parms->desired_ifindex;
>   	rtnl_lock();
>   	err = register_netdevice(vport->dev);
>   	if (err)
> diff --git a/net/openvswitch/vport.h b/net/openvswitch/vport.h
> index 24e1cba2f1ac..9de5030d9801 100644
> --- a/net/openvswitch/vport.h
> +++ b/net/openvswitch/vport.h
> @@ -98,8 +98,6 @@ struct vport_parms {
>   	enum ovs_vport_type type;
>   	struct nlattr *options;
>   
> -	int desired_ifindex;
> -
>   	/* For ovs_vport_alloc(). */
>   	struct datapath *dp;
>   	u16 port_no;

-- 
Best regards, Tikhomirov Pavel
Senior Software Developer, Virtuozzo.


More information about the Devel mailing list