diff options
author | truckman <truckman@FreeBSD.org> | 2002-07-28 19:59:31 +0000 |
---|---|---|
committer | truckman <truckman@FreeBSD.org> | 2002-07-28 19:59:31 +0000 |
commit | b1555a27432152cc7817d0c592bbcebf95fdfd19 (patch) | |
tree | 6dda6f0898c9f15fca929e63e72b3882862e67e1 /sys/kern/vfs_subr.c | |
parent | 5bd1876975f34760da2eea4bfce9c738127d36ca (diff) | |
download | FreeBSD-src-b1555a27432152cc7817d0c592bbcebf95fdfd19.zip FreeBSD-src-b1555a27432152cc7817d0c592bbcebf95fdfd19.tar.gz |
Wire the sysctl output buffer before grabbing any locks to prevent
SYSCTL_OUT() from blocking while locks are held. This should
only be done when it would be inconvenient to make a temporary copy of
the data and defer calling SYSCTL_OUT() until after the locks are
released.
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r-- | sys/kern/vfs_subr.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 4d87718..1684782 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -2652,6 +2652,7 @@ sysctl_vnode(SYSCTL_HANDLER_ARGS) return (SYSCTL_OUT(req, 0, (numvnodes + KINFO_VNODESLOP) * (VPTRSZ + VNODESZ))); + sysctl_wire_old_buffer(req, 0); mtx_lock(&mountlist_mtx); for (mp = TAILQ_FIRST(&mountlist); mp != NULL; mp = nmp) { if (vfs_busy(mp, LK_NOWAIT, &mountlist_mtx, td)) { |