tapes(1M)




NAME

     tapes - creates /dev entries for tape drives attached to the
     system


SYNOPSIS

     /usr/sbin/tapes [-r root_dir]


DESCRIPTION

     devfsadm(1M) is now the preferred command for /dev and /dev-
     ices and should be used instead of tapes.

     tapes creates symbolic links in the  /dev/rmt  directory  to
     the  actual  tape  device  special  files under the /devices
     directory tree. tapes searches the kernel device tree to see
     what  tape  devices  are  attached  to  the system. For each
     equipped tape drive, the following steps are performed:

     1. The /dev/rmt directory is searched for a /dev/rmt/n entry
        that  is  a symbolic link to the /devices special node of
        the current tape drive. If one is found, this  determines
        the logical controller number of the tape drive.

     2. The rest of the special devices associated with the drive
        are checked, and incorrect symbolic links are removed and
        necessary ones added.

     3. If none are found, a new  logical  controller  number  is
        assigned  (the  lowest-unused  number),  and new symbolic
        links are created for all the special devices  associated
        with the drive.

     tapes does not remove links to non-existent  devices;  these
     must be removed by hand.

     tapes is run each time a reconfiguration-boot is  performed,
     or when add_drv(1M) is executed.

  Notice to Driver Writers
     tapes(1M)  considers  all  devices  with   the   node   type
     DDI_NT_TAPE  to  be  tape  devices;  these devices must have
     their minor name created with a specific format.  The  minor
     name  encodes operational modes for the tape device and con-
     sists of an ASCII string of the form [ l,m,h,c,u ][ b  ][  n
     ].

     The first character set is used to specify the tape  density
     of  the device, and are named low (l), medium (m), high (h),
     compressed (c), and ultra (u). These specifiers only express
     a  relative  density;  it  is  up  to  the  driver to assign
     specific meanings as needed. For example, 9 track tape  dev-
     ices  interpret  these  as  actual  bits-per-inch densities,
     where l means 800 BPI, m means 1600 BPI , and h  means  6250
     BPI, whereas 4mm DAT tapes defines l as standard format, and
     m,  h, c and u as compressed format. Drivers may  choose  to
     implement any or all of these format types.

     During normal tape operation (non-BSD behavior), once an EOF
     mark has been reached, subsequent reads from the tape device
     return an error. An explicit IOCTL must be issued  to  space
     over  the  EOF  mark  before  the  next  file can be read. b
     instructs the device to observe BSD behavior, where  reading
     at  EOF  will  cause  the tape device to automatically space
     over the EOF mark and begin reading from the next file.

     n or no-rewind-on-close instructs the driver to  not  rewind
     to  the  beginning of tape when the device is closed. Normal
     behavior for tape devices is to reposition to BOT when clos-
     ing. See mtio(7I).

     The minor number for  tape  devices  should  be  created  by
     encoding  the  device's instance number using the tape macro
     MTMINOR and ORing in the proper combination of density,  BSD
     behavior, and no-rewind flags. See mtio(7I).

     To prevent tapes from attempting to  automatically  generate
     links for a device, drivers must specify a private node type
     and refrain from using the node type string DDI_NT_TAPE when
     callingddi_create_minor_node(9F).


OPTIONS

     The following options are supported:

     -r root_dir
           Causes tapes to presume that  the  /dev/rmt  directory
           tree is found under root_dir, not directly under /.


ERRORS

     If tapes finds entries of a  particular  logical  controller
     linked to different physical controllers, it prints an error
     message and exits without making any  changes  to  the  /dev
     directory, since it cannot determine which of the two alter-
     native logical to physical mappings is  correct.  The  links
     should  be  manually  corrected  or  removed  before another
     reconfiguration boot is performed.


EXAMPLES

     Example 1:  Creating  Tape  Device  Nodes  From  Within  the
     Driver's attach() Function

     This example demonstrates creating tape  device  nodes  from
     within the xktape driver's attach(9E) function.

     #include <sys/mtio.h>
     struct tape_minor_info {
         char *minor_name;
         int   minor_mode;
     };
     /*
      * create all combinations of logical tapes
     */
     static struct tape_minor_info example_tape[] = {
        {"",    0},                     /* default tape */
        {"l",   MT_DENSITY1},
        {"lb",  MT_DENSITY1 | MT_BSD},
        {"lbn", MT_DENSITY1 | MT_BSD | MT_NOREWIND},
        {"m",   MT_DENSITY2},
        {"mb",  MT_DENSITY2 | MT_BSD},
        {"mbn", MT_DENSITY2 | MT_BSD | MT_NOREWIND},
        {"h",   MT_DENSITY3},
        {"hb",  MT_DENSITY3 | MT_BSD},
        {"hbn", MT_DENSITY3 | MT_BSD | MT_NOREWIND},
        {"c",   MT_DENSITY4},
        {"cb",  MT_DENSITY4 | MT_BSD},
        {"cbn", MT_DENSITY4| MT_BSD | MT_NOREWIND},
        {NULL,  0},
     };

     int
     xktapeattach(dev_info_t *dip, ddi_attach_cmd_t cmd)
     {
        int instance;
        struct tape_minor_info *mdp;
           /* other stuff in attach... */
        instance = ddi_get_instance(dip);

        for (mdp = example_tape; mdp->minor_name != NULL; mdp++) {
                 ddi_create_minor_node(dip, mdp->minor_name, S_IFCHR,
                      (MTMINOR(instance) | mdp->minor_mode), DDI_NT_TAPE, 0);
      }

     Installing the xktape driver on a Sun Fire  4800,  with  the
     driver  controlling  a  SCSI  tape  (target 4 attached to an
     isp(7D) SCSI  HBA)  and  performing  a  reconfiguration-boot
     creates the following special files in /devices.

     # ls -l /devices/ssm@0,0/pci@18,700000/pci@1/SUNW,isptwo@4
     crw-rw-rw-   1 root sys   33,136 Aug 29 00:02  xktape@4,0:
     crw-rw-rw-   1 root sys   33,200 Aug 29 00:02  xktape@4,0:b
     crw-rw-rw-   1 root sys   33,204 Aug 29 00:02  xktape@4,0:bn
     crw-rw-rw-   1 root sys   33,152 Aug 29 00:02  xktape@4,0:c
     crw-rw-rw-   1 root sys   33,216 Aug 29 00:02  xktape@4,0:cb
     crw-rw-rw-   1 root sys   33,220 Aug 29 00:02  xktape@4,0:cbn
     crw-rw-rw-   1 root sys   33,156 Aug 29 00:02  xktape@4,0:cn
     crw-rw-rw-   1 root sys   33,144 Aug 29 00:02  xktape@4,0:h
     crw-rw-rw-   1 root sys   33,208 Aug 29 00:02  xktape@4,0:hb
     crw-rw-rw-   1 root sys   33,212 Aug 29 00:02  xktape@4,0:hbn
     crw-rw-rw-   1 root sys   33,148 Aug 29 00:02  xktape@4,0:hn
     crw-rw-rw-   1 root sys   33,128 Aug 29 00:02  xktape@4,0:l
     crw-rw-rw-   1 root sys   33,192 Aug 29 00:02  xktape@4,0:lb
     crw-rw-rw-   1 root sys   33,196 Aug 29 00:02  xktape@4,0:lbn
     crw-rw-rw-   1 root sys   33,132 Aug 29 00:02  xktape@4,0:ln
     crw-rw-rw-   1 root sys   33,136 Aug 29 00:02  xktape@4,0:m
     crw-rw-rw-   1 root sys   33,200 Aug 29 00:02  xktape@4,0:mb
     crw-rw-rw-   1 root sys   33,204 Aug 29 00:02  xktape@4,0:mbn
     crw-rw-rw-   1 root sys   33,140 Aug 29 00:02  xktape@4,0:mn
     crw-rw-rw-   1 root sys   33,140 Aug 29 00:02  xktape@4,0:n

     /dev/rmt will contain the  logical  tape  devices  (symbolic
     links to tape devices in /devices).

     # ls -l /dev/rmt
     /dev/rmt/0    -> ../../devices/[....]/xktape@4,0:
     /dev/rmt/0b   -> ../../devices/[....]/xktape@4,0:b
     /dev/rmt/0bn  -> ../../devices/[....]/xktape@4,0:bn
     /dev/rmt/0c   -> ../../devices/[....]/xktape@4,0:c
     /dev/rmt/0cb  -> ../../devices/[....]/xktape@4,0:cb
     /dev/rmt/0cbn -> ../../devices/[....]/xktape@4,0:cbn
     /dev/rmt/0cn  -> ../../devices/[....]/xktape@4,0:cn
     /dev/rmt/0h   -> ../../devices/[....]/xktape@4,0:h
     /dev/rmt/0hb  -> ../../devices/[....]/xktape@4,0:hb
     /dev/rmt/0hbn -> ../../devices/[....]/xktape@4,0:hbn
     /dev/rmt/0hn  -> ../../devices/[....]/xktape@4,0:hn
     /dev/rmt/0l   -> ../../devices/[....]/xktape@4,0:l
     /dev/rmt/0lb  -> ../../devices/[....]/xktape@4,0:lb
     /dev/rmt/0lbn -> ../../devices/[....]/xktape@4,0:lbn
     /dev/rmt/0ln  -> ../../devices/[....]/xktape@4,0:ln
     /dev/rmt/0m   -> ../../devices/[....]/xktape@4,0:m
     /dev/rmt/0mb  -> ../../devices/[....]/xktape@4,0:mb
     /dev/rmt/0mbn -> ../../devices/[....]/xktape@4,0:mbn
     /dev/rmt/0mn  -> ../../devices/[....]/xktape@4,0:mn
     /dev/rmt/0n   -> ../../devices/[....]/xktape@4,0:n


FILES

     /dev/rmt/*
           logical tape devices

     /devices/*
           tape device nodes


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Availability                | SUNWcsu                     |
    |_____________________________|_____________________________|


SEE ALSO

     add_drv(1M),    devfsadm(1M),    attributes(5),     isp(7D),
     devfs(7FS), mtio(7I), attach(9E), ddi_create_minor_node(9F)

     Writing Device Drivers


BUGS

     tapes silently ignores malformed minor device names.


Man(1) output converted with man2html