diff options
author | R. Imura <imura@FreeBSD.org> | 2000-10-23 16:29:20 +0000 |
---|---|---|
committer | R. Imura <imura@FreeBSD.org> | 2000-10-23 16:29:20 +0000 |
commit | 9e7925bfa8d92d09c2ce07168e1badcea13de808 (patch) | |
tree | 09e835f9e72ad11e21f6c60c330adaf33586eb68 /japanese/msdosfs | |
parent | 9fbd04e5bf4c4fafb72c0e31d6f175f612c9a497 (diff) | |
download | ports-9e7925bfa8d92d09c2ce07168e1badcea13de808.tar.gz ports-9e7925bfa8d92d09c2ce07168e1badcea13de808.zip |
Notes
Diffstat (limited to 'japanese/msdosfs')
-rw-r--r-- | japanese/msdosfs/Makefile | 3 | ||||
-rw-r--r-- | japanese/msdosfs/files/revlist | 8 | ||||
-rw-r--r-- | japanese/msdosfs/patches.5/patch-ac | 20 | ||||
-rw-r--r-- | japanese/msdosfs/patches.5/patch-ae | 83 | ||||
-rw-r--r-- | japanese/msdosfs/patches.5/patch-ag | 30 | ||||
-rw-r--r-- | japanese/msdosfs/patches.5/patch-ai | 10 |
6 files changed, 138 insertions, 16 deletions
diff --git a/japanese/msdosfs/Makefile b/japanese/msdosfs/Makefile index 701aa02c8521..b140f4d37fe7 100644 --- a/japanese/msdosfs/Makefile +++ b/japanese/msdosfs/Makefile @@ -25,10 +25,11 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/msdosfs.ja LAST_UPDATED= 20001007 PATCHDIR= ${MASTERDIR}/patches.4 .elif ${OSVERSION} >= 500013 -LAST_UPDATED= 20001009 +LAST_UPDATED= 20001022 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)" .endif diff --git a/japanese/msdosfs/files/revlist b/japanese/msdosfs/files/revlist index 18dac3b5e46e..49fd5edda1e5 100644 --- a/japanese/msdosfs/files/revlist +++ b/japanese/msdosfs/files/revlist @@ -7,14 +7,14 @@ This is a table of revisions about this ja-msdosfs. +-------------------+---------------+-----------+ bootsect.h 1.7 1.7 bpb.h 1.7 1.8 - denode.h 1.20 1.20 + denode.h 1.20 1.21 direntry.h 1.15 1.15 fat.h 1.9 1.9 msdosfs_conv.c 1.29 1.29 - msdosfs_denode.c 1.47.2.1 1.50 + msdosfs_denode.c 1.47.2.1 1.51 msdosfs_fat.c 1.23 1.24 - msdosfs_lookup.c 1.30 1.31 + msdosfs_lookup.c 1.30 1.32 msdosfs_vfsops.c 1.60.2.2 1.66 - msdosfs_vnops.c 1.95.2.1 1.104 + msdosfs_vnops.c 1.95.2.1 1.106 msdosfsmount.h 1.20.2.1 1.22 +-------------------+---------------+-----------+ diff --git a/japanese/msdosfs/patches.5/patch-ac b/japanese/msdosfs/patches.5/patch-ac index 0eb6783d3513..2c869abeb175 100644 --- a/japanese/msdosfs/patches.5/patch-ac +++ b/japanese/msdosfs/patches.5/patch-ac @@ -1,5 +1,5 @@ --- msdosfs_denode.c.orig Mon Apr 10 04:32:36 2000 -+++ msdosfs_denode.c Mon Oct 9 23:14:36 2000 ++++ msdosfs_denode.c Sun Oct 22 23:52:20 2000 @@ -50,24 +50,21 @@ #include "opt_msdosfs.h" @@ -54,20 +54,30 @@ simple_unlock(&dehash_slock); if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, p)) goto loop; -@@ -275,7 +282,7 @@ +@@ -259,7 +266,8 @@ + return error; + } + bzero((caddr_t)ldep, sizeof *ldep); +- lockinit(&ldep->de_lock, PINOD, "denode", 0, 0); ++ lockinit(&nvp->v_lock, PINOD, "denode", 0, 0); ++ 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 * call msdosfs_hashins() with a locked denode. */ - if (lockmgr(&ldep->de_lock, LK_EXCLUSIVE, (struct simplelock *)0, p)) -+ if (lockmgr(&ldep->de_lock, LK_EXCLUSIVE, (struct mtx *)0, p)) ++ if (VOP_LOCK(nvp, LK_EXCLUSIVE, p) != 0) panic("deget: unexpected lock failure"); /* -@@ -657,6 +664,7 @@ +@@ -657,6 +665,7 @@ #if 0 /* XXX */ dep->de_flag = 0; #endif -+ lockdestroy(&dep->de_lock); ++ lockdestroy(&vp->v_lock); FREE(dep, M_MSDOSFSNODE); vp->v_data = NULL; diff --git a/japanese/msdosfs/patches.5/patch-ae b/japanese/msdosfs/patches.5/patch-ae index 05df3b631599..fe276badb473 100644 --- a/japanese/msdosfs/patches.5/patch-ae +++ b/japanese/msdosfs/patches.5/patch-ae @@ -1,5 +1,5 @@ --- msdosfs_lookup.c.orig Mon Apr 10 04:39:57 2000 -+++ msdosfs_lookup.c Wed Oct 4 00:43:31 2000 ++++ msdosfs_lookup.c Sun Oct 22 23:52:33 2000 @@ -56,6 +56,7 @@ #include <sys/param.h> #include <sys/systm.h> @@ -8,3 +8,84 @@ #include <sys/buf.h> #include <sys/vnode.h> #include <sys/mount.h> +@@ -124,6 +125,7 @@ + int wincnt = 1; + int chksum = -1; + int olddos = 1; ++ cnp->cn_flags &= ~PDIRUNLOCK; + + #ifdef MSDOSFS_DEBUG + printf("msdosfs_lookup(): looking for %s\n", cnp->cn_nameptr); +@@ -379,8 +381,10 @@ + * information cannot be used. + */ + cnp->cn_flags |= SAVENAME; +- if (!lockparent) ++ if (!lockparent) { + VOP_UNLOCK(vdp, 0, p); ++ cnp->cn_flags |= PDIRUNLOCK; ++ } + return (EJUSTRETURN); + } + /* +@@ -468,8 +472,10 @@ + if (error) + return (error); + *vpp = DETOV(tdp); +- if (!lockparent) ++ if (!lockparent) { + VOP_UNLOCK(vdp, 0, p); ++ cnp->cn_flags |= PDIRUNLOCK; ++ } + return (0); + } + +@@ -499,8 +505,10 @@ + return (error); + *vpp = DETOV(tdp); + cnp->cn_flags |= SAVENAME; +- if (!lockparent) ++ if (!lockparent) { + VOP_UNLOCK(vdp, 0, p); ++ cnp->cn_flags |= PDIRUNLOCK; ++ } + return (0); + } + +@@ -526,15 +534,20 @@ + pdp = vdp; + if (flags & ISDOTDOT) { + VOP_UNLOCK(pdp, 0, p); ++ cnp->cn_flags |= PDIRUNLOCK; + error = deget(pmp, cluster, blkoff, &tdp); + if (error) { + vn_lock(pdp, LK_EXCLUSIVE | LK_RETRY, p); ++ cnp->cn_flags &= ~PDIRUNLOCK; + return (error); + } +- if (lockparent && (flags & ISLASTCN) && +- (error = vn_lock(pdp, LK_EXCLUSIVE, p))) { +- vput(DETOV(tdp)); +- return (error); ++ if (lockparent && (flags & ISLASTCN)) { ++ error = vn_lock(pdp, LK_EXCLUSIVE, p); ++ if (error) { ++ vput(DETOV(tdp)); ++ return (error); ++ } ++ cnp->cn_flags &= ~PDIRUNLOCK; + } + *vpp = DETOV(tdp); + } else if (dp->de_StartCluster == scn && isadir) { +@@ -543,8 +556,10 @@ + } else { + if ((error = deget(pmp, cluster, blkoff, &tdp)) != 0) + return (error); +- if (!lockparent || !(flags & ISLASTCN)) ++ if (!lockparent || !(flags & ISLASTCN)) { + VOP_UNLOCK(pdp, 0, p); ++ cnp->cn_flags |= PDIRUNLOCK; ++ } + *vpp = DETOV(tdp); + } + diff --git a/japanese/msdosfs/patches.5/patch-ag b/japanese/msdosfs/patches.5/patch-ag index 3e820607cbdf..3831749ebc16 100644 --- a/japanese/msdosfs/patches.5/patch-ag +++ b/japanese/msdosfs/patches.5/patch-ag @@ -1,5 +1,5 @@ --- msdosfs_vnops.c.orig Mon Apr 10 04:32:37 2000 -+++ msdosfs_vnops.c Mon Oct 9 23:15:12 2000 ++++ msdosfs_vnops.c Sun Oct 22 23:53:01 2000 @@ -50,15 +50,13 @@ #include "opt_msdosfs.h" @@ -105,7 +105,18 @@ } static int -@@ -974,11 +932,6 @@ +@@ -914,9 +872,7 @@ + } + + /* +- * DOS filesystems don't know what links are. But since we already called +- * msdosfs_lookup() with create and lockparent, the parent is locked so we +- * have to free it before we return the error. ++ * DOS filesystems don't know what links are. + */ + static int + msdosfs_link(ap) +@@ -974,11 +930,6 @@ * * On exit: * all denodes should be released @@ -117,7 +128,7 @@ */ static int msdosfs_rename(ap) -@@ -1108,7 +1061,6 @@ +@@ -1108,7 +1059,6 @@ VOP_UNLOCK(fvp, 0, p); if (VTODE(fdvp)->de_StartCluster != VTODE(tdvp)->de_StartCluster) newparent = 1; @@ -125,7 +136,7 @@ if (doingdirectory && newparent) { if (error) /* write access check above */ goto bad; -@@ -1176,7 +1128,8 @@ +@@ -1176,7 +1126,8 @@ panic("msdosfs_rename: lost from startdir"); if (!newparent) VOP_UNLOCK(tdvp, 0, p); @@ -135,7 +146,7 @@ if (fvp == NULL) { /* * From name has disappeared. -@@ -1856,15 +1809,15 @@ +@@ -1856,15 +1807,15 @@ error = pcbmap(dep, bp->b_lblkno, &bp->b_blkno, 0, 0); if (error) { bp->b_error = error; @@ -154,3 +165,12 @@ return (0); } /* +@@ -1889,7 +1840,7 @@ + "tag VT_MSDOSFS, startcluster %lu, dircluster %lu, diroffset %lu ", + 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); + } diff --git a/japanese/msdosfs/patches.5/patch-ai b/japanese/msdosfs/patches.5/patch-ai new file mode 100644 index 000000000000..cf280129829e --- /dev/null +++ b/japanese/msdosfs/patches.5/patch-ai @@ -0,0 +1,10 @@ +--- denode.h.orig Wed Dec 29 13:54:52 1999 ++++ denode.h Sun Oct 22 23:51:49 2000 +@@ -135,7 +135,6 @@ + * contained within a vnode. + */ + struct denode { +- struct lock de_lock; /* denode lock >Keep this first< */ + struct denode *de_next; /* Hash chain forward */ + struct denode **de_prev; /* Hash chain back */ + struct vnode *de_vnode; /* addr of vnode we are part of */ |