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.

13 October 2012

Yes

FUSE import into base.

22 October 2012

Yes

Disconnect non-mpsafe filesystems from the tree and remove the Giant-related code.

01 March 2013

Yes

Garbage collect in-tree non-mpsafe filesystems code.

List of MPSAFE file systems

Filesystem

CD9660FS

DevFS

Ext2FS

FdescFS

FifoFS

MSDOSFS

NFS Client

NFS Server

NullFS

PseudoFS

ProcFS

ReiserFS

SmbFS

TmpFS

UDF

UFS

UnionFS

ZFS

List of non-MPSAFE file systems

Filesystem

Owner

State

CodaFS

rwatson

Removed

HPFS

Removed

NtFS

Removed

NwFS*

Removed

PortalFS

Removed

XFS

Removed

* Please note that locking nwfs would also require to lock netncp components. Other operating systems got very good results in this (like MacOSX and Solaris) already.

FUSE import

As some of the current filesystems have a very poor in-kernel support but they are actually very useful (with the most notable case being NTFS), in order to not loose their support, we will import in the kernel and actively maintain the FUSE module. At this present stage, most of the bugs from the port seems addressed. Please refer to the following e-mails:

http://lists.freebsd.org/pipermail/freebsd-fs/2012-September/015180.html

http://lists.freebsd.org/pipermail/freebsd-fs/2012-September/015179.html

Technical notes

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


CategoryTODO

NONMPSAFE_DEORBIT_VFS (last edited 2013-06-28 21:07:35 by AttilioRao)