cvs commit: src/sys/kern uipc_usrreq.c
Alfred Perlstein
alfred at freebsd.org
Fri Jun 11 01:25:37 GMT 2004
* Robert Watson <rwatson at FreeBSD.org> [040610 14:34] wrote:
> rwatson 2004-06-10 21:34:38 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/kern uipc_usrreq.c
> Log:
> Introduce a subsystem lock around UNIX domain sockets in order to protect
> global and allocated variables. This strategy is derived from work
> originally developed by BSDi for BSD/OS, and applied to FreeBSD by Sam
> Leffler:
>
> - Use of an sx lock for the file list mutex may cause problems with regard
> to unp_mtx when garbage collection passed file descriptors.
That is true, but I don't think there is a reason to hold the UNP
lock inside of unp_gc except to protect the unp_gcing variable and
when calling into unp_scan.
You might be able to gloss over all of it by just using an sx lock
instead of a mutex for the UNP lock.
> - The locking in unp_pcblist() for sysctl monitoring is correct subject to
> the unpcb zone not returning memory for reuse by other subsystems
> (consistent with similar existing concerns).
>
> - Sam's version of this change, as with the BSD/OS version, made use of
> both a global lock and per-unpcb locks. However, in practice, the
> global lock covered all accesses, so I have simplified out the unpcb
> locks in the interest of getting this merged faster (reducing the
> overhead but not sacrificing granularity in most cases). We will want
> to explore possibilities for improving lock granularity in this code in
> the future.
I noticed this in the BSD/os version, it was sort of like...
"the global lock covers everything, what's the point of the
underlying locks..?"
Anyhow, good work, but the unp_gc stuff is surely going to bite
us and needs to be fixed.
--
- Alfred Perlstein
- Research Engineering Development Inc.
- email: bright at mu.org cell: 408-480-4684
More information about the cvs-src
mailing list