| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Intro | 
 | 2 | ===== | 
 | 3 |  | 
 | 4 | This file describes some issues involved when using the "ftape" | 
 | 5 | floppy tape device driver that comes with the Linux kernel. | 
 | 6 |  | 
 | 7 | ftape has a home page at | 
 | 8 |  | 
 | 9 | http://ftape.dot-heine.de/ | 
 | 10 |  | 
 | 11 | which contains further information about ftape. Please cross check | 
 | 12 | this WWW address against the address given (if any) in the MAINTAINERS | 
 | 13 | file located in the top level directory of the Linux kernel source | 
 | 14 | tree. | 
 | 15 |  | 
 | 16 | NOTE: This is an unmaintained set of drivers, and it is not guaranteed to work. | 
 | 17 | If you are interested in taking over maintenance, contact Claus-Justus Heine | 
 | 18 | <ch@dot-heine.de>, the former maintainer. | 
 | 19 |  | 
 | 20 | Contents | 
 | 21 | ======== | 
 | 22 |  | 
 | 23 | A minus 1: Ftape documentation | 
 | 24 |  | 
 | 25 | A. Changes | 
 | 26 |    1. Goal | 
 | 27 |    2. I/O Block Size | 
 | 28 |    3. Write Access when not at EOD (End Of Data) or BOT (Begin Of Tape) | 
 | 29 |    4. Formatting | 
 | 30 |    5. Interchanging cartridges with other operating systems | 
 | 31 |  | 
 | 32 | B. Debugging Output | 
 | 33 |    1. Introduction | 
 | 34 |    2. Tuning the debugging output | 
 | 35 |  | 
 | 36 | C. Boot and load time configuration | 
 | 37 |    1. Setting boot time parameters | 
 | 38 |    2. Module load time parameters | 
 | 39 |    3. Ftape boot- and load time options | 
 | 40 |    4. Example kernel parameter setting | 
 | 41 |    5. Example module parameter setting | 
 | 42 |  | 
 | 43 | D. Support and contacts | 
 | 44 |  | 
 | 45 | ******************************************************************************* | 
 | 46 |  | 
 | 47 | A minus 1. Ftape documentation | 
 | 48 | ============================== | 
 | 49 |  | 
 | 50 | Unluckily, the ftape-HOWTO is out of date. This really needs to be | 
 | 51 | changed. Up to date documentation as well as recent development | 
 | 52 | versions of ftape and useful links to related topics can be found at | 
 | 53 | the ftape home page at | 
 | 54 |  | 
 | 55 | http://ftape.dot-heine.de/ | 
 | 56 |  | 
 | 57 | ******************************************************************************* | 
 | 58 |  | 
 | 59 | A. Changes | 
 | 60 | ========== | 
 | 61 |  | 
 | 62 | 1. Goal | 
 | 63 |    ~~~~ | 
 | 64 |    The goal of all that incompatibilities was to give ftape an interface | 
 | 65 |    that resembles the interface provided by SCSI tape drives as close | 
 | 66 |    as possible. Thus any Unix backup program that is known to work | 
 | 67 |    with SCSI tape drives should also work. | 
 | 68 |  | 
 | 69 |    The concept of a fixed block size for read/write transfers is | 
 | 70 |    rather unrelated to this SCSI tape compatibility at the file system | 
 | 71 |    interface level. It developed out of a feature of zftape, a | 
 | 72 |    block wise user transparent on-the-fly compression. That compression | 
 | 73 |    support will not be dropped in future releases for compatibility | 
 | 74 |    reasons with previous releases of zftape. | 
 | 75 |  | 
 | 76 | 2. I/O Block Size | 
 | 77 |    ~~~~~~~~~~~~~~ | 
 | 78 |    The block size defaults to 10k which is the default block size of | 
 | 79 |    GNU tar. | 
 | 80 |  | 
 | 81 |    The block size can be tuned either during kernel configuration or | 
 | 82 |    at runtime with the MTIOCTOP ioctl using the MTSETBLK operation | 
 | 83 |    (i.e. do "mt -f /dev/qft0" setblk #BLKSZ). A block size of 0 | 
 | 84 |    switches to variable block size mode i.e. "mt setblk 0" switches | 
 | 85 |    off the block size restriction. However, this disables zftape's | 
 | 86 |    built in on-the-fly compression which doesn't work with variable | 
 | 87 |    block size mode. | 
 | 88 |  | 
 | 89 |    The BLKSZ parameter must be given as a byte count and must be a | 
 | 90 |    multiple of 32k or 0, i.e. use "mt setblk 32768" to switch to a | 
 | 91 |    block size of 32k. | 
 | 92 |  | 
 | 93 |    The typical symptom of a block size mismatch is an "invalid | 
 | 94 |    argument" error message. | 
 | 95 |  | 
 | 96 | 3. Write Access when not at EOD (End Of Data) or BOT (Begin Of Tape) | 
 | 97 |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | 98 |    zftape (the file system interface of ftape-3.x) denies write access | 
 | 99 |    to the tape cartridge when it isn't positioned either at BOT or | 
 | 100 |    EOD. | 
 | 101 |  | 
 | 102 | 4. Formatting | 
 | 103 |    ~~~~~~~~~~ | 
 | 104 |    ftape DOES support formatting of floppy tape cartridges. You need the | 
 | 105 |    `ftformat' program that is shipped with the modules version of ftape. | 
 | 106 |    Please get the latest version of ftape from | 
 | 107 |  | 
 | 108 |    ftp://sunsite.unc.edu/pub/Linux/kernel/tapes | 
 | 109 |  | 
 | 110 |    or from the ftape home page at | 
 | 111 |  | 
 | 112 |    http://ftape.dot-heine.de/ | 
 | 113 |  | 
 | 114 |    `ftformat' is contained in the `./contrib/' subdirectory of that | 
 | 115 |    separate ftape package. | 
 | 116 |  | 
 | 117 | 5. Interchanging cartridges with other operating systems | 
 | 118 |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | 119 |  | 
 | 120 |    The internal emulation of Unix tape device file marks has changed | 
 | 121 |    completely. ftape now uses the volume table segment as specified | 
 | 122 |    by the QIC-40/80/3010/3020/113 standards to emulate file marks. As | 
 | 123 |    a consequence there is limited support to interchange cartridges | 
 | 124 |    with other operating systems. | 
 | 125 |  | 
 | 126 |    To be more precise: ftape will detect volumes written by other OS's | 
 | 127 |    programs and other OS's programs will detect volumes written by | 
 | 128 |    ftape. | 
 | 129 |  | 
 | 130 |    However, it isn't possible to extract the data dumped to the tape | 
 | 131 |    by some MSDOS program with ftape. This exceeds the scope of a | 
 | 132 |    kernel device driver. If you need such functionality, then go ahead | 
 | 133 |    and write a user space utility that is able to do that. ftape already | 
 | 134 |    provides all kernel level support necessary to do that. | 
 | 135 |  | 
 | 136 | ******************************************************************************* | 
 | 137 |  | 
 | 138 | B. Debugging Output | 
 | 139 |    ================ | 
 | 140 |  | 
 | 141 | 1. Introduction | 
 | 142 |    ~~~~~~~~~~~~ | 
 | 143 |    The ftape driver can be very noisy in that is can print lots of | 
 | 144 |    debugging messages to the kernel log files and the system console. | 
 | 145 |    While this is useful for debugging it might be annoying during | 
 | 146 |    normal use and enlarges the size of the driver by several kilobytes. | 
 | 147 |  | 
 | 148 |    To reduce the size of the driver you can trim the maximal amount of | 
 | 149 |    debugging information available during kernel configuration. Please | 
 | 150 |    refer to the kernel configuration script and its on-line help | 
 | 151 |    functionality. | 
 | 152 |  | 
 | 153 |    The amount of debugging output maps to the "tracing" boot time | 
 | 154 |    option and the "ft_tracing" modules option as follows: | 
 | 155 |  | 
 | 156 |    0              bugs | 
 | 157 |    1              + errors (with call-stack dump) | 
 | 158 |    2              + warnings | 
 | 159 |    3              + information | 
 | 160 |    4              + more information | 
 | 161 |    5              + program flow | 
 | 162 |    6              + fdc/dma info | 
 | 163 |    7              + data flow | 
 | 164 |    8              + everything else | 
 | 165 |  | 
 | 166 | 2. Tuning the debugging output | 
 | 167 |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | 168 |    To reduce the amount of debugging output printed to the system | 
 | 169 |    console you can | 
 | 170 |  | 
 | 171 |    i)  trim the debugging output at run-time with | 
 | 172 |  | 
 | 173 |        mt -f /dev/nqft0 setdensity #DBGLVL | 
 | 174 |  | 
 | 175 |        where "#DBGLVL" is a number between 0 and 9 | 
 | 176 |  | 
 | 177 |    ii) trim the debugging output at module load time with | 
 | 178 |  | 
 | 179 |        modprobe ftape ft_tracing=#DBGLVL | 
 | 180 |  | 
 | 181 |        Of course, this applies only if you have configured ftape to be | 
 | 182 |        compiled as a module. | 
 | 183 |  | 
 | 184 |    iii) trim the debugging output during system boot time. Add the | 
 | 185 |        following to the kernel command line: | 
 | 186 |  | 
 | 187 |        ftape=#DBGLVL,tracing | 
 | 188 |  | 
 | 189 |        Please refer also to the next section if you don't know how to | 
 | 190 |        set boot time parameters. | 
 | 191 |  | 
 | 192 | ******************************************************************************* | 
 | 193 |  | 
 | 194 | C. Boot and load time configuration | 
 | 195 |    ================================ | 
 | 196 |  | 
 | 197 | 1. Setting boot time parameters | 
 | 198 |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  | 
 | 199 |    Assuming that you use lilo, the LI)nux LO)ader, boot time kernel | 
 | 200 |    parameters can be set by adding a line | 
 | 201 |  | 
 | 202 |    append some_kernel_boot_time_parameter | 
 | 203 |  | 
 | 204 |    to `/etc/lilo.conf' or at real boot time by typing in the options | 
 | 205 |    at the prompt provided by LILO. I can't give you advice on how to | 
 | 206 |    specify those parameters with other loaders as I don't use them. | 
 | 207 |  | 
 | 208 |    For ftape, each "some_kernel_boot_time_parameter" looks like | 
 | 209 |    "ftape=value,option". As an example, the debugging output can be | 
 | 210 |    increased with | 
 | 211 |  | 
 | 212 |    ftape=4,tracing | 
 | 213 |  | 
 | 214 |    NOTE: the value precedes the option name. | 
 | 215 |  | 
 | 216 | 2. Module load time parameters | 
 | 217 |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | 218 |    Module parameters can be specified either directly when invoking | 
 | 219 |    the program 'modprobe' at the shell prompt: | 
 | 220 |  | 
 | 221 |    modprobe ftape ft_tracing=4 | 
 | 222 |  | 
 | 223 |    or by editing the file `/etc/modprobe.conf' in which case they take | 
 | 224 |    effect each time when the module is loaded with `modprobe' (please | 
 | 225 |    refer to the respective manual pages). Thus, you should add a line | 
 | 226 |  | 
 | 227 |    options ftape ft_tracing=4 | 
 | 228 |  | 
 | 229 |    to `/etc/modprobe.conf` if you intend to increase the debugging | 
 | 230 |    output of the driver. | 
 | 231 |  | 
 | 232 |  | 
 | 233 | 3. Ftape boot- and load time options | 
 | 234 |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | 235 |  | 
 | 236 |    i.   Controlling the amount of debugging output | 
 | 237 |         DBGLVL has to be replaced by a number between 0 and 8. | 
 | 238 |  | 
 | 239 |         module                 |  kernel command line | 
 | 240 |         -----------------------|---------------------- | 
 | 241 |         ft_tracing=DBGLVL      |  ftape=DBGLVL,tracing | 
 | 242 |  | 
 | 243 |    ii.  Hardware setup | 
 | 244 | 	BASE is the base address of your floppy disk controller, | 
 | 245 |         IRQ and DMA give its interrupt and DMA channel, respectively. | 
 | 246 |         BOOL is an integer, "0" means "no"; any other value means | 
 | 247 | 	"yes". You don't need to specify anything if connecting your tape | 
 | 248 |         drive to the standard floppy disk controller. All of these | 
 | 249 | 	values have reasonable defaults. The defaults can be modified | 
 | 250 | 	during kernel configuration, i.e. while running "make config", | 
 | 251 | 	"make menuconfig" or "make xconfig" in the top level directory | 
 | 252 | 	of the Linux kernel source tree. Please refer also to the on | 
 | 253 | 	line documentation provided during that kernel configuration | 
 | 254 | 	process. | 
 | 255 |  | 
 | 256 | 	ft_probe_fc10 is set to a non-zero value if you wish for ftape to | 
 | 257 | 	probe for a Colorado FC-10 or FC-20 controller. | 
 | 258 |  | 
 | 259 | 	ft_mach2 is set to a non-zero value if you wish for ftape to probe | 
 | 260 | 	for a Mountain MACH-2 controller. | 
 | 261 |  | 
 | 262 |         module                 |  kernel command line | 
 | 263 |         -----------------------|---------------------- | 
 | 264 |         ft_fdc_base=BASE       |  ftape=BASE,ioport | 
 | 265 |         ft_fdc_irq=IRQ         |  ftape=IRQ,irq | 
 | 266 |         ft_fdc_dma=DMA         |  ftape=DMA,dma | 
 | 267 |         ft_probe_fc10=BOOL     |  ftape=BOOL,fc10 | 
 | 268 |         ft_mach2=BOOL          |  ftape=BOOL,mach2 | 
 | 269 |         ft_fdc_threshold=THR   |  ftape=THR,threshold | 
 | 270 |         ft_fdc_rate_limit=RATE |  ftape=RATE,datarate | 
 | 271 |  | 
 | 272 | 4. Example kernel parameter setting | 
 | 273 |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  | 
 | 274 |    To configure ftape to probe for a Colorado FC-10/FC-20 controller | 
 | 275 |    and to increase the amount of debugging output a little bit, add | 
 | 276 |    the following line to `/etc/lilo.conf': | 
 | 277 |  | 
 | 278 |    append ftape=1,fc10 ftape=4,tracing | 
 | 279 |  | 
 | 280 | 5. Example module parameter setting | 
 | 281 |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | 282 |    To do the same, but with ftape compiled as a loadable kernel | 
 | 283 |    module, add the following line to `/etc/modprobe.conf': | 
 | 284 |  | 
 | 285 |    options ftape ft_probe_fc10=1 ft_tracing=4 | 
 | 286 |  | 
 | 287 | ******************************************************************************* | 
 | 288 |  | 
 | 289 | D. Support and contacts | 
 | 290 |    ==================== | 
 | 291 |  | 
 | 292 |    Ftape is distributed under the GNU General Public License. There is | 
 | 293 |    absolutely no warranty for this software. However, you can reach | 
 | 294 |    the current maintainer of the ftape package under the email address | 
 | 295 |    given in the MAINTAINERS file which is located in the top level | 
 | 296 |    directory of the Linux kernel source tree. There you'll find also | 
 | 297 |    the relevant mailing list to use as a discussion forum and the web | 
 | 298 |    page to query for the most recent documentation, related work and | 
 | 299 |    development versions of ftape. | 
 | 300 |  | 
 | 301 |    Changelog: | 
 | 302 |    ========== | 
 | 303 |  | 
 | 304 | ~1996:		Original Document | 
 | 305 |  | 
 | 306 | 10-24-2004:	General cleanup and updating, noting additional module options. | 
 | 307 | 		James Nelson <james4765@gmail.com> |