lockless file descriptor lookup

John Baldwin jhb at freebsd.org
Wed May 13 14:27:29 UTC 2009


On Monday 11 May 2009 11:32:17 pm Jeff Roberson wrote:
> http://people.freebsd.org/~jeff/locklessfd.diff
> 
> This patch implements a lockless lookup path for file descriptors.  The 
> meat of the algorithm is in fget_unlocked().  This returns a referenced 
> file descriptor, unlike fget_locked().  In the common case this reduces 
> the number of atomics required for fget() while allowing for lookups to 
> proceed concurrently with modifications to the table and preventing 
> preemption from causing context switches.

Looks good.  My only comment would be to not remove the 'hold' comment 
completely from _fget(), but instead say that it always returns a refcount 
that must be dropped.  Basically:

* The file's refcount will be bumped on return.  It should be dropped
* with fdrop().

or something like that in place of the old paragraph about the 'hold' 
parameter.

-- 
John Baldwin


More information about the freebsd-arch mailing list