opnsense-src/lib/libc/sys
Doug Rabson dfdcada31e Add the new kernel-mode NFS Lock Manager. To use it instead of the
user-mode lock manager, build a kernel with the NFSLOCKD option and
add '-k' to 'rpc_lockd_flags' in rc.conf.

Highlights include:

* Thread-safe kernel RPC client - many threads can use the same RPC
  client handle safely with replies being de-multiplexed at the socket
  upcall (typically driven directly by the NIC interrupt) and handed
  off to whichever thread matches the reply. For UDP sockets, many RPC
  clients can share the same socket. This allows the use of a single
  privileged UDP port number to talk to an arbitrary number of remote
  hosts.

* Single-threaded kernel RPC server. Adding support for multi-threaded
  server would be relatively straightforward and would follow
  approximately the Solaris KPI. A single thread should be sufficient
  for the NLM since it should rarely block in normal operation.

* Kernel mode NLM server supporting cancel requests and granted
  callbacks. I've tested the NLM server reasonably extensively - it
  passes both my own tests and the NFS Connectathon locking tests
  running on Solaris, Mac OS X and Ubuntu Linux.

* Userland NLM client supported. While the NLM server doesn't have
  support for the local NFS client's locking needs, it does have to
  field async replies and granted callbacks from remote NLMs that the
  local client has contacted. We relay these replies to the userland
  rpc.lockd over a local domain RPC socket.

* Robust deadlock detection for the local lock manager. In particular
  it will detect deadlocks caused by a lock request that covers more
  than one blocking request. As required by the NLM protocol, all
  deadlock detection happens synchronously - a user is guaranteed that
  if a lock request isn't rejected immediately, the lock will
  eventually be granted. The old system allowed for a 'deferred
  deadlock' condition where a blocked lock request could wake up and
  find that some other deadlock-causing lock owner had beaten them to
  the lock.

* Since both local and remote locks are managed by the same kernel
  locking code, local and remote processes can safely use file locks
  for mutual exclusion. Local processes have no fairness advantage
  compared to remote processes when contending to lock a region that
  has just been unlocked - the local lock manager enforces a strict
  first-come first-served model for both local and remote lockers.

Sponsored by:	Isilon Systems
PR:		95247 107555 115524 116679
MFC after:	2 weeks
2008-03-26 15:23:12 +00:00
..
__error.c Remove 3rd clause, renumber, ok per email 2007-01-12 07:31:30 +00:00
_exit.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
abort2.2 Fix markup, language, function prototype, and example code. 2006-09-30 10:24:00 +00:00
accept.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
access.2 After issueing a ntpdate [1] I noticed it's already 2008, reflect that 2008-02-11 07:43:23 +00:00
acct.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
adjtime.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
aio_cancel.2 Refer to 1003.1 instead of 1003.2 in the Standards section. 2003-01-13 10:37:11 +00:00
aio_error.2 Fix typo 2006-09-26 09:47:46 +00:00
aio_read.2 Sort .Xr by section number. 2005-12-13 13:43:35 +00:00
aio_return.2 Reword previous delta a little bit. 2006-10-07 10:49:20 +00:00
aio_suspend.2 ``NULL is a specific instance of a null pointer constant; the generic is 2004-12-23 23:45:25 +00:00
aio_waitcomplete.2 mdoc(7) police: Tidy up the syscall language. 2002-12-18 09:22:32 +00:00
aio_write.2 Sort .Xr by section number. 2005-12-13 13:43:35 +00:00
bind.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
brk.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
chdir.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
chflags.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
chmod.2 When we try to set set-gid bit with chmod(2) on a file, which we own, but our 2007-01-16 15:17:27 +00:00
chown.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
chroot.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
clock_gettime.2 Add missing words. 2008-02-25 13:03:18 +00:00
close.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
connect.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
dup.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
execve.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
extattr_get_file.2 Update this manual page to describe the extattr_list_file() and the 2008-01-29 18:15:38 +00:00
fcntl.2 Add the new kernel-mode NFS Lock Manager. To use it instead of the 2008-03-26 15:23:12 +00:00
fhopen.2 Use 'manual page' instead of 'man page' for consistency. 2005-06-30 13:18:15 +00:00
flock.2 Xref flopen.3 which references this manual page. 2008-01-22 15:56:48 +00:00
fork.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
fsync.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
ftruncate.c Change the C wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate to 2007-07-04 23:27:38 +00:00
getdirentries.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getdtablesize.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getfh.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getfsstat.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getgid.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getgroups.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getitimer.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getlogin.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getpeername.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getpgrp.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getpid.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getpriority.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getrlimit.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getrusage.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getsid.2 mdoc(7) police: Tidy up the syscall language. 2002-12-18 09:22:32 +00:00
getsockname.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getsockopt.2 Wordsmithery. 2007-03-09 19:43:42 +00:00
gettimeofday.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getuid.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
intro.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
ioctl.2 Take a sentence into the present by removing a reference to FreeBSD 3.0. 2007-07-14 19:23:29 +00:00
issetugid.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
jail.2 Fixed the misplaced $FreeBSD$. 2005-02-09 18:07:17 +00:00
kenv.2 Use 'manual page' instead of 'man page' for consistency. 2005-06-30 13:18:15 +00:00
kill.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
kldfind.2 mdoc(7) police: Tidy up the syscall language. 2002-12-18 09:22:32 +00:00
kldfirstmod.2 mdoc(7) police: Tidy up the syscall language. 2002-12-18 09:22:32 +00:00
kldload.2 Document that kldload(2) can also return EEXIST. 2003-06-03 12:29:34 +00:00
kldnext.2 Markup fixes. 2006-09-17 21:27:35 +00:00
kldstat.2 Add a BUGS section to note that mount/chroot changes since 2007-10-22 21:49:39 +00:00
kldsym.2 mdoc(7) police: "The .Fa argument.". 2002-12-19 09:40:28 +00:00
kldunload.2 Fix bugs in previous revision (missing comma, misspelled syscall name). 2008-03-13 10:33:24 +00:00
kqueue.2 We've been able to support EVFILT_VNODE filtering on non-UFS 2007-09-07 13:10:09 +00:00
kse.2 New sentence -> new line. While here, fix apostrophe abuse. 2007-02-14 07:38:39 +00:00
ktrace.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
link.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
lio_listio.2 Add missing word "returns." 2006-10-07 05:13:32 +00:00
listen.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
lseek.2 Bump date. 2007-04-05 21:17:52 +00:00
lseek.c Change the C wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate to 2007-07-04 23:27:38 +00:00
madvise.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
Makefile.inc - Remove kse syscall symbols and man pages. 2008-03-12 10:12:22 +00:00
mincore.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
minherit.2 Bump manpage date, missed during the last change. 2007-10-30 15:28:43 +00:00
mkdir.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
mkfifo.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
mknod.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
mlock.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
mlockall.2 Fixed markup. 2004-07-03 23:14:34 +00:00
mmap.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
mmap.c Change the C wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate to 2007-07-04 23:27:38 +00:00
modfind.2 mdoc(7) police: Tidy up the syscall language. 2002-12-18 09:22:32 +00:00
modnext.2 Expand *n't contractions. 2005-02-13 22:25:33 +00:00
modstat.2 Catch up with the code. 2007-06-13 19:22:29 +00:00
mount.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
mprotect.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
mq_close.2 Use the easily-greppable copyright notice template from 2008-02-29 17:48:25 +00:00
mq_getattr.2 Use the easily-greppable copyright notice template from 2008-02-29 17:48:25 +00:00
mq_notify.2 Use the easily-greppable copyright notice template from 2008-02-29 17:48:25 +00:00
mq_open.2 Use the easily-greppable copyright notice template from 2008-02-29 17:48:25 +00:00
mq_receive.2 Use the easily-greppable copyright notice template from 2008-02-29 17:48:25 +00:00
mq_send.2 Use the easily-greppable copyright notice template from 2008-02-29 17:48:25 +00:00
mq_setattr.2 Use the easily-greppable copyright notice template from 2008-02-29 17:48:25 +00:00
msync.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
munmap.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
nanosleep.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
nfssvc.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
ntp_adjtime.2 Use better manuals for these ntp system calls. These were replaced by 2007-09-15 14:33:55 +00:00
open.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
pathconf.2 Bump date. 2007-04-05 21:17:52 +00:00
pipe.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
poll.2 Sort sections. 2005-01-20 09:17:07 +00:00
pread.c Change the C wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate to 2007-07-04 23:27:38 +00:00
profil.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
ptrace.2 Belatedly bump Dd for my recent changes. 2007-04-11 20:31:06 +00:00
pwrite.c Change the C wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate to 2007-07-04 23:27:38 +00:00
quotactl.2 Docment the acceptable values for the id parameter. 2007-02-01 02:31:02 +00:00
read.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
readlink.2 Added the "restrict" type-qualifier to the readlink() prototype. 2008-02-26 20:33:52 +00:00
reboot.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
recv.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
rename.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
revoke.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
rfork.2 Document RFTHREAD 2007-05-14 13:58:54 +00:00
rmdir.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
rtprio.2 Sort sections. 2005-01-20 09:17:07 +00:00
sched_get_priority_max.2 Mechanically kill hard sentence breaks. 2004-07-02 23:52:20 +00:00
sched_setparam.2 Sort SEE ALSO references (in dictionary order, ignoring case). 2004-07-04 20:55:50 +00:00
sched_setscheduler.2 Mechanically kill hard sentence breaks. 2004-07-02 23:52:20 +00:00
sched_yield.2 Mechanically kill hard sentence breaks. 2004-07-02 23:52:20 +00:00
sctp_generic_recvmsg.2 Remove extraneous empty lines, to fix mdoc warnings. 2007-10-30 15:36:40 +00:00
sctp_generic_sendmsg.2 Remove extraneous empty lines, to fix mdoc warnings. 2007-10-30 15:36:40 +00:00
sctp_peeloff.2 Remove extraneous empty lines, to fix mdoc warnings. 2007-10-30 15:36:40 +00:00
select.2 Add note about other systems. 2007-12-19 03:33:13 +00:00
semctl.2 Eliminate macro calls inside literal displays. 2005-01-15 12:28:01 +00:00
semget.2 Expand contractions. 2005-02-15 09:27:00 +00:00
semop.2 Eliminate macro calls inside literal displays. 2005-01-15 12:28:01 +00:00
send.2 Remove the MSG_PEEK flag from the documentation of the send(2) syscall - 2007-04-27 10:28:30 +00:00
sendfile.2 Give sendfile(2) a SF_SYNC flag which makes it wait until all mbufs 2008-02-03 15:54:41 +00:00
setgroups.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
setpgid.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
setregid.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
setresuid.2 mdoc(7) police: Tidy up the syscall language. 2002-12-18 09:22:32 +00:00
setreuid.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
setsid.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
setuid.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
shm_open.2 Add a new file descriptor type for IPC shared memory objects and use it to 2008-01-08 21:58:16 +00:00
shmat.2 Mechanically kill hard sentence breaks. 2004-07-02 23:52:20 +00:00
shmctl.2 Expand contractions. 2005-02-13 23:45:54 +00:00
shmget.2 Mechanically kill hard sentence breaks. 2004-07-02 23:52:20 +00:00
shutdown.2 Fix license. Clause 4 is still required (UCB materiel). 2007-03-07 13:38:11 +00:00
sigaction.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
sigaltstack.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
sigpending.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
sigprocmask.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
sigqueue.2 Markup fixes. 2006-09-17 21:27:35 +00:00
sigreturn.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
sigstack.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
sigsuspend.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
sigwait.2 -mdoc sweep. 2005-11-17 13:00:00 +00:00
sigwaitinfo.2 Sort .Xr by section number. 2005-12-13 13:43:35 +00:00
socket.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
socketpair.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
stack_protector.c Expose __stack_chk_fail_local() so -fstack-protector-all works. 2007-06-05 08:24:34 +00:00
stat.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
statfs.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
swapon.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
Symbol.map Add the new kernel-mode NFS Lock Manager. To use it instead of the 2008-03-26 15:23:12 +00:00
symlink.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
sync.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
sysarch.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
syscall.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
timer_create.2 Fix library names. 2007-06-18 01:50:03 +00:00
timer_delete.2 Fix library names. 2007-06-18 01:50:03 +00:00
timer_settime.2 Fix library names. 2007-06-18 01:50:03 +00:00
truncate.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
truncate.c Change the C wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate to 2007-07-04 23:27:38 +00:00
umask.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
undelete.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
unlink.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
utimes.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
utrace.2 Fixed markup. 2004-07-03 23:14:34 +00:00
uuidgen.2 Fix all the spelling mistakes I could find in the man pages for words 2005-07-31 03:30:48 +00:00
vfork.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
wait.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
write.2 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00