Subject: Re: fsck and others die with Floating Point exception
To: None <kevin@spef8.spef.syr.ge.com>
From: Ken Nakata <kenn@romulus.rutgers.edu>
List: macbsd-general
Date: 03/11/1995 14:26:46
   Date: Fri, 10 Mar 1995 19:10:08 +0500
   From: kevin@spef8.spef.syr.ge.com (Kevin Wilson 315-456-1404)

   Just an observation, from the sounds of this and other notes going back as
   much as a year, many of the people having problems with disk drives have
   large drives (1.0 GB or more).

I appended output of disklabel for my drives to this message.  One of them
is a 1G drive.

   The two prevelent problems appear to be:
[...]
   2) From the recent comments, too large a partion comming before the UNIX
   partions.

   The point:  How does Net(Mac)BSD deal with partions?
   If ..BSD reads a partion table then keeps track of where a partion is
   via number of bytes from start of sector 0 and uses signed 32 bit
   arithmetic, then ..BSD will get confused as soon as any part of an
   access exceeds 2 GBytes.

This is too brain-damaged a scheme to believe that MacBSD employs (I
just haven't taken a look at the actual code).  We have 64-bit file
size, after all.  Besides, it does happen on drives of sizes under
2Gig.  1GB is 2^21 512-byte blocks (=hardware sectors), or 2^17
8k-byte blocks (=usual UFS blocks), and none of them seem to be a
boundary causing integer overflow (let's not forget I have a 700M+
partition which contains more than 2^16 8k-byte blocks).

Just my 2 Japanese yen

Ken
-------------------------------------
# /dev/rsd0c:
type: unknown
disk: 
label: 
flags:
bytes/sector: 512
sectors/track: 77
tracks/cylinder: 15
sectors/cylinder: 1155
cylinders: 1819
rpm: 0
interleave: 0
trackskew: 0
cylinderskew: 0
headswitch: 0		# milliseconds
track-to-track seek: 0	# milliseconds
drivedata: 0 

8 partitions:
#        size   offset    fstype   [fsize bsize   cpg]
  a:   443520    40425    4.2BSD        0     0     0 	# (Cyl.   35 - 418)
  b:    64680   483945      swap                    	# (Cyl.  419 - 474)
  c:  2117025        0   unknown                    	# (Cyl.    0 - 1832*)
  d:    16080  2100945   unknown                    	# (Cyl. 1819 - 1832*)
  e:    40281      144       HFS                    	# (Cyl.    0*- 34*)
  g:  1552320   548625    4.2BSD        0     0     0 	# (Cyl.  475 - 1818)

# /dev/rsd1c:
type: unknown
disk: 
label: 
flags:
bytes/sector: 512
sectors/track: 96
tracks/cylinder: 4
sectors/cylinder: 384
cylinders: 2740
rpm: 0
interleave: 0
trackskew: 0
cylinderskew: 0
headswitch: 0		# milliseconds
track-to-track seek: 0	# milliseconds
drivedata: 0 

8 partitions:
#        size   offset    fstype   [fsize bsize   cpg]
  a:   645120   407040    4.2BSD        0     0     0 	# (Cyl. 1060 - 2739)
  b:    82944   324096      swap                    	# (Cyl.  844 - 1059)
  c:  1057616        0   unknown                    	# (Cyl.    0 - 2754*)
  d:     5456  1052160       HFS                    	# (Cyl. 2740 - 2754*)
  e:   323952      144       HFS                    	# (Cyl.    0*- 843*)