=========== ftape-0.9.9 ========= 06/01/94 SJL ==========

Fixed/Improved:

 - see the file RELEAS-NOTES too !
 - tick timer readout out of sync problem in calibr.c.
 - read calls now won't return partial read counts anymore.
 - exit from read and write loops on non-blockable signals.
 - major rewrite of the interrupt service routine.
 - ftape major moved into linux/include/linux/major.h
 - start_tape could fail at end of tape, fixed.
 - fdc not ready at read_id fixed.
 - fixed bug in ftape-pl14.diff: local define of NR_FTAPE_BUFFERS removed.
 - ecc.c : return corrected == 0 if ecc failure.
 - use ecc correction if only one error exists.
 - try to read next sector after a data crc error. if the cpu is
   too slow a hack will force the ecc code to correct the errors.
 - cleaned drive selection code (ftape_unit), should allow tape
   unit selection by drive select lines (untested).
 - changed all tracing printk's into TRACE statements.
 - changed TRACE macros so we can easily exclude them.
 - changed source back to 80 character max. line length.

Known bugs:

 - End of tape handling wastes up to 28 Kb of storage space, depending
   on bad sectors in last segments.
 - Multi volume tar fails to write when blocksize == 1 (512 bytes).
 - If the recovery after a data crc error lasts too long, we'll
   fail to read the next sector too. The ecc code will correct
   both errors, but there is a very small chance that it will
   fail (for instance if there are other - undetected - errors).
   The read code needs some major rewriting to circumvent this
   problem.

=========== ftape-0.9.8 ========= 11/12/93 SJL ==========

What's new:

 - Better signal handling, it's safe now to abort the driver!
 - Fixed ecc code. Special thanks to Ning and David Mosberger
   and Kai Harrekilde-Petterson for all their work on the ecc
   code.
 - Fixed missing crc error bit in bad sector map, thanks to
   David Mosberger for locating this problem.
 - Exit from seek to header segment if tape is not formatted
   or otherwise damaged.
 - Added missing config.in entry for CONFIG_FTAPE.
 - Number of ftape buffers now set in autoconf.h, prevents
   mismatch between kernel and driver.
 - Problems with time function in calibr.c could cause a divide
   by zero exception. Prevented.
 - Display tape error statistics on close.
 - Smart stops to reduce tape wear.
 - Rewrote start_tape, removed 10 segment limitation. This
   will allow the driver to work with compression but causes
   a lot of rewinding. Better wait untill the timout is
   implemented or pipe through compress and uncompress.
 - give warning if tape has no bad blocks (for pre-formatted
   tapes).

 Note: If you want to install the driver for an older kernel
   the best way is to start with the old version of ftape
   that contains the correct version of the modules patches.
   Build a new kernel with these patches. Then extract the
   driver sources in a directory and replace the new calibr.c
   with the old calibr.c. You'll probably have to fix some
   other code too, but this is a good start.


=========== ftape-0.9.7 ========= 04/12/93 SJL ==========

Some remarks:

 - This is still ALPHA code and it might take a while
   before it becomes BETA since there are a lot of different
   computer / tape-drive combinations around and I've only
   one to test !
   So the intention of this distribution is to get feedback
   about what is working and what not.
 - This is NOT (YET) A WAY TO MAKE RELIABLE BACKUP's !
 - Don't trust a backup before you have it verified !!!
 - If you are a vendor of qic-40/80 drives and you want your
   drive supported, feel free to send a sample drive to:

        Bas Laarhoven
        Mr. v. Boemellaan 39
        NL-5237 KA  's-Hertogenbosch
        the Netherlands

 - To make this software better I need all the cooperation
   I can get:

        Please report working hardware combinations too (Just
        to get some positive feedback ;) and also to see if
        there are certain `problem' configurations).

        Send your bug reports including the captured kernel
        messages and a description about the problem and your
        hardware configuration.

 - Send all comments on working and not working combinations to:

       `bas@vimec.nl'

Fixed problems:

 - Canceling pending flush of write buffer on error.
 - Fixed read error recovery in isr routine when crc_error is
   set to 0.
 - Fixed not flushing buffers if less than 1 segment was written.
 - Fixed bug in kernel-interface.c that didn't allow opening of
   /dev/nftape.
 - `userft' is no longer included in the distribution.

Added features:

 - ported to pl14 kernel: rewrote calibr.c
 - Added some new vendor id's.
 - added kernel version in kernel-interface.c to work with
   latest modules code.
 - added support for compiler-of-the-day.

=========== ftape-0.9.6 ========= 07/09/93 SJL ==========

Fixed problems:

 - Now can handle tapes that suffer from the Central Point
   Software bad sector syndrome (i.e. now can write tapes
   containing segments with 32 bad sectors).
 - Added lsmod to modules distribution.
 - Fixed pathnames in modules Makefile.
 - Changed distribution tree layout.
 - Removed some site specific paths in ftape Makefile.
 - Rewrite of INSTALL file.

Added features:

 - Added Wangtek 3080F vendor id (reported by Robert Yetman
   <boby@access.digex.net>).
 - Rewrite of drive wakeup code. Added vendors.h file.
 - Some small patches to improve error recovery

=========== ftape-0.9.5 ========= 29/08/93 SJL ==========

Fixed problems:

 - Flush buffer problem when written exactly 29K or 58K bytes solved.
 - Removed bad `programming vfo register' code.
 - Handle drives that do not support the report_drive_configuration
   command (reported by Paul Allen).
 - Implemented recovery on write errors (needs some more testing).

Added features:

 - Changed code to run on pl12 (C++) kernel.
 - Processor speed dependent timing calibrated at module load time.
 - Complete modules package included for kernel pl12.
 - Some new drive types added.
 - Number of kernel patches reduced, do_gettimeofday f.e. is
   no longer called in the kernel.
 - Some more code reworks and fixes I don't recall.

=========== ftape-0.9.3 ========= 18/07/93 SJL ==========

Fixed problems:

 - Writing to tape failed after 5 tracks. Caused by
   seek_head_to_track() calling ftape_command_wait() instead
   of ftape_parameter_wait().
 - Initial seek_to_load_point in _ftape_open could fail,
   ftape_seek_bot added.
 - Normal length tapes on a QIC-80 drive were rejected
   because of an incorrect rounding in read_header_segment().
 - Some hardware combinations might generate two interrupts
   in fdc_recalibrate. after the first seek-end is not yet
   set. this is now allowed.
 - Some acknowledge timeouts are fixed by adding delays
   after fdc_recalibrate and fdc_reset.

Added features:

 - Very bad segments (29-32 bad sectors) now no longer
   reject the tape but get skipped.
 - Temporary support to set tracing by `mt -f /dev/ftape fsf <n>'
 - Iomega and Insight drives support added.
 - Old type drives, requiring the motor-on signal instead
   of a wake-up sequence may work now.
 - _ftape_ioctl() accepts both original and fixed "ioctl.h"
 - Drives that report only an 8-bit vendor-id (this is not
   according to the qic-117 spec !) are now supported.
 - Extra option in ftape to set tracing.

Thanks to Mika Liljeberg who contributed most of the changes,
and all others who reported their configuration.

I've included the missing kernel/modules.c file in this
distribution.

The trace levels have changed:
set it to:     to get:
 0              (almost) nothing
 2              trap errors
 3              + info
 5              + program flow
 9              + fdc/dma info
11              + data flow
15              all

=========== ftape-0.9.1 ========= 11/07/93 SJL ==========

Release of first set of patches for ftape-0.9.

Fixed problems:

 - Some drives do not seek to loadpoint after inserting
   a new tape.
   Now the driver detects this situation at open() and
   issues the seek-to-loadpoint command.
 - The eot/bot handling if the write-segment routine
   failed, causing an error after writing the first track.
   This is now fixed.
 - The bad-sector information was not used during writes.
   It is now handled correctly.
 - The wake-up code is changed a bit to prevent further
   mis-information (i.e. drive is mountain when using
   a archive drive).
 - The tape parameters were set to the wrong values
   if the report-tape-status() call failed.

Added features:

 - The major device number for ftape is now 27 (official).
 - If bit 2 in the minor device number is not set, the
   drive rewinds when closing.
   This is not of any use yet !
 - A first try is made in finding the header segment.
   This is untested because I do not have a bad tape,
   it functions correctly for good tapes.
 - The (guessed) tape parameters are verified with the
   values in the header segment.

Caution:

There has been a report of `tar' possibly reading wrong
data after the ecc corrected a crc error.
Since I cannot reproduce this situation I hope a
field-test will (if this is a bug).

More warnings:

> Do not use this driver for important information and <
> verify the data after writing it to tape !           <


=========== ftape-0.9 =========== 30/06/93 SJL ==========

Now what's this ?:

This is the first release of my driver for the QIC-40 and
QIC-80 type mini-cartridge tape drives. (Yes another one)
It supports those drives that are attached directly to
the floppy disk controller, according to the QIC-117 spec.
(The parallel port type drives are _not_ supported yet !)
The driver should need no modification to work with a
Colorado Jumbo 120 or 250 drive, although I only tested
the Jumbo 120.

Can I use it ?:

Probably not. Although you should be able to make a backup
with for example tar when the tape has no defects.
This is still alpha code, intended to be tested, not used
for critical backups.
The writing part is implemented for only 3 days now and
barely tested. Retries and bad sector handling are not
even implemented yet.

Then, why this release ?:

I would like feedback on some areas, and could use some
help on others.
First of all, different hardware configurations should be
evaluated: Slower/Faster systems with tape drives from
other manufacturers.
Secondly, I'd like someone who knows what he's doing to
look at the ecc code. I've had to make some strange hacks
to get it running.
Third: How is the cooperation with other parts of the system.
I don't have the NET-2 code running. The interrupt latency
could be very long (I haven't tested this yet) and the
serial drivers could drop characters when the tape is used.
Experiments with the number of tape buffers to keep the
drive streaming on different systems need to be done too.
Last: I'd like to get suggestions on implementation of
f.e. end-of-file marks, major/minor device numbers, sharing
the fdc, irq & dma with the floppy driver, a way to allocate
the tape buffer dynamically, etc. etc.

What's this `modules' stuff ?:

The code relies on (my own port) of the modules package that
can be found on most ftp sites. I've included my patches and
the modules code with the driver, but I'm not sure if it is
complete. So get the complete modules package if something
seems to be missing and use my patches to get it working with
the driver.

Do I _need_ `modules' ?:

For now, yes. If you know what you're doing you could hack the
driver into the kernel, but dynamic loading is preferred in
this stage.

It is large !:

That's because it's full of debugging code that was needed
to find out how these damned drives are working.
It is also using a large buffer in kernel space that is
declared static as long as there is no better way to it.

What about QIC-40 and QIC-80 ?:

The driver implements a raw *nix tape device, to be used with
tar, dump or cpio. I'm not adhereing to the QIC-40/80 specs
for the volume and file tables. Nor do I have the intention
to implement this in the future.
The only parts of the spec used are the bad sector tables,
the header segments and the ecc implementation.
You'll probably need MS-DOS to format your tapes (So finally
you know what MS-DOS is good for), or buy them formatted.
I have no plans to write a format utility.

What if you're a whimp or a newbie ?:

PLEASE DON'T. THIS IS ALPHA CODE AND ONLY FUN FOR PEOPLE WHO
KNOW WHAT THEY'RE DOING.
(I'm not even sure if I know what I'm doing <grin> because I
zapped my superblock once while developping this monster.)
I will not respond to newbie questions so do not waste
bandwidth and wait for the driver to become beta.

============================================================

The code was develloped and tested on a 486/33 cpu with
a Colorado Jumbo 120 drive and Generic Linux 0.99pl10 with
the QIC-02 and sound drivers.

I'm open for all comments, suggestions and bug-reports.
Even compliments, flowers and pastry are welcome...

Please keep in mind that I have no ftp access and my mail
connection is dropping characters every now and then, making
large uuencoded messages useless.

A final word of thanks to Dave Brown for his code that I used
to bootstrap mine (some parts are still his), Karl Heinz Kremer
who lured me into this and kept me going by sending me all
the information I needed, and Marc Blom for uploading the
package to the major ftp sites.


Bas                                         bas@vimec.nl

===============================================================