Channel attached Tape device driver -----------------------------WARNING----------------------------------------- This driver is considered to be EXPERIMENTAL. Do NOT use it in production environments. Feel free to test it and report problems back to us. ----------------------------------------------------------------------------- The LINUX for zSeries tape device driver manages channel attached tape drives which are compatible to IBM 3480 or IBM 3490 magnetic tape subsystems. This includes various models of these devices (for example the 3490E). Tape driver features The device driver supports a maximum of 128 tape devices. No official LINUX device major number is assigned to the zSeries tape device driver. It allocates major numbers dynamically and reports them on system startup. Typically it will get major number 254 for both the character device front-end and the block device front-end. The tape device driver needs no kernel parameters. All supported devices present are detected on driver initialization at system startup or module load. The devices detected are ordered by their subchannel numbers. The device with the lowest subchannel number becomes device 0, the next one will be device 1 and so on. Tape character device front-end The usual way to read or write to the tape device is through the character device front-end. The zSeries tape device driver provides two character devices for each physical device -- the first of these will rewind automatically when it is closed, the second will not rewind automatically. The character device nodes are named /dev/rtibm0 (rewinding) and /dev/ntibm0 (non-rewinding) for the first device, /dev/rtibm1 and /dev/ntibm1 for the second, and so on. The character device front-end can be used as any other LINUX tape device. You can write to it and read from it using LINUX facilities such as GNU tar. The tool mt can be used to perform control operations, such as rewinding the tape or skipping a file. Most LINUX tape software should work with either tape character device. Tape block device front-end The tape device may also be accessed as a block device in read-only mode. This could be used for software installation in the same way as it is used with other operation systems on the zSeries platform (and most LINUX distributions are shipped on compact disk using ISO9660 filesystems). One block device node is provided for each physical device. These are named /dev/btibm0 for the first device, /dev/btibm1 for the second and so on. You should only use the ISO9660 filesystem on LINUX for zSeries tapes because the physical tape devices cannot perform fast seeks and the ISO9660 system is optimized for this situation. Tape block device example In this example a tape with an ISO9660 filesystem is created using the first tape device. ISO9660 filesystem support must be built into your system kernel for this. The mt command is used to issue tape commands and the mkisofs command to create an ISO9660 filesystem: - create a LINUX directory (somedir) with the contents of the filesystem mkdir somedir cp contents somedir - insert a tape - ensure the tape is at the beginning mt -f /dev/ntibm0 rewind - set the blocksize of the character driver. The blocksizes 512, 1024 and 2048 bytes are supported by ISO9660. 1024 is the default, u which will be used here. mt -f /dev/ntibm0 setblk 1024 - write the filesystem to the character device driver mkisofs -o /dev/ntibm0 somedir - rewind the tape again mt -f /dev/ntibm0 rewind - Now you can mount your new filesystem as a block device: mount -t iso9660 -o ro,block=1024 /dev/btibm0 /mnt TODO List - The backend code has to be enhanced to support error-recovery actions. - The seeking algorithm of the block device has to be improved to speed things up BUGS There are lots of weaknesses still in the code. This is why it is EXPERIMENTAL. If an error occurs which cannot be handled by the code you will get a sense-data dump.In that case please do the following: 1. set the tape driver debug level to maximum: echo 6 >/proc/s390dbf/tape/level 2. re-perform the actions which produced the bug. (Hopefully the bug will reappear.) 3. get a snapshot from the debug-feature: cat /proc/s390dbf/tape/hex_ascii >somefile 4. Now put the snapshot together with a detailed description of the situation that led to the bug: - Which tool did you use? - Which hardware do you have? - Was your tape unit online? - Is it a shared tape unit? 5. Send an email with your bug report to: mailto:Linux390@de.ibm.com