Date: Fri, 23 Jan 2004 12:44:27 -0800 (PST) From: Robert Watson <rwatson@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/kern kern_jail.c src/sys/sys _task.h jail.h taskqueue.h Message-ID: <200401232044.i0NKiRmu095151@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
rwatson 2004/01/23 12:44:27 PST
FreeBSD src repository
Modified files:
sys/kern kern_jail.c
sys/sys jail.h taskqueue.h
Added files:
sys/sys _task.h
Log:
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
Revision Changes Path
1.35 +22 -6 src/sys/kern/kern_jail.c
1.1 +54 -0 src/sys/sys/_task.h (new)
1.19 +3 -1 src/sys/sys/jail.h
1.10 +1 -16 src/sys/sys/taskqueue.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200401232044.i0NKiRmu095151>
