A naive look at the if_lagg.c race suggests that extending
the RLOCK coverage over the entire transaction may resolve the problem.
Details
Details
- Reviewers
mmacy
Patch added to PR234846 for testing
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 21989 Build 21223: arc lint + arc unit
Event Timeline
Comment Actions
Can you explain your goal? Not sure what you are trying to solve with this rlock. Please, note that LAGG_RLOCK() is epoch_enter() and it seem used to make safe lagg_port reclamation using epoch_call().
Comment Actions
So the basic goal is to have the test at sys/net/if_ethersubr.c:583 see a consistent state of the changes from the /* Change the interface type */ line to the lagg_proto_addport() line.
The naive thinking that led to this was "Oh, there's something with LOCK in it inside that block, maybe if I just expand the coverage of that, everything will be fine."
I'm taking a real look at the problem now.