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