Page MenuHomeFreeBSD

Widen epoch coverage (step 2) + refactor PCB info locking (step 2).
ClosedPublic

Authored by glebius on Jan 15 2020, 3:12 AM.
Tags
None
Referenced Files
Unknown Object (File)
Feb 15 2024, 6:16 PM
Unknown Object (File)
Dec 12 2023, 1:30 AM
Unknown Object (File)
Oct 31 2023, 11:28 AM
Unknown Object (File)
Oct 10 2023, 8:53 PM
Unknown Object (File)
Sep 18 2023, 12:54 PM
Unknown Object (File)
Sep 6 2023, 10:22 AM
Unknown Object (File)
Sep 6 2023, 10:21 AM
Unknown Object (File)
Sep 6 2023, 10:19 AM
Subscribers

Details

Summary

This patch extends network epoch coverage on output path. Now
calling ip_output() and ip6_output() requires epoch. This
eliminates a bunch of epoch recursions, and what is important
it eliminates ALL epoch recursions happening on the fast path:
forwarding, TCP in/out, UDP in/out.

It also relaxes assertions in PCB lookup functions, since now
ipi_lock is almost unused, we rely on ipi_list_lock/ipi_hash_lock
for modifications and on the epoch for lookups.

The above two changes are somewhat tied together, thus a single
review. The commit plan is 14 commits, full history available
here:

https://github.com/glebius/FreeBSD/commits/net_epoch2

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Hi Glebius, I have a patch which tried to remove recursions within netinet6. I was down to one in December and since new ones have shown up. I am not sure if I'll be able to look at this one before next week but I'll try to upload my current work in progress in case that'll help you. I have EPOCH calls around all ip6_output() calls which this one equally adds, so most of my changes should be "downstream" from yours.

I'd really appreciate some reviewing. I'm going to commit this week.

This revision was not accepted when it landed; it landed in state Needs Review.Jan 22 2020, 6:11 AM
This revision was automatically updated to reflect the committed changes.