[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