| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Channel attached Tape device driver | 
|  | 2 |  | 
|  | 3 | -----------------------------WARNING----------------------------------------- | 
|  | 4 | This driver is considered to be EXPERIMENTAL. Do NOT use it in | 
|  | 5 | production environments. Feel free to test it and report problems back to us. | 
|  | 6 | ----------------------------------------------------------------------------- | 
|  | 7 |  | 
|  | 8 | The LINUX for zSeries tape device driver manages channel attached tape drives | 
|  | 9 | which are compatible to IBM 3480 or IBM 3490 magnetic tape subsystems. This | 
|  | 10 | includes various models of these devices (for example the 3490E). | 
|  | 11 |  | 
|  | 12 |  | 
|  | 13 | Tape driver features | 
|  | 14 |  | 
|  | 15 | The device driver supports a maximum of 128 tape devices. | 
|  | 16 | No official LINUX device major number is assigned to the zSeries tape device | 
|  | 17 | driver. It allocates major numbers dynamically and reports them on system | 
|  | 18 | startup. | 
|  | 19 | Typically it will get major number 254 for both the character device front-end | 
|  | 20 | and the block device front-end. | 
|  | 21 |  | 
|  | 22 | The tape device driver needs no kernel parameters. All supported devices | 
|  | 23 | present are detected on driver initialization at system startup or module load. | 
|  | 24 | The devices detected are ordered by their subchannel numbers. The device with | 
|  | 25 | the lowest subchannel number becomes device 0, the next one will be device 1 | 
|  | 26 | and so on. | 
|  | 27 |  | 
|  | 28 |  | 
|  | 29 | Tape character device front-end | 
|  | 30 |  | 
|  | 31 | The usual way to read or write to the tape device is through the character | 
|  | 32 | device front-end. The zSeries tape device driver provides two character devices | 
|  | 33 | for each physical device -- the first of these will rewind automatically when | 
|  | 34 | it is closed, the second will not rewind automatically. | 
|  | 35 |  | 
|  | 36 | The character device nodes are named /dev/rtibm0 (rewinding) and /dev/ntibm0 | 
|  | 37 | (non-rewinding) for the first device, /dev/rtibm1 and /dev/ntibm1 for the | 
|  | 38 | second, and so on. | 
|  | 39 |  | 
|  | 40 | The character device front-end can be used as any other LINUX tape device. You | 
|  | 41 | can write to it and read from it using LINUX facilities such as GNU tar. The | 
|  | 42 | tool mt can be used to perform control operations, such as rewinding the tape | 
|  | 43 | or skipping a file. | 
|  | 44 |  | 
|  | 45 | Most LINUX tape software should work with either tape character device. | 
|  | 46 |  | 
|  | 47 |  | 
|  | 48 | Tape block device front-end | 
|  | 49 |  | 
|  | 50 | The tape device may also be accessed as a block device in read-only mode. | 
|  | 51 | This could be used for software installation in the same way as it is used with | 
|  | 52 | other operation systems on the zSeries platform (and most LINUX | 
|  | 53 | distributions are shipped on compact disk using ISO9660 filesystems). | 
|  | 54 |  | 
|  | 55 | One block device node is provided for each physical device. These are named | 
|  | 56 | /dev/btibm0 for the first device, /dev/btibm1 for the second and so on. | 
|  | 57 | You should only use the ISO9660 filesystem on LINUX for zSeries tapes because | 
|  | 58 | the physical tape devices cannot perform fast seeks and the ISO9660 system is | 
|  | 59 | optimized for this situation. | 
|  | 60 |  | 
|  | 61 |  | 
|  | 62 | Tape block device example | 
|  | 63 |  | 
|  | 64 | In this example a tape with an ISO9660 filesystem is created using the first | 
|  | 65 | tape device. ISO9660 filesystem support must be built into your system kernel | 
|  | 66 | for this. | 
|  | 67 | The mt command is used to issue tape commands and the mkisofs command to | 
|  | 68 | create an ISO9660 filesystem: | 
|  | 69 |  | 
|  | 70 | - create a LINUX directory (somedir) with the contents of the filesystem | 
|  | 71 | mkdir somedir | 
|  | 72 | cp contents somedir | 
|  | 73 |  | 
|  | 74 | - insert a tape | 
|  | 75 |  | 
|  | 76 | - ensure the tape is at the beginning | 
|  | 77 | mt -f /dev/ntibm0 rewind | 
|  | 78 |  | 
|  | 79 | - set the blocksize of the character driver. The blocksize 2048 bytes | 
|  | 80 | is commonly used on ISO9660 CD-Roms | 
|  | 81 | mt -f /dev/ntibm0 setblk 2048 | 
|  | 82 |  | 
|  | 83 | - write the filesystem to the character device driver | 
|  | 84 | mkisofs -o /dev/ntibm0 somedir | 
|  | 85 |  | 
|  | 86 | - rewind the tape again | 
|  | 87 | mt -f /dev/ntibm0 rewind | 
|  | 88 |  | 
|  | 89 | - Now you can mount your new filesystem as a block device: | 
|  | 90 | mount -t iso9660 -o ro,block=2048 /dev/btibm0 /mnt | 
|  | 91 |  | 
|  | 92 | TODO List | 
|  | 93 |  | 
|  | 94 | - Driver has to be stabilized still | 
|  | 95 |  | 
|  | 96 | BUGS | 
|  | 97 |  | 
|  | 98 | This driver is considered BETA, which means some weaknesses may still | 
|  | 99 | be in it. | 
|  | 100 | If an error occurs which cannot be handled by the code you will get a | 
|  | 101 | sense-data dump.In that case please do the following: | 
|  | 102 |  | 
|  | 103 | 1. set the tape driver debug level to maximum: | 
|  | 104 | echo 6 >/proc/s390dbf/tape/level | 
|  | 105 |  | 
|  | 106 | 2. re-perform the actions which produced the bug. (Hopefully the bug will | 
|  | 107 | reappear.) | 
|  | 108 |  | 
|  | 109 | 3. get a snapshot from the debug-feature: | 
|  | 110 | cat /proc/s390dbf/tape/hex_ascii >somefile | 
|  | 111 |  | 
|  | 112 | 4. Now put the snapshot together with a detailed description of the situation | 
|  | 113 | that led to the bug: | 
|  | 114 | - Which tool did you use? | 
|  | 115 | - Which hardware do you have? | 
|  | 116 | - Was your tape unit online? | 
|  | 117 | - Is it a shared tape unit? | 
|  | 118 |  | 
|  | 119 | 5. Send an email with your bug report to: | 
|  | 120 | mailto:Linux390@de.ibm.com | 
|  | 121 |  | 
|  | 122 |  |