diff options
author | rwatson <rwatson@FreeBSD.org> | 2004-01-23 20:44:26 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2004-01-23 20:44:26 +0000 |
commit | 718d82cd61f270ab6f5586658e3d6204b35e4f64 (patch) | |
tree | cad255f8a586699981e032637c52523632e2f1bc /lib/libc | |
parent | cd37a854086191ba3b4fc2e379dc71b33a8ca0ec (diff) | |
download | FreeBSD-src-718d82cd61f270ab6f5586658e3d6204b35e4f64.zip FreeBSD-src-718d82cd61f270ab6f5586658e3d6204b35e4f64.tar.gz |
Defer the vrele() on a jail's root vnode reference from prison_free()
to a new prison_complete() task run by a task queue. This removes
a requirement for grabbing Giant in crfree(). Embed the 'struct task'
in 'struct prison' so that we don't have to allocate memory from
prison_free() (which means we also defer the FREE()).
With this change, I believe grabbing Giant from crfree() can now be
removed, but need to check the uidinfo code paths.
To avoid header pollution, move the definition of 'struct task'
to _task.h, and recursively include from taskqueue.h and jail.h; much
preferably to all files including jail.h picking up a requirement to
include taskqueue.h.
Bumped into by: sam
Reviewed by: bde, tjr
Diffstat (limited to 'lib/libc')
0 files changed, 0 insertions, 0 deletions