summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordownsj <downsj@openbsd.org>1996-10-27 20:55:05 +0000
committerdownsj <downsj@openbsd.org>1996-10-27 20:55:05 +0000
commit2df972d42d7cbdb6f0f20210a756d9157cf831da (patch)
treebf266426ffb704d3517d55c34c0ebd24d5847083
parentAdded OLF capability. (diff)
downloadwireguard-openbsd-2df972d42d7cbdb6f0f20210a756d9157cf831da.tar.xz
wireguard-openbsd-2df972d42d7cbdb6f0f20210a756d9157cf831da.zip
newfs for disks other than 512bytes/sector, NetBSD pr#2404,
<yasufu-i@is.aist-nara.ac.jp>.
-rw-r--r--sbin/newfs/newfs.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/sbin/newfs/newfs.c b/sbin/newfs/newfs.c
index 6026b34ac50..6755756e3c4 100644
--- a/sbin/newfs/newfs.c
+++ b/sbin/newfs/newfs.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: newfs.c,v 1.3 1996/06/23 14:31:47 deraadt Exp $ */
+/* $OpenBSD: newfs.c,v 1.4 1996/10/27 20:55:05 downsj Exp $ */
/* $NetBSD: newfs.c,v 1.20 1996/05/16 07:13:03 thorpej Exp $ */
/*
@@ -44,7 +44,7 @@ static char copyright[] =
#if 0
static char sccsid[] = "@(#)newfs.c 8.8 (Berkeley) 4/18/94";
#else
-static char rcsid[] = "$OpenBSD: newfs.c,v 1.3 1996/06/23 14:31:47 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: newfs.c,v 1.4 1996/10/27 20:55:05 downsj Exp $";
#endif
#endif /* not lint */
@@ -157,9 +157,7 @@ int secpercyl; /* sectors per cylinder */
int trackspares = -1; /* spare sectors per track */
int cylspares = -1; /* spare sectors per cylinder */
int sectorsize; /* bytes/sector */
-#ifdef tahoe
int realsectorsize; /* bytes/sector in hardware */
-#endif
int rpm; /* revolutions/minute of drive */
int interleave; /* hardware sector interleave */
int trackskew = -1; /* sector 0 skew, per track */
@@ -525,9 +523,8 @@ havelabel:
sbsize = lp->d_sbsize;
#endif
oldpartition = *pp;
-#ifdef tahoe
realsectorsize = sectorsize;
- if (sectorsize != DEV_BSIZE) { /* XXX */
+ if (sectorsize < DEV_BSIZE) {
int secperblk = DEV_BSIZE / sectorsize;
sectorsize = DEV_BSIZE;
@@ -536,13 +533,21 @@ havelabel:
secpercyl /= secperblk;
fssize /= secperblk;
pp->p_size /= secperblk;
+ } else if (sectorsize > DEV_BSIZE) {
+ int blkpersec = sectorsize / DEV_BSIZE;
+
+ sectorsize = DEV_BSIZE;
+ nsectors *= blkpersec;
+ nphyssectors *= blkpersec;
+ secpercyl *= blkpersec;
+ fssize *= blkpersec;
+ pp->p_size *= blkpersec;
}
-#endif
mkfs(pp, special, fsi, fso);
-#ifdef tahoe
- if (realsectorsize != DEV_BSIZE)
+ if (realsectorsize < DEV_BSIZE)
pp->p_size *= DEV_BSIZE / realsectorsize;
-#endif
+ else if (realsectorsize > DEV_BSIZE)
+ pp->p_size /= realsectorsize / DEV_BSIZE;
if (!Nflag && memcmp(pp, &oldpartition, sizeof(oldpartition)))
rewritelabel(special, fso, lp);
if (!Nflag)