Deleted Added
full compact
vfs_subr.c (53900) vfs_subr.c (54444)
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 53900 1999-11-29 22:25:36Z dillon $
39 * $FreeBSD: head/sys/kern/vfs_subr.c 54444 1999-12-11 16:13:02Z eivind $
40 */
41
42/*
43 * External virtual filesystem routines
44 */
45#include "opt_ddb.h"
46
47#include <sys/param.h>

--- 937 unchanged lines hidden (view full) ---

985 s = splbio();
986 slp = &syncer_workitem_pending[syncer_delayno];
987 syncer_delayno += 1;
988 if (syncer_delayno == syncer_maxdelay)
989 syncer_delayno = 0;
990 splx(s);
991
992 while ((vp = LIST_FIRST(slp)) != NULL) {
40 */
41
42/*
43 * External virtual filesystem routines
44 */
45#include "opt_ddb.h"
46
47#include <sys/param.h>

--- 937 unchanged lines hidden (view full) ---

985 s = splbio();
986 slp = &syncer_workitem_pending[syncer_delayno];
987 syncer_delayno += 1;
988 if (syncer_delayno == syncer_maxdelay)
989 syncer_delayno = 0;
990 splx(s);
991
992 while ((vp = LIST_FIRST(slp)) != NULL) {
993 if (VOP_ISLOCKED(vp) == 0) {
993 if (VOP_ISLOCKED(vp, NULL) == 0) {
994 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
995 (void) VOP_FSYNC(vp, p->p_ucred, MNT_LAZY, p);
996 VOP_UNLOCK(vp, 0, p);
997 }
998 s = splbio();
999 if (LIST_FIRST(slp) == vp) {
1000 /*
1001 * Note: v_tag VT_VFS vps can remain on the

--- 955 unchanged lines hidden (view full) ---

1957 printf("Locked vnodes\n");
1958 simple_lock(&mountlist_slock);
1959 for (mp = TAILQ_FIRST(&mountlist); mp != NULL; mp = nmp) {
1960 if (vfs_busy(mp, LK_NOWAIT, &mountlist_slock, p)) {
1961 nmp = TAILQ_NEXT(mp, mnt_list);
1962 continue;
1963 }
1964 LIST_FOREACH(vp, &mp->mnt_vnodelist, v_mntvnodes) {
994 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
995 (void) VOP_FSYNC(vp, p->p_ucred, MNT_LAZY, p);
996 VOP_UNLOCK(vp, 0, p);
997 }
998 s = splbio();
999 if (LIST_FIRST(slp) == vp) {
1000 /*
1001 * Note: v_tag VT_VFS vps can remain on the

--- 955 unchanged lines hidden (view full) ---

1957 printf("Locked vnodes\n");
1958 simple_lock(&mountlist_slock);
1959 for (mp = TAILQ_FIRST(&mountlist); mp != NULL; mp = nmp) {
1960 if (vfs_busy(mp, LK_NOWAIT, &mountlist_slock, p)) {
1961 nmp = TAILQ_NEXT(mp, mnt_list);
1962 continue;
1963 }
1964 LIST_FOREACH(vp, &mp->mnt_vnodelist, v_mntvnodes) {
1965 if (VOP_ISLOCKED(vp))
1965 if (VOP_ISLOCKED(vp, NULL))
1966 vprint((char *)0, vp);
1967 }
1968 simple_lock(&mountlist_slock);
1969 nmp = TAILQ_NEXT(mp, mnt_list);
1970 vfs_unbusy(mp, p);
1971 }
1972 simple_unlock(&mountlist_slock);
1973}

--- 471 unchanged lines hidden (view full) ---

2445
2446 if (vp->v_flag & VXLOCK) /* XXX: what if MNT_WAIT? */
2447 continue;
2448
2449 if (flags != MNT_WAIT) {
2450 obj = vp->v_object;
2451 if (obj == NULL || (obj->flags & OBJ_MIGHTBEDIRTY) == 0)
2452 continue;
1966 vprint((char *)0, vp);
1967 }
1968 simple_lock(&mountlist_slock);
1969 nmp = TAILQ_NEXT(mp, mnt_list);
1970 vfs_unbusy(mp, p);
1971 }
1972 simple_unlock(&mountlist_slock);
1973}

--- 471 unchanged lines hidden (view full) ---

2445
2446 if (vp->v_flag & VXLOCK) /* XXX: what if MNT_WAIT? */
2447 continue;
2448
2449 if (flags != MNT_WAIT) {
2450 obj = vp->v_object;
2451 if (obj == NULL || (obj->flags & OBJ_MIGHTBEDIRTY) == 0)
2452 continue;
2453 if (VOP_ISLOCKED(vp))
2453 if (VOP_ISLOCKED(vp, NULL))
2454 continue;
2455 }
2456
2457 simple_lock(&vp->v_interlock);
2458 if (vp->v_object &&
2459 (vp->v_object->flags & OBJ_MIGHTBEDIRTY)) {
2460 if (!vget(vp,
2461 LK_INTERLOCK | LK_EXCLUSIVE | LK_RETRY | LK_NOOBJ, curproc)) {

--- 403 unchanged lines hidden ---
2454 continue;
2455 }
2456
2457 simple_lock(&vp->v_interlock);
2458 if (vp->v_object &&
2459 (vp->v_object->flags & OBJ_MIGHTBEDIRTY)) {
2460 if (!vget(vp,
2461 LK_INTERLOCK | LK_EXCLUSIVE | LK_RETRY | LK_NOOBJ, curproc)) {

--- 403 unchanged lines hidden ---