From owner-FreeBSD-users-jp@jp.freebsd.org  Wed Apr 12 00:32:47 2000
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id AAA53047;
	Wed, 12 Apr 2000 00:32:47 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from cumulus.ihas.nagoya-u.ac.jp (cumulus.ihas.nagoya-u.ac.jp [133.6.146.164])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id AAA53042
	for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 12 Apr 2000 00:32:47 +0900 (JST)
	(envelope-from taichu@ihas.nagoya-u.ac.jp)
Received: from ihas.nagoya-u.ac.jp (localhost [127.0.0.1])
	by cumulus.ihas.nagoya-u.ac.jp (8.9.3/3.7W) with ESMTP id AAA01186
	for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 12 Apr 2000 00:32:43 +0900 (JST)
Message-Id: <200004111532.AAA01186@cumulus.ihas.nagoya-u.ac.jp>
To: FreeBSD-users-jp@jp.freebsd.org
X-Mailer: MH 6.8.4.JP-3.03
X-URL: http://cloud.ihas.nagoya-u.ac.jp/students/taichu/
In-reply-to: Your message of "Tue, 11 Apr 2000 17:15:44 JST."
             <10004110815.AA00751@mebius.apl.pref.akita.jp>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-2022-jp"
Content-ID: <1183.955467163.1@ihas.nagoya-u.ac.jp>
Content-Transfer-Encoding: 7bit
Date: Wed, 12 Apr 2000 00:32:43 +0900
From: Taichu Tanaka <taichu@ihas.nagoya-u.ac.jp>
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+000315
X-Sequence: FreeBSD-users-jp 51126
Subject: [FreeBSD-users-jp 51126] Re: [Req] od-driver for 4.0R
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: taichu@ihas.nagoya-u.ac.jp

$BEDCf!wL>Bg!&Bg5$?e7w8&$H?=$7$^$9!#(B

On Tue, 11 Apr 2000 17:15:44 JST, Yoshio Funaki wrote:
> $B%$%s%9%H!<%k$7$h$&$H;W$$$^$7$F!"(Bod-driver$B$rC5$7$?$N$G$9$,(B
> 3.3-RELEASE$BMQ$7$+L5$$$h$&$J$N$G!"$H$j$"$($:(B3.3$BMQ$r%O%s%I%Q%C%A$G(B
> 4.0R$B$KE,MQ$7$h$&$H4hD%$C$?$N$G$9$,!"$I$&$d$i(BCAM$B<~$j$,BgI}$K(B
> $B=q$-49$($i$l$F$$$k$h$&$G!"$^$C$?$/;u$,N)$A$^$;$s$G$7$?!#(B
.....

$B;d$bF1$8$h$&$J$3$H$r9M$($F!"F1$8$h$&$J$3$H$r$7$F$$$^$7$?!#(B
PAO3 $B$K4^$^$l$F$$$k(B 3.4-RELEASE $BMQ$N%Q%C%A$r$_$F!"(B
scsi_od.c $B$"$?$j$r?7$7$$(B CAM $B$N%9%?%$%k$K$7$J$1$l$P(B
$B$$$1$J$$$i$7$$!"$H$$$&$H$3$m$G!"$"$-$i$a$F$7$^$$$^$7$?!#(B

> od-driver$B$r(B4.0R$B$G1?MQ$7$F$$$i$C$7$c$kJ}$$$i$C$7$c$$$^$7$?$i(B
> $B%Q%C%A$r8+$;$F$$$?$@$/$+!"(Bdiff$B$r$*Aw$j$$$?$@$1$^$;$s$G$7$g$&$+!#(B
> $BCn$N$$$$$*4j$$$H$OB8$8$^$9$,!"$h$m$7$/$*4j$$$$$?$7$^$9!#(B

$B$G!"Ev:B$N$H$3$m$O(B
     [FreeBSD-users-jp 40351] Re: 640MB MO
$B$K$"$k%Q%C%A$N$h$&$JJQ99$r9T$J$$$^$7$?!#(B
$B$H$j$"$($:!":#$^$G$N(B od-driver $B$G:n@.$7$?(B MO 
(640MB $B$N$b(B) $B$,(B da $B%I%i%$%P$GFI$_=q$-$G$-$k$3$H$O(B
$B3NG'$7$F$$$^$9!#(B
$B!t(B   $B$3$A$i$O(B FreeBSD/alpha $B$G3NG'$7$^$7$?$,!"$3$NJU$O(B
$B!t(B $BF1$8$G$7$g$&!#(B

/usr/src/sys/ufs/ffs/ffs_vfsops.c $B$KBP$9$k!"(B
$B0l1~$N:9J,$r$3$N%a%C%;!<%8$KE:IU$7$F$*$-$^$9!#(B
4.0-RELEASE $B$H!"(B1$B=54V$/$i$$A0$N(B 5.0-CURRENT $B$GE,MQ$G$-$k(B
$B$3$H$O3NG'$7$F$$$^$9!#(B
($B$,!"$3$l$G$$$$$N$+$I$&$+$OM}2r$G$-$F$$$^$;$s(B...$B!#(B)

> $B!t!!L)$+$K=);3$5$s$K4|BT$7$F$?$j$7$F!&!&!&!&(B

$B;d$b(B....$B!#(B
$B$d$O$j!"(Bod-driver $B$NJ}$,2?$+$H;H$$$d$9$$$h$&$K;W$$$^$9!#(B

--
                    $BEDCf(B $BBYCh(B <taichu@ihas.nagoya-u.ac.jp>
                     $BL>8E20Bg3X!&CO5eOG@1M}3X!&Bg5$?e7w7O(B
$B?M$O!"7gE@$r1#$9$?$a$KO.$9$k<jCJ$h$j0J>e$K5v$7$,$?$$7gE@$J$I!"(B
$BLGB?$K$b$C$F$$$J$$$b$N$G$"$k!#(B -- La Rochefoucauld


--- ffs_vfsops.c.orig	Mon Jan 10 21:04:25 2000
+++ ffs_vfsops.c	Sat Apr  1 05:28:13 2000
@@ -35,6 +35,7 @@
  */
 
 #include "opt_quota.h"
+#include "opt_ffs.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -417,7 +418,9 @@
 	struct csum *space;
 	struct buf *bp;
 	struct fs *fs, *newfs;
+#ifndef FFS_COMPAT_XXXXBSD
 	struct partinfo dpart;
+#endif
 	dev_t dev;
 	int i, blks, size, error;
 	int32_t *lp;
@@ -450,10 +453,14 @@
 	/*
 	 * Step 2: re-read superblock from disk.
 	 */
+#ifndef FFS_COMPAT_XXXXBSD
 	if (VOP_IOCTL(devvp, DIOCGPART, (caddr_t)&dpart, FREAD, NOCRED, p) != 0)
 		size = DEV_BSIZE;
 	else
 		size = dpart.disklab->d_secsize;
+#else
+	size = DEV_BSIZE;
+#endif
 	if ((error = bread(devvp, (ufs_daddr_t)(SBOFF/size), SBSIZE, NOCRED,&bp)) != 0)
 		return (error);
 	newfs = (struct fs *)bp->b_data;
@@ -476,6 +483,10 @@
 	brelse(bp);
 	mp->mnt_maxsymlinklen = fs->fs_maxsymlinklen;
 	ffs_oldfscompat(fs);
+#ifdef FFS_COMPAT_XXXXBSD
+	/* XXX bread assumes b_blkno in DEV_BSIZE unit, calculate fsbtodb */
+	fs->fs_fsbtodb = ffs(fs->fs_fsize / DEV_BSIZE) - 1;
+#endif
 
 	/*
 	 * Step 3: re-read summary information from disk.
@@ -561,7 +572,9 @@
 	struct buf *bp;
 	register struct fs *fs;
 	dev_t dev;
+#ifndef FFS_COMPAT_XXXXBSD
 	struct partinfo dpart;
+#endif
 	caddr_t base, space;
 	int error, i, blks, size, ronly;
 	int32_t *lp;
@@ -615,10 +628,14 @@
 	if (mp->mnt_iosize_max > MAXPHYS)
 		mp->mnt_iosize_max = MAXPHYS;
 
+#ifndef FFS_COMPAT_XXXXBSD
 	if (VOP_IOCTL(devvp, DIOCGPART, (caddr_t)&dpart, FREAD, cred, p) != 0)
 		size = DEV_BSIZE;
 	else
 		size = dpart.disklab->d_secsize;
+#else
+	size = DEV_BSIZE;
+#endif
 
 	bp = NULL;
 	ump = NULL;
@@ -651,6 +668,10 @@
 		error = EROFS;          /* needs translation */
 		goto out;
 	}
+#ifdef FFS_COMPAT_XXXXBSD
+	/* XXX bread assumes b_blkno in DEV_BSIZE unit, calculate fsbtodb */
+	fs->fs_fsbtodb = ffs(fs->fs_fsize / DEV_BSIZE) - 1;
+#endif
 	ump = malloc(sizeof *ump, M_UFSMNT, M_WAITOK);
 	bzero((caddr_t)ump, sizeof *ump);
 	ump->um_malloctype = malloctype;
@@ -1275,6 +1296,12 @@
 		lp[0] = tmp;					/* XXX */
 	}							/* XXX */
 	dfs->fs_maxfilesize = mp->um_savedmaxfilesize;		/* XXX */
+
+#ifdef FFS_COMPAT_XXXXBSD
+	/* XXX restore fsbtodb which was modified for fixed b_blkno unit */
+	((struct fs *)bp->b_data)->fs_fsbtodb = ffs(fs->fs_nspf) - 1;
+#endif
+
 	if (waitfor != MNT_WAIT)
 		bawrite(bp);
 	else if ((error = bwrite(bp)) != 0)
