Update network stack locking TODO:

Slide jail(2) lockdown forward again, I had to clean Giant out of
crfree() after a vnode was added to struct prison.
if_tap locking is done.
if_tun locking is done.
I'm working on UNIX domain socket locking now.  Also, fifofs.
AARP is done.
I'm working on IPv6 also.
ip_encap.c is locked down.
if_loop.c is locked down.
We now use m_tags to track possible looping in if_gif, not a global.
I'm also working on the socket layer.
I locked down NFS server with a Giant lock, but rick is working on
  data based locking.
Maurycy and I are locking down if_ppp.
mlaier, luigi, and brooks are working on ifnet locking.
mlaier and maurycy are working on address lists.
I'm working on bsd_comp consumers.
if_stf is a work in progress.
if_sl is a work in progress.
rik is working on if_sppp.
I'm working on netatalk DDP PCB locking.
I'm working on IGMP locking.
Need to review TCP timers, not lock them.
IP ID code needs locking.
This commit is contained in:
Robert Watson 2004-04-23 23:11:24 +00:00
parent cf25eb9c49
commit 1f700f687e
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=20774

View file

@ -1,6 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
<!ENTITY base CDATA "..">
<!ENTITY date "$FreeBSD: www/en/smp/index.sgml,v 1.123 2004/04/05 14:46:17 phantom Exp $">
<!ENTITY date "$FreeBSD: www/en/smp/index.sgml,v 1.124 2004/04/23 22:39:37 rwatson Exp $">
<!ENTITY title "FreeBSD SMP Project">
<!ENTITY email 'freebsd-smp'>
<!ENTITY % includes SYSTEM "../includes.sgml"> %includes;
@ -1009,13 +1009,6 @@
<td> &status.done; </td>
</tr>
<tr>
<td> Remove Giant from jail(2). </td>
<td> &a.arr; </td>
<td> 25 June 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Remove Giant from modnext(2), modfnext(2),
modstat(2),and modfind(2).</td>
@ -1173,6 +1166,13 @@
<td> &status.done; </td>
</tr>
<tr>
<td> Remove Giant from jail(2). </td>
<td> &a.arr; &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.done; </td>
</tr>
<!-- WIP -->
<tr>
@ -1693,6 +1693,58 @@
<td> &status.done; </td>
</tr>
<tr>
<td> if_tap global and softc locking. </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> if_tun global and softc locking. </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> netatalk/aarp.c locking. </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Cache socket MAC label in inpcb label for IPv4 sockets so that
the label can be used safely at the inet layer without socket
locks. </tD>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> IP encapsulation subroutines (ip_encap.c). </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Lock globals in loopback interface (if_loop.c). </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Use m_tags in if_gif to limit looping configurations, rather
than a non-MPSAFE static coutner. </td>
<td> &a.ru; </td>
<td> 23 April 2004 </td>
<td> &status.done; </td>
</tr>
<!-- WIP -->
<tr>
@ -1702,24 +1754,10 @@
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock &unix; domain protocols. </td>
<td> &a.hsu;, &a.sam </td>
<td> 4 October 2003 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock IPv6. </td>
<td> &a.sam;, &a.rwatson;, &a.ume; </td>
<td> 11 October 2003 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock socket layer. </td>
<td> &a.tanimura;, &a.sam </td>
<td> 10 October 2003 </td>
<td> &a.sam;, &a.rwatson;, &a.ume;, &a.mlaier; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
@ -1738,28 +1776,101 @@
</tr>
<tr>
<td> Lock in_gif "generic tunnel interface" per-softc variables. </td>
<td> Lock &unix; domain protocols, fifofs. </td>
<td> &a.hsu;, &a.sam, &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock socket layer. </td>
<td> &a.tanimura;, &a.sam, &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Giant lock over NFS server to protect against so_upcall() w/o Giant </td>
<td> &a.rwatson; </td>
<td> 9 March 2004 </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> if_ppp global, per-softc locking </td>
<td> &a.rwatson;, Maurycy Pawlowski-Wieronski &lt;maurycy@fouk.org&gt; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Apply combination of socket and socket buffer locks, label caching
to MAC labels on sockets so that they can be used safely without
Giant. </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.wip </td>
</tr>
<tr>
<td> Lock struct ifnet. </td>
<td> &a.mlaier;, &a.luigi; Maurycy Pawlowski-Wieronski &lt;maurycy@fouk.org&gt; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock IPv4 and IPv6 interface address lists. </td>
<td> &a.mlaier; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock consumers of BSD compress (bsd_comp.c) code to protect
compression state. </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock global and softc state for six-to-four converter (if_stf.c). </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock down global and softc state for SLIP (if_sl.c). </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock global and softc state for SPPP (if_sppsubr.c). </td>
<td> &a.rik;, &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> netatalk DDP PCB locking. </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> IGMP locking. </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.wip; </td>
</tr>
<!-- Not Started -->
<tr>
<td> Lock struct ifnet. </td>
<td> &nbsp; </td>
<td> 19 January 2001 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> Lock IPv4 and IPv6 interface address lists. </td>
<td> &nbsp; </td>
<td> 9 March 2004 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> Reduce contention upon locking a socket buffer by replacing
tsleep() and wakeup() with a condvar. </td>
@ -1768,21 +1879,6 @@
<td> &status.new; </td>
</tr>
<tr>
<td> Lock consumers of BSD compress (bsd_comp.c) code to protect
compression state. </td>
<td> &nbsp; </td>
<td> 9 March 2004 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> IP encapsulation subroutines (ip_encap.c). </td>
<td> &a.rwatson; </td>
<td> 9 March 2004 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> Lock if_ef "ethernet frame" driver. </td>
<td> &nbsp; </td>
@ -1791,12 +1887,19 @@
</tr>
<tr>
<td> Lock TCP timed code. </td>
<td> Review TCP timer code. </td>
<td> &nbsp; </td>
<td> 9 March 2004 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> IP ID locking. </td>
<td> &a.rwatson; </td>
<td> 23 April 2004 </td>
<td> &status.new; </td>
</tr>
</table>
<a name="issues"></a>