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