--- msdosfs_vfsops.c.orig Mon Apr 10 04:32:37 2000 +++ msdosfs_vfsops.c Sun Feb 11 17:01:51 2001 @@ -50,8 +50,4 @@ #include "opt_msdosfs.h" - -/* - * System include files. - */ #include #include @@ -62,13 +58,11 @@ #include #include +#include #include #include #include #include /* defines ALLPERMS */ -#include +#include -/* - * MSDOSFS include files. - */ #include #include @@ -78,4 +72,6 @@ #include +#define MSDOSFS_DFLTBSIZE 4096 + #if 1 /*def PC98*/ /* @@ -181,6 +177,5 @@ panic("msdosfs_mountroot: can't setup rootvp"); - mp = malloc((u_long)sizeof(struct mount), M_MOUNT, M_WAITOK); - bzero((char *)mp, (u_long)sizeof(struct mount)); + mp = malloc((u_long)sizeof(struct mount), M_MOUNT, M_WAITOK | M_ZERO); mp->mnt_op = &msdosfs_vfsops; mp->mnt_flag = 0; @@ -469,6 +464,5 @@ #endif - pmp = malloc(sizeof *pmp, M_MSDOSFSMNT, M_WAITOK); - bzero((caddr_t)pmp, sizeof *pmp); + pmp = malloc(sizeof *pmp, M_MSDOSFSMNT, M_WAITOK | M_ZERO); pmp->pm_mountp = mp; @@ -636,5 +630,5 @@ pmp->pm_fatblocksize = 3 * pmp->pm_BytesPerSec; else - pmp->pm_fatblocksize = DFLTBSIZE; + pmp->pm_fatblocksize = MSDOSFS_DFLTBSIZE; pmp->pm_fatblocksec = pmp->pm_fatblocksize / DEV_BSIZE; @@ -730,5 +724,5 @@ mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum; mp->mnt_flag |= MNT_LOCAL; - devvp->v_specmountpoint = mp; + devvp->v_rdev->si_mountpoint = mp; return 0; @@ -766,5 +760,5 @@ return error; pmp = VFSTOMSDOSFS(mp); - pmp->pm_devvp->v_specmountpoint = NULL; + pmp->pm_devvp->v_rdev->si_mountpoint = NULL; #ifdef MSDOSFS_DEBUG { @@ -777,5 +771,5 @@ vp->v_id, vp->v_mount, vp->v_op); printf("freef %p, freeb %p, mount %p\n", - vp->v_freelist.tqe_next, vp->v_freelist.tqe_prev, + TAILQ_NEXT(vp, v_freelist), vp->v_freelist.tqe_prev, vp->v_mount); printf("cleanblkhd %p, dirtyblkhd %p, numoutput %ld, type %d\n", @@ -870,7 +864,7 @@ * Write back each (modified) denode. */ - simple_lock(&mntvnode_slock); + mtx_lock(&mntvnode_mtx); loop: - for (vp = mp->mnt_vnodelist.lh_first; vp != NULL; vp = nvp) { + for (vp = LIST_FIRST(&mp->mnt_vnodelist); vp != NULL; vp = nvp) { /* * If the vnode that we are about to sync is no longer @@ -880,6 +874,6 @@ goto loop; - simple_lock(&vp->v_interlock); - nvp = vp->v_mntvnodes.le_next; + mtx_lock(&vp->v_interlock); + nvp = LIST_NEXT(vp, v_mntvnodes); dep = VTODE(vp); if (vp->v_type == VNON || @@ -887,11 +881,11 @@ (DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0 && (TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY))) { - simple_unlock(&vp->v_interlock); + mtx_unlock(&vp->v_interlock); continue; } - simple_unlock(&mntvnode_slock); + mtx_unlock(&mntvnode_mtx); error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, p); if (error) { - simple_lock(&mntvnode_slock); + mtx_lock(&mntvnode_mtx); if (error == ENOENT) goto loop; @@ -903,7 +897,7 @@ VOP_UNLOCK(vp, 0, p); vrele(vp); - simple_lock(&mntvnode_slock); + mtx_lock(&mntvnode_mtx); } - simple_unlock(&mntvnode_slock); + mtx_unlock(&mntvnode_mtx); /* @@ -988,7 +982,7 @@ msdosfs_vptofh, msdosfs_init, - vfs_stduninit, + msdosfs_uninit, vfs_stdextattrctl, }; -VFS_SET(msdosfs_vfsops, msdos, 0); +VFS_SET(msdosfs_vfsops, msdos_ja, 0);