LOR: /sys/ufs/ffs/ffs_snapshot.c:1893 /sys/vm/vm_map.c:2206

Brian Fundakowski Feldman green at FreeBSD.org
Fri Apr 30 21:12:34 PDT 2004

Robert Watson <rwatson at FreeBSD.org> wrote:
> On Fri, 30 Apr 2004, Brian Fundakowski Feldman wrote:
> > I haven't seen it myself, but it seems like it's only going to happen
> > sometimes (when a full page is freed).  There's really no technical
> > reason you'd ever want to do a free(9) with locks held, so I suggest
> > fixing it in the straightforward way. 
> While I sympathize with this point, I don't think it's realistic to assert
> that free() will never be called while helding a lock.  Once the mbuf
> allocator backs into regular malloc() and free(); the network stack relies
> on being able to perform wait-free allocation and free while locks are
> held, since it uses locks as a light-weight form of reference-counting.

Well, there's locks, and then there's mutexes; the vnode interlock is a 
mutex that is really, really not supposed to be slept while holding.

Brian Fundakowski Feldman                           \'[ FreeBSD ]''''''''''\
  <> green at FreeBSD.org                               \  The Power to Serve! \
 Opinions expressed are my own.                       \,,,,,,,,,,,,,,,,,,,,,,\

More information about the freebsd-current mailing list