vfs_subr.c (108399) | vfs_subr.c (109623) |
---|---|
1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 | 1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 |
39 * $FreeBSD: head/sys/kern/vfs_subr.c 108399 2002-12-29 18:30:49Z iedowse $ | 39 * $FreeBSD: head/sys/kern/vfs_subr.c 109623 2003-01-21 08:56:16Z alfred $ |
40 */ 41 42/* 43 * External virtual filesystem routines 44 */ 45#include "opt_ddb.h" 46#include "opt_mac.h" 47 --- 399 unchanged lines hidden (view full) --- 447 448 ASSERT_VI_UNLOCKED(a->a_vp, "VOP_LOCK"); 449 ASSERT_VOP_LOCKED(a->a_vp, "VOP_LOCK"); 450} 451 452void 453v_addpollinfo(struct vnode *vp) 454{ | 40 */ 41 42/* 43 * External virtual filesystem routines 44 */ 45#include "opt_ddb.h" 46#include "opt_mac.h" 47 --- 399 unchanged lines hidden (view full) --- 447 448 ASSERT_VI_UNLOCKED(a->a_vp, "VOP_LOCK"); 449 ASSERT_VOP_LOCKED(a->a_vp, "VOP_LOCK"); 450} 451 452void 453v_addpollinfo(struct vnode *vp) 454{ |
455 vp->v_pollinfo = uma_zalloc(vnodepoll_zone, M_WAITOK); | 455 vp->v_pollinfo = uma_zalloc(vnodepoll_zone, 0); |
456 mtx_init(&vp->v_pollinfo->vpi_lock, "vnode pollinfo", NULL, MTX_DEF); 457} 458 459/* 460 * Initialize the vnode management data structures. 461 */ 462static void 463vntblinit(void *dummy __unused) --- 527 unchanged lines hidden (view full) --- 991 lockdestroy(vp->v_vnlock); 992 lockinit(vp->v_vnlock, PVFS, tag, VLKTIMEOUT, LK_NOPAUSE); 993 KASSERT(vp->v_cleanblkroot == NULL, ("cleanblkroot not NULL")); 994 KASSERT(vp->v_dirtyblkroot == NULL, ("dirtyblkroot not NULL")); 995 } else { 996 numvnodes++; 997 mtx_unlock(&vnode_free_list_mtx); 998 | 456 mtx_init(&vp->v_pollinfo->vpi_lock, "vnode pollinfo", NULL, MTX_DEF); 457} 458 459/* 460 * Initialize the vnode management data structures. 461 */ 462static void 463vntblinit(void *dummy __unused) --- 527 unchanged lines hidden (view full) --- 991 lockdestroy(vp->v_vnlock); 992 lockinit(vp->v_vnlock, PVFS, tag, VLKTIMEOUT, LK_NOPAUSE); 993 KASSERT(vp->v_cleanblkroot == NULL, ("cleanblkroot not NULL")); 994 KASSERT(vp->v_dirtyblkroot == NULL, ("dirtyblkroot not NULL")); 995 } else { 996 numvnodes++; 997 mtx_unlock(&vnode_free_list_mtx); 998 |
999 vp = (struct vnode *) uma_zalloc(vnode_zone, M_WAITOK|M_ZERO); | 999 vp = (struct vnode *) uma_zalloc(vnode_zone, M_ZERO); |
1000 mtx_init(&vp->v_interlock, "vnode interlock", NULL, MTX_DEF); 1001 VI_LOCK(vp); 1002 vp->v_dd = vp; 1003 vp->v_vnlock = &vp->v_lock; 1004 lockinit(vp->v_vnlock, PVFS, tag, VLKTIMEOUT, LK_NOPAUSE); 1005 cache_purge(vp); 1006 LIST_INIT(&vp->v_cache_src); 1007 TAILQ_INIT(&vp->v_cache_dst); --- 1925 unchanged lines hidden (view full) --- 2933{ 2934 struct vfsconf *vfsp; 2935 struct xvfsconf *xvfsp; 2936 int cnt, error, i; 2937 2938 cnt = 0; 2939 for (vfsp = vfsconf; vfsp != NULL; vfsp = vfsp->vfc_next) 2940 cnt++; | 1000 mtx_init(&vp->v_interlock, "vnode interlock", NULL, MTX_DEF); 1001 VI_LOCK(vp); 1002 vp->v_dd = vp; 1003 vp->v_vnlock = &vp->v_lock; 1004 lockinit(vp->v_vnlock, PVFS, tag, VLKTIMEOUT, LK_NOPAUSE); 1005 cache_purge(vp); 1006 LIST_INIT(&vp->v_cache_src); 1007 TAILQ_INIT(&vp->v_cache_dst); --- 1925 unchanged lines hidden (view full) --- 2933{ 2934 struct vfsconf *vfsp; 2935 struct xvfsconf *xvfsp; 2936 int cnt, error, i; 2937 2938 cnt = 0; 2939 for (vfsp = vfsconf; vfsp != NULL; vfsp = vfsp->vfc_next) 2940 cnt++; |
2941 xvfsp = malloc(sizeof(struct xvfsconf) * cnt, M_TEMP, M_WAITOK); | 2941 xvfsp = malloc(sizeof(struct xvfsconf) * cnt, M_TEMP, 0); |
2942 /* 2943 * Handle the race that we will have here when struct vfsconf 2944 * will be locked down by using both cnt and checking vfc_next 2945 * against NULL to determine the end of the loop. The race will 2946 * happen because we will have to unlock before calling malloc(). 2947 * We are protected by Giant for now. 2948 */ 2949 i = 0; --- 96 unchanged lines hidden (view full) --- 3046 */ 3047 req->lock = 0; 3048 len = (numvnodes + KINFO_VNODESLOP) * sizeof *xvn; 3049 if (!req->oldptr) 3050 /* Make an estimate */ 3051 return (SYSCTL_OUT(req, 0, len)); 3052 3053 sysctl_wire_old_buffer(req, 0); | 2942 /* 2943 * Handle the race that we will have here when struct vfsconf 2944 * will be locked down by using both cnt and checking vfc_next 2945 * against NULL to determine the end of the loop. The race will 2946 * happen because we will have to unlock before calling malloc(). 2947 * We are protected by Giant for now. 2948 */ 2949 i = 0; --- 96 unchanged lines hidden (view full) --- 3046 */ 3047 req->lock = 0; 3048 len = (numvnodes + KINFO_VNODESLOP) * sizeof *xvn; 3049 if (!req->oldptr) 3050 /* Make an estimate */ 3051 return (SYSCTL_OUT(req, 0, len)); 3052 3053 sysctl_wire_old_buffer(req, 0); |
3054 xvn = malloc(len, M_TEMP, M_ZERO | M_WAITOK); | 3054 xvn = malloc(len, M_TEMP, M_ZERO | 0); |
3055 n = 0; 3056 mtx_lock(&mountlist_mtx); 3057 TAILQ_FOREACH(mp, &mountlist, mnt_list) { 3058 if (vfs_busy(mp, LK_NOWAIT, &mountlist_mtx, td)) 3059 continue; 3060 mtx_lock(&mntvnode_mtx); 3061 TAILQ_FOREACH(vp, &mp->mnt_nvnodelist, v_nmntvnodes) { 3062 if (n == len) --- 758 unchanged lines hidden --- | 3055 n = 0; 3056 mtx_lock(&mountlist_mtx); 3057 TAILQ_FOREACH(mp, &mountlist, mnt_list) { 3058 if (vfs_busy(mp, LK_NOWAIT, &mountlist_mtx, td)) 3059 continue; 3060 mtx_lock(&mntvnode_mtx); 3061 TAILQ_FOREACH(vp, &mp->mnt_nvnodelist, v_nmntvnodes) { 3062 if (n == len) --- 758 unchanged lines hidden --- |