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: