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 --- |