Commit d916faac authored by Jeff Garzik's avatar Jeff Garzik

Remove long-unmaintained ftape driver subsystem.

It's bitrotten, long unmaintained, long hidden under BROKEN_ON_SMP,
etc.  As scheduled in feature-removal-schedule.txt, and ack'd several
times on lkml.
Signed-off-by: default avatarJeff Garzik <>
parent 2b5f6dcc
......@@ -104,8 +104,6 @@ firmware_class/
- request_firmware() hotplug interface info.
- notes and driver options for the floppy disk driver.
- notes about the floppy tape device driver.
- info on using the Hayes ESP serial driver.
......@@ -234,14 +234,6 @@ Who: Jean Delvare <>
What: ftape
When: 2.6.20
Why: Orphaned for ages. SMP bugs long unfixed. Few users left
in the world.
Who: Jeff Garzik <>
What: IPv4 only connection tracking/NAT/helpers
When: 2.6.22
Why: The new layer 3 independant connection tracking replaces the old
This file describes some issues involved when using the "ftape"
floppy tape device driver that comes with the Linux kernel.
ftape has a home page at
which contains further information about ftape. Please cross check
this WWW address against the address given (if any) in the MAINTAINERS
file located in the top level directory of the Linux kernel source
NOTE: This is an unmaintained set of drivers, and it is not guaranteed to work.
If you are interested in taking over maintenance, contact Claus-Justus Heine
<>, the former maintainer.
A minus 1: Ftape documentation
A. Changes
1. Goal
2. I/O Block Size
3. Write Access when not at EOD (End Of Data) or BOT (Begin Of Tape)
4. Formatting
5. Interchanging cartridges with other operating systems
B. Debugging Output
1. Introduction
2. Tuning the debugging output
C. Boot and load time configuration
1. Setting boot time parameters
2. Module load time parameters
3. Ftape boot- and load time options
4. Example kernel parameter setting
5. Example module parameter setting
D. Support and contacts
A minus 1. Ftape documentation
Unluckily, the ftape-HOWTO is out of date. This really needs to be
changed. Up to date documentation as well as recent development
versions of ftape and useful links to related topics can be found at
the ftape home page at
A. Changes
1. Goal
The goal of all that incompatibilities was to give ftape an interface
that resembles the interface provided by SCSI tape drives as close
as possible. Thus any Unix backup program that is known to work
with SCSI tape drives should also work.
The concept of a fixed block size for read/write transfers is
rather unrelated to this SCSI tape compatibility at the file system
interface level. It developed out of a feature of zftape, a
block wise user transparent on-the-fly compression. That compression
support will not be dropped in future releases for compatibility
reasons with previous releases of zftape.
2. I/O Block Size
The block size defaults to 10k which is the default block size of
GNU tar.
The block size can be tuned either during kernel configuration or
at runtime with the MTIOCTOP ioctl using the MTSETBLK operation
(i.e. do "mt -f /dev/qft0" setblk #BLKSZ). A block size of 0
switches to variable block size mode i.e. "mt setblk 0" switches
off the block size restriction. However, this disables zftape's
built in on-the-fly compression which doesn't work with variable
block size mode.
The BLKSZ parameter must be given as a byte count and must be a
multiple of 32k or 0, i.e. use "mt setblk 32768" to switch to a
block size of 32k.
The typical symptom of a block size mismatch is an "invalid
argument" error message.
3. Write Access when not at EOD (End Of Data) or BOT (Begin Of Tape)
zftape (the file system interface of ftape-3.x) denies write access
to the tape cartridge when it isn't positioned either at BOT or
4. Formatting
ftape DOES support formatting of floppy tape cartridges. You need the
`ftformat' program that is shipped with the modules version of ftape.
Please get the latest version of ftape from
or from the ftape home page at
`ftformat' is contained in the `./contrib/' subdirectory of that
separate ftape package.
5. Interchanging cartridges with other operating systems
The internal emulation of Unix tape device file marks has changed
completely. ftape now uses the volume table segment as specified
by the QIC-40/80/3010/3020/113 standards to emulate file marks. As
a consequence there is limited support to interchange cartridges
with other operating systems.
To be more precise: ftape will detect volumes written by other OS's
programs and other OS's programs will detect volumes written by
However, it isn't possible to extract the data dumped to the tape
by some MSDOS program with ftape. This exceeds the scope of a
kernel device driver. If you need such functionality, then go ahead
and write a user space utility that is able to do that. ftape already
provides all kernel level support necessary to do that.
B. Debugging Output
1. Introduction
The ftape driver can be very noisy in that is can print lots of
debugging messages to the kernel log files and the system console.
While this is useful for debugging it might be annoying during
normal use and enlarges the size of the driver by several kilobytes.
To reduce the size of the driver you can trim the maximal amount of
debugging information available during kernel configuration. Please
refer to the kernel configuration script and its on-line help
The amount of debugging output maps to the "tracing" boot time
option and the "ft_tracing" modules option as follows:
0 bugs
1 + errors (with call-stack dump)
2 + warnings
3 + information
4 + more information
5 + program flow
6 + fdc/dma info
7 + data flow
8 + everything else
2. Tuning the debugging output
To reduce the amount of debugging output printed to the system
console you can
i) trim the debugging output at run-time with
mt -f /dev/nqft0 setdensity #DBGLVL
where "#DBGLVL" is a number between 0 and 9
ii) trim the debugging output at module load time with
modprobe ftape ft_tracing=#DBGLVL
Of course, this applies only if you have configured ftape to be
compiled as a module.
iii) trim the debugging output during system boot time. Add the
following to the kernel command line:
Please refer also to the next section if you don't know how to
set boot time parameters.
C. Boot and load time configuration
1. Setting boot time parameters
Assuming that you use lilo, the LI)nux LO)ader, boot time kernel
parameters can be set by adding a line
append some_kernel_boot_time_parameter
to `/etc/lilo.conf' or at real boot time by typing in the options
at the prompt provided by LILO. I can't give you advice on how to
specify those parameters with other loaders as I don't use them.
For ftape, each "some_kernel_boot_time_parameter" looks like
"ftape=value,option". As an example, the debugging output can be
increased with
NOTE: the value precedes the option name.
2. Module load time parameters
Module parameters can be specified either directly when invoking
the program 'modprobe' at the shell prompt:
modprobe ftape ft_tracing=4
or by editing the file `/etc/modprobe.conf' in which case they take
effect each time when the module is loaded with `modprobe' (please
refer to the respective manual pages). Thus, you should add a line
options ftape ft_tracing=4
to `/etc/modprobe.conf` if you intend to increase the debugging
output of the driver.
3. Ftape boot- and load time options
i. Controlling the amount of debugging output
DBGLVL has to be replaced by a number between 0 and 8.
module | kernel command line
ft_tracing=DBGLVL | ftape=DBGLVL,tracing
ii. Hardware setup
BASE is the base address of your floppy disk controller,
IRQ and DMA give its interrupt and DMA channel, respectively.
BOOL is an integer, "0" means "no"; any other value means
"yes". You don't need to specify anything if connecting your tape
drive to the standard floppy disk controller. All of these
values have reasonable defaults. The defaults can be modified
during kernel configuration, i.e. while running "make config",
"make menuconfig" or "make xconfig" in the top level directory
of the Linux kernel source tree. Please refer also to the on
line documentation provided during that kernel configuration
ft_probe_fc10 is set to a non-zero value if you wish for ftape to
probe for a Colorado FC-10 or FC-20 controller.
ft_mach2 is set to a non-zero value if you wish for ftape to probe
for a Mountain MACH-2 controller.
module | kernel command line
ft_fdc_base=BASE | ftape=BASE,ioport
ft_fdc_irq=IRQ | ftape=IRQ,irq
ft_fdc_dma=DMA | ftape=DMA,dma
ft_probe_fc10=BOOL | ftape=BOOL,fc10
ft_mach2=BOOL | ftape=BOOL,mach2
ft_fdc_threshold=THR | ftape=THR,threshold
ft_fdc_rate_limit=RATE | ftape=RATE,datarate
4. Example kernel parameter setting
To configure ftape to probe for a Colorado FC-10/FC-20 controller
and to increase the amount of debugging output a little bit, add
the following line to `/etc/lilo.conf':
append ftape=1,fc10 ftape=4,tracing
5. Example module parameter setting
To do the same, but with ftape compiled as a loadable kernel
module, add the following line to `/etc/modprobe.conf':
options ftape ft_probe_fc10=1 ft_tracing=4
D. Support and contacts
Ftape is distributed under the GNU General Public License. There is
absolutely no warranty for this software. However, you can reach
the current maintainer of the ftape package under the email address
given in the MAINTAINERS file which is located in the top level
directory of the Linux kernel source tree. There you'll find also
the relevant mailing list to use as a discussion forum and the web
page to query for the most recent documentation, related work and
development versions of ftape.
~1996: Original Document
10-24-2004: General cleanup and updating, noting additional module options.
James Nelson <>
......@@ -557,9 +557,6 @@ and is between 256 and 4096 characters. It is defined in the file
floppy= [HW]
See Documentation/floppy.txt.
ftape= [HW] Floppy Tape subsystem debugging options.
See Documentation/ftape.txt.[2|3]=
[HW,JOY] Multisystem joystick and NES/SNES/PSX pad
support via parallel port (up to 5 devices per port)
......@@ -1166,11 +1166,6 @@ P: David Howells
S: Maintained
S: Orphan
P: Miklos Szeredi
......@@ -855,39 +855,6 @@ config TANBAC_TB0219
depends TANBAC_TB022X
select GPIO_VR41XX
menu "Ftape, the floppy tape device driver"
config FTAPE
tristate "Ftape (QIC-80/Travan) support"
depends on BROKEN_ON_SMP && (ALPHA || X86)
If you have a tape drive that is connected to your floppy
controller, say Y here.
Some tape drives (like the Seagate "Tape Store 3200" or the Iomega
"Ditto 3200" or the Exabyte "Eagle TR-3") come with a "high speed"
controller of their own. These drives (and their companion
controllers) are also supported if you say Y here.
If you have a special controller (such as the CMS FC-10, FC-20,
Mountain Mach-II, or any controller that is based on the Intel 82078
FDC like the high speed controllers by Seagate and Exabyte and
Iomega's "Ditto Dash") you must configure it by selecting the
appropriate entries from the "Floppy tape controllers" sub-menu
below and possibly modify the default values for the IRQ and DMA
channel and the IO base in ftape's configuration menu.
If you want to use your floppy tape drive on a PCI-bus based system,
please read the file <file:drivers/char/ftape/README.PCI>.
The ftape kernel driver is also available as a runtime loadable
module. To compile this driver as a module, choose M here: the
module will be called ftape.
source "drivers/char/ftape/Kconfig"
source "drivers/char/agp/Kconfig"
source "drivers/char/drm/Kconfig"
......@@ -78,7 +78,6 @@ obj-$(CONFIG_TOSHIBA) += toshiba.o
obj-$(CONFIG_I8K) += i8k.o
obj-$(CONFIG_DS1620) += ds1620.o
obj-$(CONFIG_HW_RANDOM) += hw_random/
obj-$(CONFIG_FTAPE) += ftape/
obj-$(CONFIG_COBALT_LCD) += lcd.o
obj-$(CONFIG_PPDEV) += ppdev.o
obj-$(CONFIG_NWBUTTON) += nwbutton.o
# Ftape configuration
config ZFTAPE
tristate "Zftape, the VFS interface"
depends on FTAPE
Normally, you want to say Y or M. DON'T say N here or you
The ftape module itself no longer contains the routines necessary
to interface with the kernel VFS layer (i.e. to actually write data
to and read data from the tape drive). Instead the file system
interface (i.e. the hardware independent part of the driver) has
been moved to a separate module.
To compile this driver as a module, choose M here: the
module will be called zftape.
Regardless of whether you say Y or M here, an additional runtime
loadable module called `zft-compressor' which contains code to
support user transparent on-the-fly compression based on Ross
William's lzrw3 algorithm will be produced. If you have enabled the
kernel module loader (i.e. have said Y to "Kernel module loader
support", above) then `zft-compressor' will be loaded
automatically by zftape when needed.
Despite its name, zftape does NOT use compression by default.
int "Default block size"
depends on ZFTAPE
default "10240"
If unsure leave this at its default value, i.e. 10240. Note that
you specify only the default block size here. The block size can be
changed at run time using the MTSETBLK tape operation with the
MTIOCTOP ioctl (i.e. with "mt -f /dev/qft0 setblk #BLKSZ" from the
shell command line).
The probably most striking difference between zftape and previous
versions of ftape is the fact that all data must be written or read
in multiples of a fixed block size. The block size defaults to
10240 which is what GNU tar uses. The values for the block size
should be either 1 or multiples of 1024 up to a maximum value of
63488 (i.e. 62 K). If you specify `1' then zftape's builtin
compression will be disabled.
Reasonable values are `10240' (GNU tar's default block size),
`5120' (afio's default block size), `32768' (default block size some
backup programs assume for SCSI tape drives) or `1' (no restriction
on block size, but disables builtin compression).
comment "The compressor will be built as a module only!"
depends on FTAPE && ZFTAPE
depends on FTAPE!=n && ZFTAPE!=n
default m
int "Number of ftape buffers (EXPERIMENTAL)"
default "3"
Please leave this at `3' unless you REALLY know what you are doing.
It is not necessary to change this value. Values below 3 make the
proper use of ftape impossible, values greater than 3 are a waste of
memory. You can change the amount of DMA memory used by ftape at
runtime with "mt -f /dev/qft0 setdrvbuffer #NUMBUFFERS". Each buffer
wastes 32 KB of memory. Please note that this memory cannot be
swapped out.
config FT_PROC_FS
bool "Enable procfs status report (+2kb)"
depends on FTAPE && PROC_FS
Optional. Saying Y will result in creation of a directory
`/proc/ftape' under the /proc file system. The files can be viewed
with your favorite pager (i.e. use "more /proc/ftape/history" or
"less /proc/ftape/history" or simply "cat /proc/ftape/history"). The
file will contain some status information about the inserted
cartridge, the kernel driver, your tape drive, the floppy disk
controller and the error history for the most recent use of the
kernel driver. Saying Y will enlarge the size of the ftape driver
by approximately 2 KB.
WARNING: When compiling ftape as a module (i.e. saying M to "Floppy
tape drive") it is dangerous to use ftape's /proc file system
interface. Accessing `/proc/ftape' while the module is unloaded will
result in a kernel Oops. This cannot be fixed from inside ftape.
prompt "Debugging output"
depends on FTAPE
bool "Normal"
This option controls the amount of debugging output the ftape driver
is ABLE to produce; it does not increase or diminish the debugging
level itself. If unsure, leave this at its default setting,
i.e. choose "Normal".
Ftape can print lots of debugging messages to the system console
resp. kernel log files. Reducing the amount of possible debugging
output reduces the size of the kernel module by some KB, so it might
be a good idea to use "None" for emergency boot floppies.
If you want to save memory then the following strategy is
recommended: leave this option at its default setting "Normal" until
you know that the driver works as expected, afterwards reconfigure
the kernel, this time specifying "Reduced" or "None" and recompile
and install the kernel as usual. Note that choosing "Excessive"
debugging output does not increase the amount of debugging output
printed to the console but only makes it possible to produce
"Excessive" debugging output.
Please read <file:Documentation/ftape.txt> for a short description
how to control the amount of debugging output.
bool "Excessive"
Extremely verbose output for driver debugging purposes.
config FT_NO_TRACE
bool "Reduced"
Reduced tape driver debugging output.
bool "None"
Suppress all debugging output from the tape drive.
comment "Hardware configuration"
depends on FTAPE
prompt "Floppy tape controllers"
depends on FTAPE
default FT_STD_FDC
config FT_STD_FDC
bool "Standard"
Only change this setting if you have a special controller. If you
didn't plug any add-on card into your computer system but just
plugged the floppy tape cable into the already existing floppy drive
controller then you don't want to change the default setting,
i.e. choose "Standard".
Choose "MACH-2" if you have a Mountain Mach-2 controller.
Choose "FC-10/FC-20" if you have a Colorado FC-10 or FC-20
Choose "Alt/82078" if you have another controller that is located at
an IO base address different from the standard floppy drive
controller's base address of `0x3f0', or uses an IRQ (interrupt)
channel different from `6', or a DMA channel different from
`2'. This is necessary for any controller card that is based on
Intel's 82078 FDC such as Seagate's, Exabyte's and Iomega's "high
speed" controllers.
If you choose something other than "Standard" then please make
sure that the settings for the IO base address and the IRQ and DMA
channel in the configuration menus below are correct. Use the manual
of your tape drive to determine the correct settings!
If you are already successfully using your tape drive with another
operating system then you definitely should use the same settings
for the IO base, the IRQ and DMA channel that have proven to work
with that other OS.
Note that this menu lets you specify only the default setting for
the hardware setup. The hardware configuration can be changed at
boot time (when ftape is compiled into the kernel, i.e. if you
have said Y to "Floppy tape drive") or module load time (i.e. if you
have said M to "Floppy tape drive").
Please read also the file <file:Documentation/ftape.txt> which
contains a short description of the parameters that can be set at
boot or load time. If you want to use your floppy tape drive on a
PCI-bus based system, please read the file
config FT_MACH2
bool "MACH-2"
config FT_PROBE_FC10
bool "FC-10/FC-20"
config FT_ALT_FDC
bool "Alt/82078"
comment "Consult the manuals of your tape drive for the correct settings!"
depends on FTAPE && !FT_STD_FDC
config FT_FDC_BASE
hex "IO base of the floppy disk controller"
depends on FTAPE && !FT_STD_FDC
default "0"
You don't need to specify a value if the following default
settings for the base IO address are correct:
<<< MACH-2 : 0x1E0 >>>
<<< FC-10/FC-20: 0x180 >>>
<<< Secondary : 0x370 >>>