RE: [PATCH bpf v5 00/12] bpf sockmap fixes

John Fastabend
2023-04-06T21:25:23Z

John Fastabend wrote:
> Fixes for sockmap running against NGINX TCP tests and also on an
> underprovisioned VM so that we hit error (ENOMEM) cases regularly.
>
> The first 3 patches fix cases related to ENOMEM that were either
> causing splats or data hangs.
>
> Then 4-7 resolved cases found when running NGINX with its sockets
> assigned to sockmap. These mostly have to do with handling fin/shutdown
> incorrectly and ensuring epoll_wait works as expected.
>
> Patches 8 and 9 extract some of the logic used for sockmap_listen tests
> so that we can use it in other tests because it didn't make much
> sense to me to add tests to the sockmap_listen cases when here we
> are testing send/recv *basic* cases.
>
> Finally patches 10, 11 and 12 add the new tests to ensure we handle
> ioctl(FIONREAD) and shutdown correctly.
>
> To test the series I ran the NGINX compliance tests and the sockmap
> selftests. For now our compliance test just runs with SK_PASS.
>
> There are some more things to be done here, but these 11 patches
> stand on their own in my opionion and fix issues we are having in
> CI now. For bpf-next we can fixup/improve selftests to use the
> ASSERT_* in sockmap_helpers, streamline some of the testing, and
> add more tests. We also still are debugging a few additional flakes
> patches coming soon.
>
> v2: use skb_queue_empty instead of *_empty_lockless (Eric)
> oops incorrectly updated copied_seq on DROP case (Eric)
> added test for drop case copied_seq update
>
> v3: Fix up comment to use /**/ formatting and update commit
> message to capture discussion about previous fix attempt
> for hanging backlog being imcomplete.
>
> v4: build error sockmap things are behind NET_SKMSG not in
> BPF_SYSCALL otherwise you can build the .c file but not
> have correct headers.
>
> v5: typo with mispelled SOCKMAP_HELPERS
>

Still another build problem apparently we can have the
CONFIG_NET_SOCK_MSG option set with CONFIG_INET disabled.
OK I can fix it but seems a bit strange to me a sockmap
deployment without inet is mostly useless I suspect.