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. > Will send a v5 with typo fix. Thanks.