Removing Giant from VFS in 10.0 (was: Re: skipping locks,
rwatson at FreeBSD.org
Fri Aug 26 09:11:37 UTC 2011
On Fri, 26 Aug 2011, perryh at pluto.rain.com wrote:
> John Baldwin <jhb at freebsd.org> wrote:
>> ... acquire Giant.
> Last I heard, Giant was dropped in 8.0 (and that was the reason for isdn and
> sio being dropped). Has it been reinstated? If so, should isdn and sio
> also be reinstated?
Giant persists in a number of places in the kernel, although most mainstream
subsystems have been Giant-free for several years. Giant compatibility was
removed from the network stack for 8, and I had hoped Giant compatibility
would be removed from VFS for 9. That hasn't happened, but there are signs it
may happen for 10. The main constraints there are that a pool of useful file
systems remains unconverted to the new locking world order -- particularly,
I'd love to see someone take the bull by the horns on this one (Attilio?) --
the process we used for the network stack can probably be replicated there
without too much difficulty:
(1) Enumerate all remaining file systems dependent on Giant (probably already
in the wiki, but review and update).
(2) Post a Giant deprecation plan for VFS to arch@, current@, and fs@,
allowing for substantial windows of time between "Announce removal plans",
"Disable build of non-conforming parts", "Remove non-conforming parts",
and with plenty of solicitations for help in fixing non-conforming parts.
(3) Put in some of the legwork to help fix critical things -- mostly
I will commit to either (a) making Coda MPSAFE for 10.0 or (b) removing it
from the tree myself if I or someone else doesn't do it in time. But we do
need more hands if we want to bring some of the legacy file systems forward --
especially things like nwfs/netncp, smbfs/netsmb, hpfs, etc.
We also need to start announcing this early in the 10.0 cycle so that
third-party file system developers for FreeBSD -- especially anyone interested
in things like OpenAFS and Fuse, can do appropriate updates there as well.
More information about the freebsd-arch