Non-MPSAFE filesystems de-orbit burn schedule
This page documents proposed schedules for removing infrastructure for non-MPSAFE VFS components and filesystems.
VFS_NEEDSGIANT() (and related) removal
This macro is used in order to conditionally acquire/drop/assert Giant lock in VFS layer, based on the MPSAFETY of the filesystem to be dealt with. The major goal of the project is to make it irrelevant, which means, for instance, locking all the already non-mpsafe filesystems and later on strip off the compat stuff.
Timeline for filesystems fine-grained locking addition
Date |
Done |
Event |
27 August 2011 |
yes |
Post MPSAFE VFS plan to arch@. |
08 November 2011 |
yes |
Add VFS_ALLOW_NONMPSAFE kernel option and make it the default. |
06 March 2012 |
yes |
Remove VFS_ALLOW_NONMPSAFE as the default kernel config. |
01 September 2012 |
no |
Disconnect non-mpsafe filesystems from the tree and remove the Giant-related code. |
01 March 2013 |
no |
Garbage collect in-tree non-mpsafe filesystems code. |
List of already mpsafe filesystems
Filesystem |
UFS |
ZFS |
NFS Client |
NFS Server |
UnionFS |
PseudoFS |
TmpFS |
NullFS |
DevFS |
CD9660FS |
Ext2FS |
FdescFS |
FifoFS |
MSDOSFS |
UDF |
ProcFS |
List of non-mpsafe filesystems
Filesystem |
Owner |
State |
Date completed |
CodaFS |
rwatson |
Non-MPSAFE |
|
HPFS |
|
Non-MPSAFE |
|
NtFS |
attilio |
Non-MPSAFE |
|
NwFS* |
|
Non-MPSAFE |
|
PortalFS |
|
Non-MPSAFE |
|
SmbFS* |
mav / ixsystems |
Non-MPSAFE |
|
ReiserFS |
dumbbell |
MPSAFE |
2012-03-27 (r233575) |
XFS |
davide |
Non-MPSAFE |
|
* Please note that locking smbfs and nwfs would also require to lock netsmb and netncp components. Other operating systems got very good results in this (like MacOSX and Solaris) already.
Technical notes
Removing Giant from the VFS related kernel component
Several months ago kib@ already provided a patch that can be used as a guidance for this:
http://people.freebsd.org/~kib/misc/VFS_NOLOCK_GIANT.4.patch
MsdosFS Giant removal
The MSDosFS mpsafe process can be set as a good example on what expect by developers:
http://svnweb.freebsd.org/base?view=revision&revision=204466
http://svnweb.freebsd.org/base?view=revision&revision=204467
http://svnweb.freebsd.org/base?view=revision&revision=204468
http://svnweb.freebsd.org/base?view=revision&revision=204469
http://svnweb.freebsd.org/base?view=revision&revision=204471
http://svnweb.freebsd.org/base?view=revision&revision=204473
http://svnweb.freebsd.org/base?view=revision&revision=204589
http://svnweb.freebsd.org/base?view=revision&revision=204675
Technical notes on locking Filesystems
TBD