From owner-FreeBSD-users-jp@jp.freebsd.org  Sun Oct 18 12:36:09 1998
Received: (from daemon@localhost)
	by jaz.jp.freebsd.org (8.9.1+3.1W/8.7.3) id MAA28047;
	Sun, 18 Oct 1998 12:36:09 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from lain.tenchi.ne.jp (dp1-007.kawagoe.linkclub.or.jp [210.155.115.207])
	by jaz.jp.freebsd.org (8.9.1+3.1W/8.7.3) with ESMTP id MAA28042
	for <FreeBSD-users-jp@jp.freebsd.org>; Sun, 18 Oct 1998 12:36:05 +0900 (JST)
	(envelope-from toshi@tenchi.ne.jp)
Received: (from toshi@localhost)
	by lain.tenchi.ne.jp (8.8.8/3.6Wb) id MAA04281;
	Sun, 18 Oct 1998 12:18:12 +0900 (JST)
Date: Sun, 18 Oct 1998 12:18:12 +0900 (JST)
From: Toshihiko ARAI <toshi@tenchi.ne.jp>
Message-Id: <199810180318.MAA04281@lain.tenchi.ne.jp>
To: FreeBSD-users-jp@jp.freebsd.org
In-Reply-To: <3628B69F.ADE543A4@mtb.biglobe.ne.jp>
References: <19981017151108C.rik@mtb.biglobe.ne.jp>
	<19981017185251D.yoshiaki@kt.rim.or.jp>
	<3628B69F.ADE543A4@mtb.biglobe.ne.jp>
X-Mailer: VM 5.96 (beta) / Mule 2.3 (SUETSUMUHANA) based on 19.28.1
Mime-Version: 1.0 (generated by tm-edit 7.101)
Content-Type: text/plain; charset=ISO-2022-JP
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+980914
X-Sequence: FreeBSD-users-jp 34144
Subject: [FreeBSD-users-jp 34144] Re: msdosfs bug?
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

$B?70f$G$9!#(B

+ [FreeBSD-users-jp 34133] $B$N5-;v$G(B Rikito INAKAZU $B$5$s$O=q$-$^$7$?!#(B

> 2.2-STABLE $B$J$[$&$O$^$@(B 2.2.7 $B$HF1$8$_$?$$$G$9$,!"(B 3.0 $B$G(B
> $BD>$C$F$k$J$i(B 2.2.8 $B$^$G$K$O(B merge $B$5$l$k$s$G$7$g$&!#(B

$B$$$d!"(B3.0 $B$GD>$C$?$N$G$O$J$/$F!"(B-current $B$+$i(B merge $B$9$kCJ3,(B
$B$G$N%_%9$G$9!#(Bread-only -> writable $B$G$NLdBj$O(B #ifdef $B$GJ,$i(B
$B$l$F$$$F!"(B2.2-stable $B7ONs$@$1$K4X78$"$j$^$9!#$^$?!"(B
read-write -> read-only $B$G$O(B vfs $B$^$o$j$N4X?t;EMM$,(B -current 
$B$GJQ99$5$l$?$a!"(B-stable $B$G$OI,MW$J=hM}$,H4$1$F$$$?$N$,860x$G(B
$B$9!#(B

> $B$H$$$&$3$H$G!"(B 2.2.7 $B$K8GM-$NLdBj$C$F$3$H$G?70f$5$s(B patch $BIU$G(B
> Q&A $B$KJ|$C$F$*$-$^$9!#(B

$B$H$$$&$3$H$G(B 2.2-stable $B$G$bD>$C$F$$$J$$$H$$$&$N$,8=>u$G$9$N(B
$B$G(B send-pr $B$7$F$*$-$^$9!#(B

$BG0$N$?$a(B merge $B$,9T$J$o$l$?0J9_$N(B -current $B$G$N=$@5E@$b4^$a(B
$B$?(B patch $B$r:n$jD>$7$^$7$?!#$[$H$s$I$O%3%a%s%H$,$o$j$N(B dammy 
$B$G$9$,!"(Bmsdosfs_vnops.c $B$N(B ip->de_dirclust $B$NItJ,$O0UL#$,(B
$B$"$j$=$&$G$9!#(B

Index: msdosfs_denode.c
===================================================================
RCS file: /usr/tmp/cvsup/cvs/PAO/sys/msdosfs/msdosfs_denode.c,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 msdosfs_denode.c
--- msdosfs_denode.c	1998/07/24 10:22:22	1.1.1.2
+++ msdosfs_denode.c	1998/10/17 06:07:00
@@ -55,7 +55,10 @@
 #include <sys/proc.h>
 #include <sys/buf.h>
 #include <sys/vnode.h>
+
+#ifndef __FreeBSD_version
 #include <sys/kernel.h>		/* defines "time" */
+#endif
 
 #include <vm/vm.h>
 #include <vm/vm_extern.h>
Index: msdosfs_lookup.c
===================================================================
RCS file: /usr/tmp/cvsup/cvs/PAO/sys/msdosfs/msdosfs_lookup.c,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 msdosfs_lookup.c
--- msdosfs_lookup.c	1998/07/24 10:22:25	1.1.1.2
+++ msdosfs_lookup.c	1998/10/17 05:25:25
@@ -942,9 +942,7 @@
 	int error;
 	daddr_t bn;
 	int blsize;
-	u_long boff;
 
-	boff = diroffset & ~pmp->pm_crbomask;
 	blsize = pmp->pm_bpcluster;
 	if (dirclust == MSDOSFSROOT
 	    && de_blk(pmp, diroffset + blsize) > pmp->pm_rootdirsize)
Index: msdosfs_vfsops.c
===================================================================
RCS file: /usr/tmp/cvsup/cvs/PAO/sys/msdosfs/msdosfs_vfsops.c,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 msdosfs_vfsops.c
--- msdosfs_vfsops.c	1998/07/24 10:22:29	1.1.1.3
+++ msdosfs_vfsops.c	1998/10/17 05:44:47
@@ -259,7 +259,14 @@
 			flags = WRITECLOSE;
 			if (mp->mnt_flag & MNT_FORCE)
 				flags |= FORCECLOSE;
+#ifndef __FreeBSD_version
+			if (vfs_busy(mp))
+				return EBUSY;
+#endif
 			error = vflush(mp, NULLVP, flags);
+#ifndef __FreeBSD_version
+			vfs_unbusy(mp);
+#endif
 		}
 		if (!error && (mp->mnt_flag & MNT_RELOAD))
 			/* not yet implemented */
@@ -269,7 +276,7 @@
 #ifdef __FreeBSD_version
 		if ((pmp->pm_flags & MSDOSFSMNT_RONLY) && (mp->mnt_kern_flag & MNTK_WANTRDWR)) {
 #else
-		if ((pmp->pm_flags & MSDOSFSMNT_RONLY) && (mp->mnt_flag & MNT_RDONLY) == 0) {
+		if ((pmp->pm_flags & MSDOSFSMNT_RONLY) && (mp->mnt_flag & MNT_WANTRDWR)) {
 #endif
 			/*
 			 * If upgrade to read-write by non-root, then verify
@@ -1134,4 +1141,8 @@
 	msdosfs_init
 };
 
+#ifdef __FreeBSD_version
+VFS_SET(msdosfs_vfsops, msdos, 0);
+#else
 VFS_SET(msdosfs_vfsops, msdos, MOUNT_MSDOS, 0);
+#endif
Index: msdosfs_vnops.c
===================================================================
RCS file: /usr/tmp/cvsup/cvs/PAO/sys/msdosfs/msdosfs_vnops.c,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 msdosfs_vnops.c
--- msdosfs_vnops.c	1998/07/24 10:22:31	1.1.1.2
+++ msdosfs_vnops.c	1998/10/17 05:50:11
@@ -1521,7 +1523,9 @@
 #endif
 				goto bad;
 			}
-			if (ip->de_dirclust != MSDOSFSROOT)
+			if (ip->de_dirclust == MSDOSFSROOT)
+				ip->de_diroffset = to_diroffset;
+			else
 				ip->de_diroffset = to_diroffset & pmp->pm_crbomask;
 		}
 		reinsert(ip);
@@ -2150,6 +2154,9 @@
 static int
 msdosfs_strategy(ap)
 	struct vop_strategy_args /* {
+#ifdef __FreeBSD_version
+		struct vnode *a_vp;
+#endif
 		struct buf *a_bp;
 	} */ *ap;
 {
@@ -2187,7 +2194,11 @@
 	 */
 	vp = dep->de_devvp;
 	bp->b_dev = vp->v_rdev;
+#ifdef __FreeBSD_version
+	VOP_STRATEGY(vp, bp);
+#else
 	VOCALL(vp->v_op, VOFFSET(vop_strategy), ap);
+#endif
 	return (0);
 }
 
@@ -2200,7 +2211,7 @@
 	struct denode *dep = VTODE(ap->a_vp);
 
 	printf(
-	    "tag VT_MSDOSFS, startcluster %d, dircluster %ld, diroffset %ld ",
+	    "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));
 #ifdef __FreeBSD_version
--
PAO $BF0:nJs9p(B, SUPPORTED.CARDS $BEPO?MQ%"%I%l%9(B <pao-report@clave.gr.jp>
				 $B?70fMxI'(B <clover@air.linkclub.or.jp>
