[comp.sys.amiga] Request to Commodore

sterling@dasys1.UUCP (Sterling Brown) (08/28/88)

  I was thinking a while back about the Fast File System not being put on the
  floppies  in AmigaDos 1.3.  It is  my  understanding  that   the  Fast file
  system will  not work  on the  floppies  because  it is  not installed when
  the Amiga boots, and Commodore is  not putting  the FFS  in ROM  because of
  compatibility with the existing file system.  Is this true?

  If this IS true, then I have a suggestion:

  Why not put the FFS in ROM, and if someone wants to access files in the old
  format then they can install the Slow File System for  the device  on which
  they will be accessing the files.  This way people can install the old file
  system on a drive and transferer  everything over  to the  FFS once.   This
  will get  rid of the problem of having a Slow File System boot partition on
  the hard drive, and will make those of us using only floppies happy.

  Comments?  C-A?

\===========================\                   /===========================/
 \ Sterling L. Brown........ \                 /  "When I'm Programming    /
  \                           \               /   MSDOS, I'm thinking     /
   \ Amiga Programmer          \=============/    of Amiga."-I said it.  /
    \  MSDOS Programmer                                                 /
     \================\ `The Human Opperating System' /================/
          A // Serious \     CIS: 71101,616          /Multifinder.status=
        \\ // Amiga     \ USENET: sterling@dasys1   / "don't make me laugh!";
         \\/ Programmer  \=========================/ OS2->bites=Amigas.Dust;

melnik@topaz.rutgers.edu (Ofer Melnik) (08/29/88)

In article <6123@dasys1.UUCP> sterling@dasys1.UUCP (Sterling Brown) writes:
|
|  I was thinking a while back about the Fast File System not being put on the
|  floppies  in AmigaDos 1.3.  It is  my  understanding  that   the  Fast file
|  system will  not work  on the  floppies  because  it is  not installed when
|  the Amiga boots, and Commodore is  not putting  the FFS  in ROM  because of
|  compatibility with the existing file system.  Is this true?

As far as I know, the reason Commodore is not supporting FFS for floppies
is that FFS currently does not support automatic detection of disk changes
therefor, if you switch disks without telling it, you will probably have
two mangled disks on your hands.

Also, if I read correctly, FFS should be in ROM by 1.4.

|
|\===========================\                   /===========================/
| \ Sterling L. Brown........ \                 /  "When I'm Programming    /
|  \                           \               /   MSDOS, I'm thinking     /
|   \ Amiga Programmer          \=============/    of Amiga."-I said it.  /
|    \  MSDOS Programmer                                                 /
|     \================\ `The Human Opperating System' /================/
|          A // Serious \     CIS: 71101,616          /Multifinder.status=
|        \\ // Amiga     \ USENET: sterling@dasys1   / "don't make me laugh!";
|         \\/ Programmer  \=========================/ OS2->bites=Amigas.Dust;


--
Ofer Melnik                          Rutgers University
                                     melnik@topaz.rutgers.edu

dillon@CORY.BERKELEY.EDU (Matt Dillon) (08/30/88)

:  I was thinking a while back about the Fast File System not being put on the
:  floppies  in AmigaDos 1.3.  It is  my  understanding  that   the  Fast file
:  system will  not work  on the  floppies  because  it is  not installed when
:  the Amiga boots, and Commodore is  not putting  the FFS  in ROM  because of
:  compatibility with the existing file system.  Is this true?

	No, because except for autoboot the roms are not being changed AT ALL
for the 1.3 release.  By know, it is wayyyy to late to put anything else in
the roms anyway (unless you want to wait another year for 1.3).

	But I haven't found this to be a problem.. really.  You just reserve
two or three cyls of your HD using the old filesystem so you can boot off of
it (assuming the driver supports autoboot) and put the rest on the new 
filesystem. 

:  If this IS true, then I have a suggestion:
:
:  Why not put the FFS in ROM, and if someone wants to access files in the old
:  format then they can install the Slow File System for  the device  on which
:  they will be accessing the files.  This way people can install the old file
:  system on a drive and transferer  everything over  to the  FFS once.   This
:  will get  rid of the problem of having a Slow File System boot partition on
:  the hard drive, and will make those of us using only floppies happy.

	What I would like to see is an unmount command.... to unmount a 
device (i.e. DF0:) then remount it under the new filesystem.  Even better,
have the OS detect the disk format (easily done) and use the proper filesystem.
	
							-Matt

daveh@cbmvax.UUCP (Dave Haynie) (08/31/88)

in article <8808291950.AA12753@cory.Berkeley.EDU>, dillon@CORY.BERKELEY.EDU (Matt Dillon) says:
> 
> :  I was thinking a while back about the Fast File System not being put on the
> :  floppies  in AmigaDos 1.3.  It is  my  understanding  ...
> 
> 	What I would like to see is an unmount command.... to unmount a 
> device (i.e. DF0:) then remount it under the new filesystem.  Even better,
> have the OS detect the disk format (easily done) and use the proper filesystem.

You mean like 1.3's "Assign UNMOUNT DF0:" 

> 							-Matt

You could probably set up a floppy with FFS, and it would be fast.  The other
problem you'd have is that it wouldn't know when a block went bad.  The standard
file system stores a 32 bit checksum in the block header of each block on your
disk.  Under FFS, there is no block header for data blocks.  This has the nice
feature of letting you store 512 bytes per block instead of 488, and it also
lets multiple blocks be transferred directly to their destination, without
any stripping.  This makes lots of sense using hard disks or similar devices 
that do hardware error checking that's far superior to the file system's 
checksum.  However, with a floppy, there is no underlying hardware error
checking logic; the checksum is all you get. 
-- 
Dave Haynie  "The 32 Bit Guy"     Commodore-Amiga  "The Crew That Never Rests"
   {ihnp4|uunet|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
		"I can't relax, 'cause I'm a Boinger!"

andy@cbmvax.UUCP (Andy Finkel) (08/31/88)

In article <4604@cbmvax.UUCP> daveh@cbmvax.UUCP (Dave Haynie) writes:
>in article <8808291950.AA12753@cory.Berkeley.EDU>, dillon@CORY.BERKELEY.EDU (Matt Dillon) says:
>> 	What I would like to see is an unmount command.... to unmount a 

>You mean like 1.3's "Assign UNMOUNT DF0:" 

Well, actually, no.  That particular option of the assign command
(which was renamed REMOVE to avoid just this kind of confusion)
just lets you remove handlers and filesystems from the assign list
(you can do the same thing with AssignDev) as a developer tool.
(otherwise developing handlers and filesystems takes a lot of rebooting).
The device being removed doesn't give up any of its resources.

If I were using it to play dismount type of games, I'd inhibit the
drive first, then remove it.

A real dismount has to be implemented through a new packet; since
one of the reasons that you want to dismount a handler or filesystem
is so it gives up its resources.

		andy
-- 
andy finkel		{uunet|rutgers|amiga}!cbmvax!andy
Commodore-Amiga, Inc.

"If we can't fix it, it ain't broke."

Any expressed opinions are mine; but feel free to share.
I disclaim all responsibilities, all shapes, all sizes, all colors.

dillon@CORY.BERKELEY.EDU (Matt Dillon) (09/01/88)

>You mean like 1.3's "Assign UNMOUNT DF0:" 

	Really?  Honest to goodness?  Is the ACTION_DIE packet finally being
supported?

			-Matt

andy@cbmvax.UUCP (Andy Finkel) (09/02/88)

In article <8808311719.AA17625@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes:
>>You mean like 1.3's "Assign UNMOUNT DF0:" 
>
>	Really?  Honest to goodness?  Is the ACTION_DIE packet finally being
>supported?

Nope.  Not for 1.3, anyway.  I'd really like to for 1.4, though.

-- 
andy finkel		{uunet|rutgers|amiga}!cbmvax!andy
Commodore-Amiga, Inc.

"If we can't fix it, it ain't broke."

Any expressed opinions are mine; but feel free to share.
I disclaim all responsibilities, all shapes, all sizes, all colors.

jdow@gryphon.CTS.COM (J. Dow) (09/02/88)

In article <4604@cbmvax.UUCP> daveh@cbmvax.UUCP (Dave Haynie) writes:
>in article <8808291950.AA12753@cory.Berkeley.EDU>, dillon@CORY.BERKELEY.EDU (Matt Dillon) says:
>> 
>> :  I was thinking a while back about the Fast File System not being put on the
>> :  floppies  in AmigaDos 1.3.  It is  my  understanding  ...
>> 
>> 	What I would like to see is an unmount command.... to unmount a 
>> device (i.e. DF0:) then remount it under the new filesystem.  Even better,
>> have the OS detect the disk format (easily done) and use the proper filesystem.
>
>You mean like 1.3's "Assign UNMOUNT DF0:" 
>
>> 							-Matt
>
>You could probably set up a floppy with FFS, and it would be fast.  The other
>problem you'd have is that it wouldn't know when a block went bad.  The standard
>file system stores a 32 bit checksum in the block header of each block on your
>disk.  Under FFS, there is no block header for data blocks.  This has the nice
>feature of letting you store 512 bytes per block instead of 488, and it also
>lets multiple blocks be transferred directly to their destination, without
>any stripping.  This makes lots of sense using hard disks or similar devices 
>that do hardware error checking that's far superior to the file system's 
>checksum.  However, with a floppy, there is no underlying hardware error
>checking logic; the checksum is all you get. 
>-- 
>Dave Haynie  "The 32 Bit Guy"     Commodore-Amiga  "The Crew That Never Rests"
>   {ihnp4|uunet|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
>		"I can't relax, 'cause I'm a Boinger!"

Er say what? I have page 49 of the DevConII notes for the hardware section open
in front of me. Acto it there is the following sector organization:
2 bytes of 00 data - MFM = AAAA each
2 bytes of A1* - standard sync byte encoded A1 without clock pulse
1 byte format byte - amiga 1.0, 1.1, 1.2 == FF
1 byte track number
1 byte sector number
16 bytes of OS recovery info per note 2 (left out here)
four bytes header checksum
four bytes of data area checksum
512 bytes of data

And this all repeats for each sector. So the floppies DO TOO have a checksum
safety in them besides the SECOND checksum embedded within oldfs.

Or do these C= notes lie to me?
{O_O}

-- 
Sometimes a bird in the hand leaves a sticky deposit.
Perhaps it were best it remain there in the bush with the other one.

{@_@}
	jdow@bix (where else?)		Sometimes the dragon wins. Sometimes
	jdow@gryphon.CTS.COM		the knight. Does the fair maiden ever
	{backbone}!gryphon!jdow		win? Surely both the knight and dragon
					stink. Maybe the maiden should suicide?
					Better yet - she should get an Amiga and					quit playing with dragons and knights.

daveh@cbmvax.UUCP (Dave Haynie) (09/03/88)

in article <6177@gryphon.CTS.COM>, jdow@gryphon.CTS.COM (J. Dow) says:

> Er say what? I have page 49 of the DevConII notes for the hardware section open
> in front of me. Acto it there is the following sector organization:
> [internal trackdisk format stuff...]

> 16 bytes of OS recovery info per note 2 (left out here)
> four bytes header checksum
> four bytes of data area checksum
> 512 bytes of data

> And this all repeats for each sector. So the floppies DO TOO have a checksum
> safety in them besides the SECOND checksum embedded within oldfs.

Yup, there's a place for it.  However, so far as I know, it isn't being
used.  I wondered about that stuff, since it's mentioned, long ago when
I was writing the original DiskSalv.  The general consensus was that there's
nothing done with that stuff.  I think that's still the case (I don't think
1.3 did any new work on trackdisk.device).  

Perhaps Steve Beats could tell us the truth.  If this stuff really is being
used, it may delay DiskSalv 1.2 a bit...

> Or do these C= notes lie to me?

I'm sure those locations exist.  As far as I know, they're not generally
used by a filesystem.  They are also a pain to get to, since you're got to
do raw read to see 'em.  There are, of course, various kinds of lies.
Mistakes, lies, LIES, benchmarks, spec sheets, and monthly columns in BYTE
and InfoWorld.  Take yer pick...

> 	jdow@bix (where else?)

-- 
Dave Haynie  "The 32 Bit Guy"     Commodore-Amiga  "The Crew That Never Rests"
   {ihnp4|uunet|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
		"I can't relax, 'cause I'm a Boinger!"

mlelstv@faui44.informatik.uni-erlangen.de (Michael van Elst ) (09/06/88)

In article <8808291950.AA12753@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes:
>	What I would like to see is an unmount command.... to unmount a 
>device (i.e. DF0:) then remount it under the new filesystem.  Even better,
>have the OS detect the disk format (easily done) and use the proper filesystem.
>	
>							-Matt

I think, the last thing is nearly done in current AmigaDOS.
The old filesystem and FastFilesystem use the first long word on sector zero
to detect their format, i.e. DOS\0 is old file system, DOS\001 is FFS.
If you run two filesystems on the disk they recognize only the right format
but you get disk icons with the label DF1:DOS<A> (A invers) if you insert
an FFS disk.
Nevertheless, the main problem is that disk changing is not recognized by FFS
and on the other way OldFS uses the TD_REMOVE call from trackdisk to detect
disk changes, and those are overridden if another TD_REMOVE call is made.
So both filesystemhandlers have to use TD_ADDCHANGEINT (right name ?).

BTW, I have seen a gamma version of 1.3 that has an UMOUNT option with
the ASSIGN command. That does not stop the handler for you cannot track down
who actually is using the handler. But it removes the DosNode from the
device list, so noone can find the handler.
I think it would be better to terminate the handler and use a dummy handler
that rejects all packets.

				Michael van Elst

E-mail: UUCP: ...seismo!unido!fauern!faui44!mlelstv
E-mail: UUCP: ...uunet!unido!fauern!faui44!mlelstv	<- when seismo ceases
							   operation

mlelstv@faui44.informatik.uni-erlangen.de (Michael van Elst ) (09/06/88)

In article <4604@cbmvax.UUCP> daveh@cbmvax.UUCP (Dave Haynie) writes:
> [ comments about FFS that has no DOS checksums on data blocks ]
>.......  However, with a floppy, there is no underlying hardware error
>checking logic; the checksum is all you get. 
>-- 

I think you are wrong. I would agree that the data integrity is not
checked very well. BUT trackdisk.device uses a parity check on each
sector as well as on each sector header.
You GET error messages from trackdisk if a block is wrong. And trackdisk
does nothing with the DOS checksum.
Trackdisk.device rejects complete tracks if only one sector is bad.
(I verified this with a RAW_READ call and then decoding MFM data). Could
anyone think to implement this in 1.4 ?

BTW, some friends have improved the DiskSalv program to get all readable
sectors from a bad track.

				Michael van Elst

E-mail: UUCP: ...seismo!unido!fauern!faui44!mlelstv
E-mail: UUCP: ...uunet!unido!fauern!faui44!mlelstv	<- when seismo ceases
							   operation

mlelstv@faui44.informatik.uni-erlangen.de (Michael van Elst ) (09/06/88)

In article <8808311719.AA17625@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes:
>>You mean like 1.3's "Assign UNMOUNT DF0:" 
>
>	Really?  Honest to goodness?  Is the ACTION_DIE packet finally being
>supported?
>
>			-Matt

Sorry. It is not. They only remove the DosNode from the device list.
You can verify this by CD to the file system you want to unmount,
then unmount it with ASSIGN and then watching that the filesystem is
functional by simply reading a directory.

(I had that before, hadn't I ? :-)

				Michael van Elst

E-mail: UUCP: ...seismo!unido!fauern!faui44!mlelstv
E-mail: UUCP: ...uunet!unido!fauern!faui44!mlelstv	<- when seismo ceases
							   operation

charles@hpcvca.HP.COM (Charles Brown) (09/13/88)

>> Trackdisk.device rejects complete tracks if only one sector is bad.
>> (I verified this with a RAW_READ call and then decoding MFM data). Could
>> anyone think to implement this in 1.4 ?
> Bad idea.

For READING this is not a bad idea.  You should be able to easily
recover as much data from the disk as is good.  Only the impacted
sector(s) is defective.  These are easily distinguished by bad CRC.
It is only writing to a known bad track that is a bad idea.

> Since disk writes aren't locked to the index hole under either
> file system (thank god), any defect on the track will and should take out
> the whole track.  (After all, how do you know where the defect is going to
> land.)

This is a fallacy.  It is only because the index hole is not locked to
the start of the track that you don't know where the defect is going
to land.

The index hole was uncoupled from the track to speed access.  But how
much speed up did it accomplish?  There are three cases:  format,
write and read.

Format:
	Since formatting is done rarely (campared to reads and
	writes), a difference in speed has little effect upon total
	system speed.  I choose to ignore it.
Read:
	Reading does not depend upon the index hole anyway.  It really
	only depends upon where the track was started when it was
	written.
	If you always start a track read at the beginning of a track
	(as written) you will on the average have a 1/2 rotation
	latency waiting for the disk to turn to the start of that
	track.  So decoupling the index hole from the the start of
	track did not speed up reads AT ALL.
Write:
	Writing a track can start at any time.  This will save the
	time of (on the average) 1/2 rotation per track read.  The
	minimum track read takes 1 rotation.  Thus decoupling the
	index hole from start of track speed writes on the average by:
		difference=1/1.5=0.67 or 33%

Now consider typical use.  I don't have real figures so I will try to
make them up.  I would guess that I do reads at least 5 times as much
as I do  writes.  I boot my A1000, use it a couple of hours, and turn
it off.  Booting takes a long time.  Typical editing requires that I
read the editor, read the file to be written, write the file one or
more times.  Typically the editor is a much bigger file that the file
I am editing.  Compiling requires reading several programs (make, cc,
linker) the source(s), several libraries; and one or two files are
written.  So now how much speed did I gain?

The following numbers represent time in terms of track rotations:
		  write	+ read (weighed)
 index coupled:   1.5	+ 5*1.5		= 9.0
 index decoupled: 1	+ 5*1.5		= 8.5
Now the advantage of decoupled index drops to 8.5/9.0=0.94 or 6%

So we gave up track reliability for at best a 6% increase in overall
floppy speed.  That strikes me as a bad trade.

> For floppies the point is moot.  Use disks without flaws.  They
> aren't very difficult to find, and flawed disks will always end up being
> more trouble than they're worth.

How do you know a disk has no flaws?  Formatting it does not tell you.
The format program only puts data on parts of the track.  Other parts
of the track can be flawed and will still pass Format/Verify.  There
are two types of areas unchecked by Format.  The gaps between sectors
are not given data.  The space between the end of the track and its
own beginning has no data.  When the index hole is coupled to the
track start, these gaps are fixed in location and will never cause a
problem.  When the index hole is decoupled, they move about.  Then you
really have no way of knowing that the disk you are using is flawless
until it fails.

> If presented with a bad block the filesystem 
> assumes the worst, and ignores the track completely.  Wonderful, nicht?
>                            -Sullivan Segall

Nicht!

This flaw (decoupling index from start of track) could be fixed
transparently in AmigaDos.  It has no effect upon the reader; no
changes would be required.  Only writes and formats would be changed,
to wait for index before doing their magic.  The old reader and new
readers (identical) would read data written by either writers; in fact
they would have no way to know which type had written them.  The new
writers would not care whether a disk had been used by the old writer,
it would always start the track at the same location anyway.

So the reliability of AmigaDos could be improved by a at most 6%
reduction in overall floppy speed.  What do you say Commodore?
	Charles Brown	charles%hpcvca@hplabs.hp.com

ditto@cbmvax.UUCP (Michael "Ford" Ditto) (09/14/88)

In article <5660015@hpcvca.HP.COM> charles@hpcvca.HP.COM (Charles Brown) writes:
>Read:
>	Reading does not depend upon the index hole anyway.  It really
>	only depends upon where the track was started when it was
>	written.

It doesn't even have to depend on that, and in fact, the trackdisk.device
doesn't even care...

>	If you always start a track read at the beginning of a track
>	(as written) you will on the average have a 1/2 rotation
>	latency waiting for the disk to turn to the start of that
>	track.  So decoupling the index hole from the the start of
>	track did not speed up reads AT ALL.

But you don't always start a read at the beginning of a track.
Trackdisk.device starts reading wherever the head is, and reads one
full revolution plus enough extra to make sure it gets at least one
intact copy of the sector it started reading on.  So the total track
read time should be constant:

	1 rotation + 1 sector time + 1 index gap time.

Since the gap varies due to variation in disk speed, etc., you have to
allow some slop.  I'd roughly estimate the result as being 1.1 rotations,
not the 1.5 you came up with, so it does save a fair amount of time.

Waiting for the index hole would also mean one more interrupt to process
per sector.
-- 
					-=] Ford [=-

	.		.		(In Real Life: Mike Ditto)
.	    :	       ,		ford@kenobi.cts.com
This space under construction,		...!ucsd!elgar!ford
pardon our dust.			ditto@cbmvax.commodore.com

charles@hpcvca.HP.COM (Charles Brown) (09/15/88)

>>	If you always start a track read at the beginning of a track
>>	(as written) you will on the average have a 1/2 rotation
>>	latency waiting for the disk to turn to the start of that
>>	track.  So decoupling the index hole from the the start of
>>	track did not speed up reads AT ALL.
> But you don't always start a read at the beginning of a track.
> Trackdisk.device starts reading wherever the head is, and reads one
> full revolution plus enough extra to make sure it gets at least one
> intact copy of the sector it started reading on.  So the total track
> read time should be constant:
> 	1 rotation + 1 sector time + 1 index gap time.
> 
> Since the gap varies due to variation in disk speed, etc., you have to
> allow some slop.  I'd roughly estimate the result as being 1.1 rotations,
> not the 1.5 you came up with, so it does save a fair amount of time.
> 					-=] Ford [=-

Your argument only applys to reads.  I am saying "don't change the way
reads are done".  So let me work thru the numbers with your correction:

> The following numbers represent time in terms of track rotations:
> 		  write	+ read (weighed)
>  index coupled:   1.5	+ 5*1.5		= 9.0
>  index decoupled: 1	+ 5*1.5		= 8.5
> Now the advantage of decoupled index drops to 8.5/9.0=0.94 or 6%
becomes:

The following numbers represent time in terms of track rotations:
		  write	+ read (weighed)
 index coupled:   1.5	+ 5*1.1		= 7.0
 index decoupled: 1	+ 5*1.1		= 6.5
Now the advantage of decoupled index drops to 6.5/7.0=0.93 or 7%

So we gave up track reliability for at best a 7% increase in overall
floppy speed.  That strikes STILL me as a bad trade.
	Charles Brown	charles%hpcvca@hplabs.hp.com

ditto@cbmvax.UUCP (Michael "Ford" Ditto) (09/20/88)

In article <5660016@hpcvca.HP.COM> charles@hpcvca.HP.COM (Charles Brown) writes:
>The following numbers represent time in terms of track rotations:
>		  write	+ read (weighed)
> index coupled:   1.5	+ 5*1.1		= 7.0
> index decoupled: 1	+ 5*1.1		= 6.5
>Now the advantage of decoupled index drops to 6.5/7.0=0.93 or 7%
>
>So we gave up track reliability for at best a 7% increase in overall
>floppy speed.  That strikes STILL me as a bad trade.

But now you're using the "decoupled" figure of 1.1 in the "coupled" row.

In the case of a random sector read, the average would be 1.5, not 1.1,
giving a ratio of (6.5 : 9) == 0.72, a 28% savings.

Also, your figures don't take into account that the 1.1 rotations of
trackdisk result in up to eleven sector I/Os ("up to" because I won't
assume that all the data on that track would be useful at that time),
while the index-synced method would take 1.5 rotations to read ONE sector.
Now, granted, the "conventional" method, under the right conditions, can
then proceed to read several consecutive sectors, but this requires that
the disk interleave be tuned to the specific application or it becomes
1.1 rotations per sector.

The trackdisk strategy also relies on sequential access to boost
performance; if sectors are being read sequentially it can be *eleven
times* faster than the basic figures.

On top of all that, the trackdisk method only needs fairly simple
hardware, and has a much lower software overhead in terms of interrupt
processing (only one interrupt per 11 sectors, instead of at least one
for each sector) and in terms of real-time demands (the CPU doesn't have
any real-time constraints with trackdisk, since it starts the DMA whenever
it "feels like it", and the process completes automatically, with no
immediate CPU responce required).

Now, by "simulating" trackdisk with a conventional controller, (with track
bufferring and always reading a whole track in (typically) 1.5 rotations),
you can get back to the 28% difference in throughput, but index-syncing
will still have extra CPU demands.

A disadvantage of trackdisk, however, is the CPU processing required to
"find" the sectors in the track of raw data, and the need to un-MFM the
data.  I don't know how long these operations take.
-- 
					-=] Ford [=-

	.		.		(In Real Life: Mike Ditto)
.	    :	       ,		ford@kenobi.cts.com
This space under construction,		...!ucsd!elgar!ford
pardon our dust.			ditto@cbmvax.commodore.com

charles@hpcvca.HP.COM (Charles Brown) (09/21/88)

>> The following numbers represent time in terms of track rotations:
>> 		  write	 + read (weighed)
>>  index coupled:   1.5 + 5*1.1		= 7.0
>>  index decoupled: 1	 + 5*1.1		= 6.5
>> Now the advantage of decoupled index drops to 6.5/7.0=0.93 or 7%
>> 
>> So we gave up track reliability for at best a 7% increase in overall
>> floppy speed.  That strikes STILL me as a bad trade.

> But now you're using the "decoupled" figure of 1.1 in the "coupled" row.

I will paraphrase what I said:
 -------------------------------------------------------------------
 * DO NOT CHANGE THE WAY YOU READ.  ONLY CHANGE THE WAY YOU WRITE. *
 -------------------------------------------------------------------
Therefore READS TAKE THE SAME AMOUNT OF TIME whether the writes are
decoupled from the index pulse or not.

> In the case of a random sector read, the average would be 1.5, not 1.1,
> giving a ratio of (6.5 : 9) == 0.72, a 28% savings.

This is incorrect as noted above.

> Also, your figures don't take into account that the 1.1 rotations of
> trackdisk result in up to eleven sector I/Os ("up to" because I won't
> assume that all the data on that track would be useful at that time),
> while the index-synced method would take 1.5 rotations to read ONE sector.

Incorrect.  If you are trying to read or write (not both) 1.1
rotations result in eleven sectors read.  The Amiga trackdisk device
does not read half of a track, it always reads the whole track.
Usefulness has nothing to do with it.  I do not propose to change that.

Your statement (with the term I/O) implys combined reads and writes.
The Amiga does not read or write partial tracks.  It also does not mix
reads with writes during one track operation.  I do not propose to
change that.

> Now, granted, the "conventional" method, under the right conditions, can
> then proceed to read several consecutive sectors, but this requires that
> the disk interleave be tuned to the specific application or it becomes
> 1.1 rotations per sector.

This is refering to single sector reads.  I am not talking about that.

> The trackdisk strategy also relies on sequential access to boost
> performance; if sectors are being read sequentially it can be *eleven
> times* faster than the basic figures.

The "basic figures" you are talking about clearly must be single
sector reads.  I am not talking about that.

> On top of all that, the trackdisk method only needs fairly simple
> hardware, and has a much lower software overhead in terms of interrupt
> processing (only one interrupt per 11 sectors, instead of at least one
> for each sector) and in terms of real-time demands (the CPU doesn't have
> any real-time constraints with trackdisk, since it starts the DMA whenever
> it "feels like it", and the process completes automatically, with no
> immediate CPU responce required).

Again you are talking about single sector reads.  I am not talking
about that.

> Now, by "simulating" trackdisk with a conventional controller, (with track
> bufferring and always reading a whole track in (typically) 1.5 rotations),
> you can get back to the 28% difference in throughput, but index-syncing
> will still have extra CPU demands.
> 					-=] Ford [=-

See my first statement in this response.  My numbers remain valid.
We gave up track reliability for at best a 7% increase in overall
floppy speed.

It amazes me how easy it is to respond to a note without reading it.
	Charles Brown		charles%hpcvca@hplabs.hp.com

peter@sugar.uu.net (Peter da Silva) (09/21/88)

In article <4774@cbmvax.UUCP>, ditto@cbmvax.UUCP (Michael "Ford" Ditto) writes:
> Also, your figures don't take into account that the 1.1 rotations of
> trackdisk result in up to eleven sector I/Os ("up to" because I won't
> assume that all the data on that track would be useful at that time),
> while the index-synced method would take 1.5 rotations to read ONE sector.

Not true. He's not suggesting changing anything in the way you read a disk.
He just wants to make the writes sync to the index hole so that damage to
the disk won't result in trashing the whole sector. Thus, read times don't
change at all and access is still 11 sectors at a time.

This 11 sector business, by the way, would make more sense if you cached
tracks for a while. What does it profit me to read in 11 sectors at a time
when I'm just going to throw away 10 of them?
-- 
		Peter da Silva  `-_-'  peter@sugar.uu.net
		 Have you hugged  U  your wolf today?

dml@loral.UUCP (Dave Lewis) (09/21/88)

In article <4774@cbmvax.UUCP> ditto@cbmvax.UUCP (Michael "Ford" Ditto) writes:
>In article <5660016@hpcvca.HP.COM> charles@hpcvca.HP.COM (Charles Brown) writes:

>Also, your figures don't take into account that the 1.1 rotations of
>trackdisk result in up to eleven sector I/Os ("up to" because I won't
>assume that all the data on that track would be useful at that time),
>while the index-synced method would take 1.5 rotations to read ONE sector.

  No, NO, NO!!!! He's said several times that the read operation would be
identical; that only the writes would be aligned with the damn index mark
like they should'a been all along! The read algorithm doesn't care where the
track starts, it just finds the beginning and reads it. The real times,
compared with the current (flaky) operations: (The way it is now = 1.0)

      Reads          Writes              Total (85% read, 15% write)
      -----          ------              ---------------------------
       1.0            1.5                    107.5 (7.5% longer)

  Writes currently take about 1 disk revolution. If ya have to wait for the
index mark that adds 0.5 revolutions to the average write operation. Reads
have to find the start-of-track NO MATTER HOW THE TRACK WAS WRITTEN, so
aligning the tracks to the index will have NO EFFECT WHATSOEVER ON READ TIME!

  So we're putting up with wandering tracks (or musical sectors) for a
measly 7.5% increase in floppy throughput. Even if you (unreasonably) assume
50% writes the difference is only 25%. This is a very small price to pay for
increased reliability.
-- 
Dave Lewis      Loral Instrumentation      San Diego    (619) 282-3341
  ihnp4 --\   bang --\ kontron -\
  hp-sdd --\ calmasd ->-> crash ->--> loral!dml
  sdcrdcf -->--------> sdcsvax -/      (uucp)

dillon@CORY.BERKELEY.EDU (Matt Dillon) (09/22/88)

: -------------------------------------------------------------------
: * DO NOT CHANGE THE WAY YOU READ.  ONLY CHANGE THE WAY YOU WRITE. *
: -------------------------------------------------------------------
:Therefore READS TAKE THE SAME AMOUNT OF TIME whether the writes are
:decoupled from the index pulse or not.

	The problem is that there is no automatic index-start-dma thing
in hardware... i.e., you get an interrupt on the index and the interrupt
handler must then start the DMA.

	This means that while the track will be synced pretty close to 
the index, it won't be exact, and the system would have to map out, say,
the sector before and after the bad one to be sure.

	Apart from that, it's a handy solution.

				-Matt

ditto@cbmvax.UUCP (Michael "Ford" Ditto) (09/23/88)

In article <5660018@hpcvca.HP.COM> charles@hpcvca.HP.COM (Charles Brown) writes:
>I will paraphrase what I said:
> -------------------------------------------------------------------
> * DO NOT CHANGE THE WAY YOU READ.  ONLY CHANGE THE WAY YOU WRITE. *
> -------------------------------------------------------------------

Ok, I was confused about your suggestion.  (I went back and read the first
article and now your second article makes sense; thanks to Peter DaSilva
for kicking me in the right direction).

Most of the rest of my article makes sense only if we are comparing
trackdisk to non-trackdisk (as I thought we were), but you were comparing
trackdisk to hypothetical-modified-trackdisk and your figures did make
sense all along to anyone who read your original posting.

>> Also, your figures don't take into account that the 1.1 rotations of
>> trackdisk result in up to eleven sector I/Os ("up to" because I won't
>> assume that all the data on that track would be useful at that time),
>> while the index-synced method would take 1.5 rotations to read ONE sector.
>
>Incorrect.  If you are trying to read or write (not both) 1.1
>rotations result in eleven sectors read.  The Amiga trackdisk device
>does not read half of a track, it always reads the whole track.
>Usefulness has nothing to do with it.

Again, I was replying to a completely different interpretation of your
message so I wasn't making much sense.  But "usefulness" does have a lot to
do with trackdisk input; those other ten sectors that are automatically read
in when you ask for the first one can't be counted toward the throughput
figures unless they will actually be requested and used by some program
before they are flushed.  This does not affect your proposal though.

>We gave up track reliability for at best a 7% increase in overall
>floppy speed.

I think this statement is what led me off onto the wrong track... you make
it sound as if we *used* to have this capability and lost it by going to
track-at-a-time reads.  But I realize you are suggesting an improvement to
trackdisk, which can gain us this capability at only a slight performance
penalty.  I also agree with the way you came up with the 7% estimate.

>It amazes me how easy it is to respond to a note without reading it.

Actually, the problem was that I didn't read the first one, therefore
the second one made no sense.  Sorry.
-- 
					-=] Ford [=-

	.		.		(In Real Life: Mike Ditto)
.	    :	       ,		ford@kenobi.cts.com
This space under construction,		...!ucsd!elgar!ford
pardon our dust.			ditto@cbmvax.cbm.commodore.com

eachus@mitre-bedford.ARPA (Robert Eachus) (09/23/88)

     Suddenly a light bulb appears over my head, switched on and
shining brightly.  Charles has had a brilliant idea, and like most
great ideas it only seems simple IF you understand it.

> -------------------------------------------------------------------
> * DO NOT CHANGE THE WAY YOU READ.  ONLY CHANGE THE WAY YOU WRITE. *
> -------------------------------------------------------------------
>Therefore READS TAKE THE SAME AMOUNT OF TIME whether the writes are
>decoupled from the index pulse or not.

      This is the  key insight.  Writes  can be coupled  to the  index
pulse, and  disks written by a  "smarter" trackdisk.device can be read
(and written  to) by  an   old  trackdisk.device with  NO compaibility
problems.

>We gave up track reliability for at best a 7% increase in overall
>floppy speed.

     Not quite, Charles, adding  track reliablity won't cost even that
much. Right now, trackdisk.device must rewrite an entire track even if
only  one sector is   changed, and more  important  must  read a track
completely to write one  sector.   If a "smart" trackdisk.device knows
where sectors  are located,  it  can do  single  sector writes  in  an
average of 0.7 rotations,  instead of 2.2.  For compatibility  reasons
it should not do this on non-FFS floppies, but if a floppy is FFS then
there is no reason  to allow for  the "old style"  writes.  This means
that ALL  accesses would be as  fast or  faster except  formatting and
full track writes.

>It amazes me how easy it is to respond to a note without reading it.

     Most of  us (including  Ford)  try  hard to UNDERSTAND   what the
author had in mind before responding.  In this case, I think  that the
net traffic should be taken as evidence that some ideas  are very hard
to explain.  In fact,  since  many people probaably  don't  understand
yet, let me take another try.

     The key insight from Charles is that the model of the medium need
not be the  same when reading  as  when writing.   When  reading it is
sometimes useful to ignore some of the rules which must be obeyed when
writing.  In  this case  the hang-up that  most of us  have is that if
tracks begin at the beginning they must be read from the beginning.

     Okay who is  going to  be  the first   on  his  block to  hack up
trackdisk.device and try this for real? And please, Commodore, require
that FFS sectors be keyed off of  the index so that the "incompatible"
fast single sector writes can be supported, even if the implementation
of such writes has  to  wait for 1.5.   Note that this  feature really
will have a significant impact on performance, since it  will often be
used to update directory entries.


					Robert I. Eachus

with STANDARD_DISCLAIMER;
use  STANDARD_DISCLAIMER;
function MESSAGE (TEXT: in CLEVER_IDEAS) return BETTER_IDEAS is...

neil@amiga.UUCP (Neil Katin) (10/01/88)

<I tuned in late to this discussion; please don't flame me too bad>
<if I missed something that was said before>

As I understand the proposal, we want to change the way the trackdisk
writes to the disk: to sync writes with the index mark.  This is
supposed to help recover the disk if there is a write error.  Reading
the disk would be unchanged.

What escapes me is why this would help...  The trackdisk uses
a level 6 interrupt to synchronize with the index mark.  Because
it is an interrupt (and therefore s/w gets involved) anything that
stops or slows down interrupts will "shift" the start of the track.
This can include programs that call Disable() or things that starve
the processor of cycles (like a hard-disk doing DMA, or 4 bit planes of
high res, or the co-processor getting all the cycles, or the blitter
with the nasty bit set, etc).

Therefore your recovery s/w needs to be able to deal with tracks that don't
start at the index mark.

I have a different proposal.  First of all, what's a bad, but recoverable,
disk (in the current format, at least)?  It's one that has some good
sectors, and some bad ones.  It also probably has some sectors that
that were left from the last time the disk was written.  Currently
there is no way to tell if the sectors are from the "new" track,
or the "old" track.  One way to cure this is to add a two bit "generation"
number to each sector.  That way you can uniquely identify which
sector is new (or old), and you don't need to wait for the extra half
rotation for index to roll around.

	Neil Katin
	new mail address: {half the world}!sun!katin

rokicki%polya.stanford.edu@UDEL.EDU (10/04/88)

Received: from CUNYVM by CUNYVM.BITNET (Mailer X2.00) with BSMTP id 7887; Sat,
 01 Oct 88 01:04:53 EDT
Received: from UDEL.EDU by CUNYVM.CUNY.EDU (IBM VM SMTP R1.1) with TCP; Sat, 01
 Oct 88 01:04:51 EDT
Received: from Louie.UDEL.EDU by Louie.UDEL.EDU id ad17521; 30 Sep 88 20:58 EDT
Received: by Louie.UDEL.EDU id ae17361; 30 Sep 88 20:48 EDT
Received: from USENET by Louie.UDEL.EDU id aa17067; 30 Sep 88 20:22 EDT
From: "Tomas G. Rokicki" <rokicki@polya.stanford.edu>
Subject: Re: Request to Commodore (Bad Blocks)
Message-ID: <4204@polya.Stanford.EDU>
Date: 30 Sep 88 21:51:01 GMT
Organization: Stanford University
To:       amiga-relay@UDEL.EDU
Sender:   amiga-relay-request@UDEL.EDU


Out of over 6000 Sony double-sided bulk floppies I have used, I have
had about 12 go bad.

-tom

neil%amiga.uucp@UDEL.EDU (10/04/88)

Received: from CUNYVM by CUNYVM.BITNET (Mailer X2.00) with BSMTP id 2439; Sat,
 01 Oct 88 18:41:16 EDT
Received: from UDEL.EDU by CUNYVM.CUNY.EDU (IBM VM SMTP R1.1) with TCP; Sat, 01
 Oct 88 18:40:47 EDT
Received: from Louie.UDEL.EDU by Louie.UDEL.EDU id ae17521; 30 Sep 88 20:58 EDT
Received: by Louie.UDEL.EDU id af17361; 30 Sep 88 20:48 EDT
Received: from USENET by Louie.UDEL.EDU id aa17103; 30 Sep 88 20:24 EDT
From: Neil Katin <neil@amiga.uucp>
Subject: Re: Request to Commodore (Bad Blocks)
Keywords: trackdisk floppy format
Message-ID: <2979@amiga.UUCP>
Date: 30 Sep 88 21:35:40 GMT
Organization: Commodore-Amiga Inc, Los Gatos CA
To:       amiga-relay@UDEL.EDU
Sender:   amiga-relay-request@UDEL.EDU

<I tuned in late to this discussion; please don't flame me too bad>
<if I missed something that was said before>

As I understand the proposal, we want to change the way the trackdisk
writes to the disk: to sync writes with the index mark.  This is
supposed to help recover the disk if there is a write error.  Reading
the disk would be unchanged.

What escapes me is why this would help...  The trackdisk uses
a level 6 interrupt to synchronize with the index mark.  Because
it is an interrupt (and therefore s/w gets involved) anything that
stops or slows down interrupts will "shift" the start of the track.
This can include programs that call Disable() or things that starve
the processor of cycles (like a hard-disk doing DMA, or 4 bit planes of
high res, or the co-processor getting all the cycles, or the blitter
with the nasty bit set, etc).

Therefore your recovery s/w needs to be able to deal with tracks that don't
start at the index mark.

I have a different proposal.  First of all, what's a bad, but recoverable,
disk (in the current format, at least)?  It's one that has some good
sectors, and some bad ones.  It also probably has some sectors that
that were left from the last time the disk was written.  Currently
there is no way to tell if the sectors are from the "new" track,
or the "old" track.  One way to cure this is to add a two bit "generation"
number to each sector.  That way you can uniquely identify which
sector is new (or old), and you don't need to wait for the extra half
rotation for index to roll around.

    Neil Katin
    new mail address: {half the world}!sun!katin

neil%amiga.uucp@UDEL.EDU (10/04/88)

Received: from CUNYVM by CUNYVM.BITNET (Mailer X2.00) with BSMTP id 7926; Sat,
 01 Oct 88 01:08:08 EDT
Received: from UDEL.EDU by CUNYVM.CUNY.EDU (IBM VM SMTP R1.1) with TCP; Sat, 01
 Oct 88 01:07:25 EDT
Received: from Louie.UDEL.EDU by Louie.UDEL.EDU id ae17521; 30 Sep 88 20:58 EDT
Received: by Louie.UDEL.EDU id af17361; 30 Sep 88 20:48 EDT
Received: from USENET by Louie.UDEL.EDU id aa17103; 30 Sep 88 20:24 EDT
From: Neil Katin <neil@amiga.uucp>
Subject: Re: Request to Commodore (Bad Blocks)
Keywords: trackdisk floppy format
Message-ID: <2979@amiga.UUCP>
Date: 30 Sep 88 21:35:40 GMT
Organization: Commodore-Amiga Inc, Los Gatos CA
To:       amiga-relay@UDEL.EDU
Sender:   amiga-relay-request@UDEL.EDU

<I tuned in late to this discussion; please don't flame me too bad>
<if I missed something that was said before>

As I understand the proposal, we want to change the way the trackdisk
writes to the disk: to sync writes with the index mark.  This is
supposed to help recover the disk if there is a write error.  Reading
the disk would be unchanged.

What escapes me is why this would help...  The trackdisk uses
a level 6 interrupt to synchronize with the index mark.  Because
it is an interrupt (and therefore s/w gets involved) anything that
stops or slows down interrupts will "shift" the start of the track.
This can include programs that call Disable() or things that starve
the processor of cycles (like a hard-disk doing DMA, or 4 bit planes of
high res, or the co-processor getting all the cycles, or the blitter
with the nasty bit set, etc).

Therefore your recovery s/w needs to be able to deal with tracks that don't
start at the index mark.

I have a different proposal.  First of all, what's a bad, but recoverable,
disk (in the current format, at least)?  It's one that has some good
sectors, and some bad ones.  It also probably has some sectors that
that were left from the last time the disk was written.  Currently
there is no way to tell if the sectors are from the "new" track,
or the "old" track.  One way to cure this is to add a two bit "generation"
number to each sector.  That way you can uniquely identify which
sector is new (or old), and you don't need to wait for the extra half
rotation for index to roll around.

    Neil Katin
    new mail address: {half the world}!sun!katin