Deleted Added
full compact
ext2_vfsops.c (66378) ext2_vfsops.c (66615)
1/*
2 * modified for EXT2FS support in Lites 1.1
3 *
4 * Aug 1995, Godmar Back (gback@cs.utah.edu)
5 * University of Utah, Department of Computer Science
6 */
7/*
8 * Copyright (c) 1989, 1991, 1993, 1994

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

32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 *
39 * @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94
1/*
2 * modified for EXT2FS support in Lites 1.1
3 *
4 * Aug 1995, Godmar Back (gback@cs.utah.edu)
5 * University of Utah, Department of Computer Science
6 */
7/*
8 * Copyright (c) 1989, 1991, 1993, 1994

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

32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 *
39 * @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94
40 * $FreeBSD: head/sys/gnu/fs/ext2fs/ext2_vfsops.c 66378 2000-09-26 01:31:46Z bp $
40 * $FreeBSD: head/sys/gnu/fs/ext2fs/ext2_vfsops.c 66615 2000-10-04 01:29:17Z jasone $
41 */
42
43#include "opt_quota.h"
44
45#include <sys/param.h>
46#include <sys/systm.h>
47#include <sys/namei.h>
48#include <sys/proc.h>
49#include <sys/kernel.h>
50#include <sys/vnode.h>
51#include <sys/mount.h>
52#include <sys/bio.h>
53#include <sys/buf.h>
54#include <sys/conf.h>
55#include <sys/fcntl.h>
56#include <sys/disklabel.h>
57#include <sys/malloc.h>
58#include <sys/stat.h>
59
41 */
42
43#include "opt_quota.h"
44
45#include <sys/param.h>
46#include <sys/systm.h>
47#include <sys/namei.h>
48#include <sys/proc.h>
49#include <sys/kernel.h>
50#include <sys/vnode.h>
51#include <sys/mount.h>
52#include <sys/bio.h>
53#include <sys/buf.h>
54#include <sys/conf.h>
55#include <sys/fcntl.h>
56#include <sys/disklabel.h>
57#include <sys/malloc.h>
58#include <sys/stat.h>
59
60#include <machine/mutex.h>
61
60#include <ufs/ufs/extattr.h>
61#include <ufs/ufs/quota.h>
62#include <ufs/ufs/ufsmount.h>
63#include <ufs/ufs/inode.h>
64#include <ufs/ufs/ufs_extern.h>
65
66
67#include <gnu/ext2fs/fs.h>

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

570 /*
571 * Step 4: invalidate all inactive vnodes.
572 */
573 if (vrecycle(vp, &mntvnode_slock, p))
574 goto loop;
575 /*
576 * Step 5: invalidate all cached file data.
577 */
62#include <ufs/ufs/extattr.h>
63#include <ufs/ufs/quota.h>
64#include <ufs/ufs/ufsmount.h>
65#include <ufs/ufs/inode.h>
66#include <ufs/ufs/ufs_extern.h>
67
68
69#include <gnu/ext2fs/fs.h>

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

572 /*
573 * Step 4: invalidate all inactive vnodes.
574 */
575 if (vrecycle(vp, &mntvnode_slock, p))
576 goto loop;
577 /*
578 * Step 5: invalidate all cached file data.
579 */
578 simple_lock(&vp->v_interlock);
580 mtx_enter(&vp->v_interlock, MTX_DEF);
579 simple_unlock(&mntvnode_slock);
580 if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, p)) {
581 goto loop;
582 }
583 if (vinvalbuf(vp, 0, cred, p, 0, 0))
584 panic("ext2_reload: dirty2");
585 /*
586 * Step 6: re-read inode data for all active vnodes.

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

917loop:
918 for (vp = mp->mnt_vnodelist.lh_first; vp != NULL; vp = nvp) {
919 /*
920 * If the vnode that we are about to sync is no longer
921 * associated with this mount point, start over.
922 */
923 if (vp->v_mount != mp)
924 goto loop;
581 simple_unlock(&mntvnode_slock);
582 if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, p)) {
583 goto loop;
584 }
585 if (vinvalbuf(vp, 0, cred, p, 0, 0))
586 panic("ext2_reload: dirty2");
587 /*
588 * Step 6: re-read inode data for all active vnodes.

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

919loop:
920 for (vp = mp->mnt_vnodelist.lh_first; vp != NULL; vp = nvp) {
921 /*
922 * If the vnode that we are about to sync is no longer
923 * associated with this mount point, start over.
924 */
925 if (vp->v_mount != mp)
926 goto loop;
925 simple_lock(&vp->v_interlock);
927 mtx_enter(&vp->v_interlock, MTX_DEF);
926 nvp = vp->v_mntvnodes.le_next;
927 ip = VTOI(vp);
928 if (vp->v_type == VNON ||
929 ((ip->i_flag &
930 (IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 &&
931 (TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY))) {
928 nvp = vp->v_mntvnodes.le_next;
929 ip = VTOI(vp);
930 if (vp->v_type == VNON ||
931 ((ip->i_flag &
932 (IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 &&
933 (TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY))) {
932 simple_unlock(&vp->v_interlock);
934 mtx_exit(&vp->v_interlock, MTX_DEF);
933 continue;
934 }
935 simple_unlock(&mntvnode_slock);
936 error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, p);
937 if (error) {
938 simple_lock(&mntvnode_slock);
939 if (error == ENOENT)
940 goto loop;

--- 258 unchanged lines hidden ---
935 continue;
936 }
937 simple_unlock(&mntvnode_slock);
938 error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, p);
939 if (error) {
940 simple_lock(&mntvnode_slock);
941 if (error == ENOENT)
942 goto loop;

--- 258 unchanged lines hidden ---