Hi, This change makes struct ifaddr and struct in_ifaddr (and lists for them) MP-safe using pserialize(9) and psref(9). Changes to in6_ifaddr aren't included.
There are two patches: http://www.netbsd.org/~ozaki-r/revert-revert-ifaddr-change.diff http://www.netbsd.org/~ozaki-r/psref-ifa-ia4.diff The first patch reverts the reverted commit that added a member variable to struct ifaddr which broke netstat -ia using kvm(3). netstat is already modified to use sysctl instead of kvm(3) and we don't need a dirty workaround to keep kvm(3) backcompat (see PR kern/51325 for the discussion about it). The second patch (tl;tr) applies pserialize and psref to the data structures. Most changes are usual changes for pserialize and psref while some changes require restructuring, e.g., rt_getifa. One note is that pserialize_perform and psref_target_destroy are commented out for now. This is because: - in6_ifaddr change is not yet - They aren't needed now because of softnet_lock - They cause a deadlock because of softnet_lock So we should enable them when we remove softnet_lock. Any comments or suggestions? Thanks, ozaki-r