cvs commit: src/sys/kern init_sysent.c vfs_syscalls.c
Christian S.J. Peron
csjp at FreeBSD.org
Sat Sep 24 16:47:05 PDT 2005
csjp 2005-09-24 23:47:04 UTC
FreeBSD src repository
Modified files:
sys/kern init_sysent.c vfs_syscalls.c
Log:
Implement new world order in VFS locking for extended attributes. This will
remove the unconditional acquisition of Giant for extended attribute related
operations. If the file system is set as being MP safe and debug.mpsafevfs is
1, do not pickup Giant.
Mark the following system calls as being MP safe so we no longer pickup Giant
in the system call handler:
o extattrctl
o extattr_set_file
o extattr_get_file
o extattr_delete_file
o extattr_set_fd
o extattr_get_fd
o extattr_delete_fd
o extattr_set_link
o extattr_get_link
o extattr_delete_link
o extattr_list_file
o extattr_list_link
o extattr_list_fd
-Pass MPSAFE flags to namei(9) lookup and introduce vfslocked variable which
will keep track of any Giant acquisitions.
-Wrap any fd operations which manipulate vnodes in VFS_{UN}LOCK_GIANT
-Drop VFS_ASSERT_GIANT into function which operate on vnodes to ensure that
we are sufficiently protected.
I've tested these changes with various TrustedBSD MAC policies which use
extended attribute a lot on SMP and UP systems (thanks to Scott Long for
making some SMP hardware available to me for testing).
Discussed with: jeff
Requested by: jhb, rwatson
Revision Changes Path
1.196 +13 -13 src/sys/kern/init_sysent.c
1.395 +62 -29 src/sys/kern/vfs_syscalls.c
More information about the cvs-src
mailing list