From 2c72e951b287b35d9742dc7ff8d10ed4942f3690 Mon Sep 17 00:00:00 2001 From: FUJISHIMA Satsuki Date: Tue, 20 Feb 2001 14:01:48 +0000 Subject: [PATCH] update to 20010209 for -CURRENT. --- japanese/msdosfs/Makefile | 9 ++- japanese/msdosfs/patches.5/patch-ac | 109 ++++++++++++++++++++-------- japanese/msdosfs/patches.5/patch-af | 96 ++++++++++++++++-------- japanese/msdosfs/patches.5/patch-ag | 56 ++++---------- 4 files changed, 166 insertions(+), 104 deletions(-) diff --git a/japanese/msdosfs/Makefile b/japanese/msdosfs/Makefile index 14f234cdd8e7..45b942a225d5 100644 --- a/japanese/msdosfs/Makefile +++ b/japanese/msdosfs/Makefile @@ -24,13 +24,14 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/msdosfs.ja .if ${OSVERSION} >= 410001 && ${OSVERSION} < 500000 LAST_UPDATED= 20001027 PATCHDIR= ${MASTERDIR}/patches.4 -.elif ${OSVERSION} >= 500013 -LAST_UPDATED= 20001022 +.elif ${OSVERSION} >= 500016 +# runs only after 9th Feb 2001 world +LAST_UPDATED= 20010209 PATCHDIR= ${MASTERDIR}/patches.5 NO_PACKAGE= "to avoid crashing a machine when try to install incorrect version" .else -LAST_UPDATED= 20001007 -BROKEN= "It may not work with your FreeBSD version (but I'm not sure)" +LAST_UPDATED= 20001022 +BROKEN= "Supports up-to-date -CURRENT only" .endif post-extract: diff --git a/japanese/msdosfs/patches.5/patch-ac b/japanese/msdosfs/patches.5/patch-ac index 2c869abeb175..2154d92f86a3 100644 --- a/japanese/msdosfs/patches.5/patch-ac +++ b/japanese/msdosfs/patches.5/patch-ac @@ -1,7 +1,6 @@ --- msdosfs_denode.c.orig Mon Apr 10 04:32:36 2000 -+++ msdosfs_denode.c Sun Oct 22 23:52:20 2000 -@@ -50,24 +50,21 @@ - ++++ msdosfs_denode.c Sun Feb 11 16:59:48 2001 +@@ -51,7 +51,4 @@ #include "opt_msdosfs.h" -/* @@ -9,13 +8,13 @@ - */ #include #include - #include - #include +@@ -60,13 +57,12 @@ #include #include +#include #include #include ++#include #include #include @@ -23,15 +22,25 @@ -/* - * MSDOSFS include files. - */ -+#include -+ #include #include - #include -@@ -117,6 +114,16 @@ - return (0); - } +@@ -81,7 +77,5 @@ + #define DEHASH(dev, dcl, doff) (dehashtbl[(minor(dev) + (dcl) + (doff) / \ + sizeof(struct direntry)) & dehash]) +-#ifndef NULL_SIMPLELOCKS +-static struct simplelock dehash_slock; +-#endif ++static struct mtx dehash_mtx; + union _qcvt { +@@ -114,5 +108,16 @@ + { + dehashtbl = hashinit(desiredvnodes/2, M_MSDOSFSMNT, &dehash); +- simple_lock_init(&dehash_slock); ++ mtx_init(&dehash_mtx, "msdosfs dehash", MTX_DEF); ++ return (0); ++} ++ +int +msdosfs_uninit(vfsp) + struct vfsconf *vfsp; @@ -39,23 +48,61 @@ + + if (dehashtbl) + free(dehashtbl, M_MSDOSFSMNT); -+ return (0); -+} -+ - static struct denode * - msdosfs_hashget(dev, dirclust, diroff) - dev_t dev; -@@ -135,7 +142,7 @@ - && dev == dep->de_dev ++ mtx_destroy(&dehash_mtx); + return (0); + } +@@ -129,5 +134,5 @@ + + loop: +- simple_lock(&dehash_slock); ++ mtx_lock(&dehash_mtx); + for (dep = DEHASH(dev, dirclust, diroff); dep; dep = dep->de_next) { + if (dirclust == dep->de_dirclust +@@ -136,6 +141,6 @@ && dep->de_refcnt != 0) { vp = DETOV(dep); - simple_lock(&vp->v_interlock); -+ mtx_enter(&vp->v_interlock, MTX_DEF); - simple_unlock(&dehash_slock); +- simple_unlock(&dehash_slock); ++ mtx_lock(&vp->v_interlock); ++ mtx_unlock(&dehash_mtx); if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, p)) goto loop; -@@ -259,7 +266,8 @@ - return error; +@@ -143,5 +148,5 @@ + } + } +- simple_unlock(&dehash_slock); ++ mtx_unlock(&dehash_mtx); + return (NULL); + } +@@ -153,5 +158,5 @@ + struct denode **depp, *deq; + +- simple_lock(&dehash_slock); ++ mtx_lock(&dehash_mtx); + depp = &DEHASH(dep->de_dev, dep->de_dirclust, dep->de_diroffset); + deq = *depp; +@@ -161,5 +166,5 @@ + dep->de_prev = depp; + *depp = dep; +- simple_unlock(&dehash_slock); ++ mtx_unlock(&dehash_mtx); + } + +@@ -170,5 +175,5 @@ + struct denode *deq; + +- simple_lock(&dehash_slock); ++ mtx_lock(&dehash_mtx); + deq = dep->de_next; + if (deq) +@@ -179,5 +184,5 @@ + dep->de_prev = NULL; + #endif +- simple_unlock(&dehash_slock); ++ mtx_unlock(&dehash_mtx); + } + +@@ -260,5 +265,6 @@ } bzero((caddr_t)ldep, sizeof *ldep); - lockinit(&ldep->de_lock, PINOD, "denode", 0, 0); @@ -63,21 +110,23 @@ + nvp->v_vnlock = &nvp->v_lock; nvp->v_data = ldep; ldep->de_vnode = nvp; - ldep->de_flag = 0; -@@ -275,7 +283,7 @@ - * of at the start of msdosfs_hashins() so that reinsert() can +@@ -276,5 +282,5 @@ * call msdosfs_hashins() with a locked denode. */ - if (lockmgr(&ldep->de_lock, LK_EXCLUSIVE, (struct simplelock *)0, p)) + if (VOP_LOCK(nvp, LK_EXCLUSIVE, p) != 0) panic("deget: unexpected lock failure"); - /* -@@ -657,6 +665,7 @@ - #if 0 /* XXX */ +@@ -658,4 +664,5 @@ dep->de_flag = 0; #endif + lockdestroy(&vp->v_lock); FREE(dep, M_MSDOSFSNODE); vp->v_data = NULL; - +@@ -716,5 +723,5 @@ + #endif + if (dep->de_Name[0] == SLOT_DELETED) +- vrecycle(vp, (struct simplelock *)0, p); ++ vrecycle(vp, NULL, p); + return (error); + } diff --git a/japanese/msdosfs/patches.5/patch-af b/japanese/msdosfs/patches.5/patch-af index be03b8406e8b..3722184ca5e4 100644 --- a/japanese/msdosfs/patches.5/patch-af +++ b/japanese/msdosfs/patches.5/patch-af @@ -1,7 +1,6 @@ --- msdosfs_vfsops.c.orig Mon Apr 10 04:32:37 2000 -+++ msdosfs_vfsops.c Thu Oct 12 00:38:39 2000 -@@ -49,10 +49,6 @@ - */ ++++ msdosfs_vfsops.c Sun Feb 11 17:01:51 2001 +@@ -50,8 +50,4 @@ #include "opt_msdosfs.h" - @@ -10,9 +9,7 @@ - */ #include #include - #include -@@ -61,15 +57,14 @@ - #include +@@ -62,13 +58,11 @@ #include #include +#include @@ -21,70 +18,109 @@ #include #include /* defines ALLPERMS */ -#include ++#include -/* - * MSDOSFS include files. - */ -+#include -+ #include #include - #include -@@ -77,6 +72,8 @@ - #include +@@ -78,4 +72,6 @@ #include +#define MSDOSFS_DFLTBSIZE 4096 + #if 1 /*def PC98*/ /* - * XXX - The boot signature formatted by NEC PC-98 DOS looks like a -@@ -635,7 +632,7 @@ - if (FAT12(pmp)) +@@ -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; - pmp->pm_bnshift = ffs(DEV_BSIZE) - 1; -@@ -729,7 +726,7 @@ - mp->mnt_stat.f_fsid.val[0] = dev2udev(dev); +@@ -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; - -@@ -765,7 +762,7 @@ - if (error) +@@ -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 { - struct vnode *vp = pmp->pm_devvp; -@@ -879,14 +876,14 @@ - if (vp->v_mount != mp) +@@ -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); -+ mtx_enter(&vp->v_interlock, MTX_DEF); - nvp = vp->v_mntvnodes.le_next; +- 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 || - ((dep->de_flag & +@@ -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_exit(&vp->v_interlock, MTX_DEF); ++ mtx_unlock(&vp->v_interlock); continue; } - simple_unlock(&mntvnode_slock); -@@ -987,8 +984,8 @@ - msdosfs_checkexp, +- 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, diff --git a/japanese/msdosfs/patches.5/patch-ag b/japanese/msdosfs/patches.5/patch-ag index 3831749ebc16..564133de374a 100644 --- a/japanese/msdosfs/patches.5/patch-ag +++ b/japanese/msdosfs/patches.5/patch-ag @@ -1,7 +1,6 @@ --- msdosfs_vnops.c.orig Mon Apr 10 04:32:37 2000 -+++ msdosfs_vnops.c Sun Oct 22 23:53:01 2000 -@@ -50,15 +50,13 @@ - ++++ msdosfs_vnops.c Sun Feb 11 17:00:36 2001 +@@ -51,7 +51,4 @@ #include "opt_msdosfs.h" -/* @@ -9,16 +8,13 @@ - */ #include #include - #include - #include /* defines plimit structure in proc struct */ +@@ -60,4 +57,5 @@ #include #include +#include #include #include - #include -@@ -70,12 +68,10 @@ - +@@ -71,10 +69,8 @@ #include #include -#include @@ -31,24 +27,20 @@ + #include #include - #include -@@ -239,12 +235,12 @@ - struct denode *dep = VTODE(vp); +@@ -240,10 +236,10 @@ struct timespec ts; - simple_lock(&vp->v_interlock); -+ mtx_enter(&vp->v_interlock, MTX_DEF); ++ mtx_lock(&vp->v_interlock); if (vp->v_usecount > 1) { getnanotime(&ts); DETIMES(dep, &ts, &ts, &ts); } - simple_unlock(&vp->v_interlock); -+ mtx_exit(&vp->v_interlock, MTX_DEF); ++ mtx_unlock(&vp->v_interlock); return 0; } - -@@ -260,10 +256,7 @@ - struct vnode *vp = ap->a_vp; +@@ -261,8 +257,5 @@ struct denode *dep = VTODE(ap->a_vp); struct msdosfsmount *pmp = dep->de_pmp; - struct ucred *cred = ap->a_cred; @@ -58,9 +50,7 @@ + mode_t file_mode, mode = ap->a_mode; file_mode = (S_IXUSR|S_IXGRP|S_IXOTH) | (S_IRUSR|S_IRGRP|S_IROTH) | - ((dep->de_Attributes & ATTR_READONLY) ? 0 : (S_IWUSR|S_IWGRP|S_IWOTH)); -@@ -287,43 +280,8 @@ - } +@@ -288,41 +281,6 @@ } - /* User id 0 always gets access. */ @@ -104,9 +94,7 @@ + ap->a_mode, ap->a_cred, NULL)); } - static int -@@ -914,9 +872,7 @@ - } +@@ -915,7 +873,5 @@ /* - * DOS filesystems don't know what links are. But since we already called @@ -115,9 +103,7 @@ + * DOS filesystems don't know what links are. */ static int - msdosfs_link(ap) -@@ -974,11 +930,6 @@ - * +@@ -975,9 +931,4 @@ * On exit: * all denodes should be released - * @@ -127,17 +113,13 @@ - * for each rename done. */ static int - msdosfs_rename(ap) -@@ -1108,7 +1059,6 @@ - VOP_UNLOCK(fvp, 0, p); +@@ -1109,5 +1060,4 @@ if (VTODE(fdvp)->de_StartCluster != VTODE(tdvp)->de_StartCluster) newparent = 1; - vrele(fdvp); if (doingdirectory && newparent) { if (error) /* write access check above */ - goto bad; -@@ -1176,7 +1126,8 @@ - panic("msdosfs_rename: lost from startdir"); +@@ -1177,5 +1127,6 @@ if (!newparent) VOP_UNLOCK(tdvp, 0, p); - (void) relookup(fdvp, &fvp, fcnp); @@ -145,9 +127,7 @@ + vrele(fdvp); if (fvp == NULL) { /* - * From name has disappeared. -@@ -1856,15 +1807,15 @@ - error = pcbmap(dep, bp->b_lblkno, &bp->b_blkno, 0, 0); +@@ -1857,6 +1808,6 @@ if (error) { bp->b_error = error; - bp->b_flags |= B_ERROR; @@ -156,21 +136,17 @@ + bufdone(bp); return (error); } - if ((long)bp->b_blkno == -1) - vfs_bio_clrbuf(bp); +@@ -1865,5 +1816,5 @@ } if (bp->b_blkno == -1) { - biodone(bp); + bufdone(bp); return (0); } - /* -@@ -1889,7 +1840,7 @@ - "tag VT_MSDOSFS, startcluster %lu, dircluster %lu, diroffset %lu ", +@@ -1890,5 +1841,5 @@ dep->de_StartCluster, dep->de_dirclust, dep->de_diroffset); printf(" dev %d, %d", major(dep->de_dev), minor(dep->de_dev)); - lockmgr_printinfo(&dep->de_lock); + lockmgr_printinfo(&ap->a_vp->v_lock); printf("\n"); return (0); - }