[Devel] [PATCH]net: Restore default sock_alloc_send_pskb() changed by initial cumulative patch

Konstantin Khorenko khorenko at virtuozzo.com
Wed Oct 19 03:13:55 PDT 2016


Zhenya, Vasya,

please release it as a ReadyKernel patch.

Thank you.

--
Best regards,

Konstantin Khorenko,
Virtuozzo Linux Kernel Team

On 10/18/2016 06:29 PM, Kirill Tkhai wrote:
> Some of pre-2.6.32 kernel need linear skb allocation for these places. The most
> probably, it's connected with problems of memory accounting then.
>
> But now, these hunks creates problem for VMs, because allocation of continuous
> big skbs fails there.
>
> Restore the default behaviour to fix the problem.
>
> https://jira.sw.ru/browse/PSBM-52390
>
> Reported-by: Roman Kagan <rkagan at virtuozzo.com>
> Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
> ---
> diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
> index a128823..d589b6d 100644
> --- a/drivers/net/macvtap.c
> +++ b/drivers/net/macvtap.c
> @@ -605,7 +605,12 @@ static inline struct sk_buff *macvtap_alloc_skb(struct sock *sk, size_t prepad,
>  {
>  	struct sk_buff *skb;
>
> -	skb = sock_alloc_send_skb(sk, prepad + linear, noblock, err);
> +	/* Under a page?  Don't bother with paged skb. */
> +	if (prepad + len < PAGE_SIZE || !linear)
> +		linear = len;
> +
> +	skb = sock_alloc_send_pskb(sk, prepad + linear, len - linear, noblock,
> +				   err, 0);
>  	if (!skb)
>  		return NULL;
>
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index dabe51c..75c627b 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c
> @@ -1028,8 +1028,12 @@ static struct sk_buff *tun_alloc_skb(struct tun_file *tfile,
>  	struct sk_buff *skb;
>  	int err;
>
> -	linear = len;
> -	skb = sock_alloc_send_skb(sk, prepad + linear, noblock, &err);
> +	/* Under a page?  Don't bother with paged skb. */
> +	if (prepad + len < PAGE_SIZE || !linear)
> +		linear = len;
> +
> +	skb = sock_alloc_send_pskb(sk, prepad + linear, len - linear, noblock,
> +				   &err, 0);
>  	if (!skb)
>  		return ERR_PTR(err);
>
> .
>


More information about the Devel mailing list