Deleted Added
full compact
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 ---