aboutsummaryrefslogtreecommitdiff
path: root/japanese/msdosfs
diff options
context:
space:
mode:
authorR. Imura <imura@FreeBSD.org>2000-10-23 16:29:20 +0000
committerR. Imura <imura@FreeBSD.org>2000-10-23 16:29:20 +0000
commit9e7925bfa8d92d09c2ce07168e1badcea13de808 (patch)
tree09e835f9e72ad11e21f6c60c330adaf33586eb68 /japanese/msdosfs
parent9fbd04e5bf4c4fafb72c0e31d6f175f612c9a497 (diff)
downloadports-9e7925bfa8d92d09c2ce07168e1badcea13de808.tar.gz
ports-9e7925bfa8d92d09c2ce07168e1badcea13de808.zip
Notes
Diffstat (limited to 'japanese/msdosfs')
-rw-r--r--japanese/msdosfs/Makefile3
-rw-r--r--japanese/msdosfs/files/revlist8
-rw-r--r--japanese/msdosfs/patches.5/patch-ac20
-rw-r--r--japanese/msdosfs/patches.5/patch-ae83
-rw-r--r--japanese/msdosfs/patches.5/patch-ag30
-rw-r--r--japanese/msdosfs/patches.5/patch-ai10
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 */