Revoke reimplementation - primary commit part 1/2.
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 3 Apr 2009 06:38:31 +0000 (23:38 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 3 Apr 2009 06:38:31 +0000 (23:38 -0700)
commitb8477cda8783596a7c765667658de9a94dd368fd
treef73ff4675e0d77698243920891b98fbf4e950a51
parent4d3bda8a3c0d01e229673298ba4d5035ecdbc25b
Revoke reimplementation - primary commit part 1/2.

Rip out and replace the old revoke code.  The old code basically ripped
vnodes out from under the related VFSs, faked close operations, hacked
up ref counts, and generally wreaked havoc on the system.

The new code is not as efficient, but plays a lot nicer with the kernel.
It locates and closes matching file descriptors (replacing the descriptor
with a dummy that just returns an error).  No ref count hacks are needed
and vnodes are no longer unceremoniously canned.

The new revoke code is also capable of revoking any vnode in the system,
device or file.  root, jail root, and chrooted directories cannot be
revoked.

This also fixes an issue with HAMMER getting confused when one of its
vnodes got ripped out from under it by the old revoke.
13 files changed:
sys/kern/kern_descrip.c
sys/kern/tty.c
sys/kern/uipc_usrreq.c
sys/kern/vfs_default.c
sys/kern/vfs_subr.c
sys/kern/vfs_syscalls.c
sys/kern/vfs_vopops.c
sys/sys/file.h
sys/sys/filedesc.h
sys/sys/vfsops.h
sys/sys/vnode.h
sys/vfs/specfs/spec_vnops.c
sys/vfs/union/union_vnops.c