[Devel] [PATCH VZ9 2/3] net: zerocopy over unix sockets

Alexey Kuznetsov kuznet at virtuozzo.com
Tue Jan 16 14:26:35 MSK 2024


Hello!

On Tue, Jan 16, 2024 at 1:13 PM Pavel Tikhomirov
<ptikhomirov at virtuozzo.com> wrote:
> > --- a/net/core/sock.c
> > +++ b/net/core/sock.c
> > @@ -1405,6 +1405,9 @@ int sk_setsockopt(struct sock *sk, int level, int optname,
> >                             (sk->sk_type == SOCK_DGRAM &&
> >                              sk->sk_protocol == IPPROTO_UDP)))
> >                               ret = -EOPNOTSUPP;
> > +             } else if (sk->sk_family == PF_UNIX) {
> > +                     if (sk->sk_type == SOCK_DGRAM)
> > +                             ret = -EOPNOTSUPP;
>
> Likely we don't want to enable zerocopy for SOCK_SEQPACKET. Maybe change
> to: "if (sk->sk_type != SOCK_STREAM)"

Indeed. Thanks.


> > +     if (unlikely(flags & MSG_ERRQUEUE))
> > +             return unix_recv_error(sk, msg, size);
>
> In case of MSG_PEEK it might be not what user wants to receive zero-copy
> notification error message.

MSG_ERRQUEUE means user requested error messages, them and only them.
If MSG_PEEK (or another flag) is also set it means either peeking from
error queue or this flag
is ignored (likeMSG_DONTWAIT) or rejected, whatever is appropriate. At
least it is how I originally designed
it. But in case it was messed up with time, I have to recheck current semantics
in tcp and align to it, whatever it is.


> > +     int err = skb_orphan_frags_rx(skb, GFP_KERNEL);
> > +
>
> I prefer not to put function call on the same line with variable

Ok-ok. If my old pants are old-fashioned granpa's style, we replace them.

But why that creepy checkpatch.pl does not complain? Is it broken and
already not haute couture? :-)



More information about the Devel mailing list