disks(1M)




NAME

     disks - creates /dev entries for hard disks attached to  the
     system


SYNOPSIS

     /usr/sbin/disks [-C] [-r rootdir]


DESCRIPTION

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

     disks creates symbolic links in the  /dev/dsk and  /dev/rdsk
     directories pointing to the actual disk device special files
     under the  /devices directory tree. It performs the  follow-
     ing steps:

     1. disks searches the kernel device tree to  see  what  hard
        disks  are  attached to the system. It notes the /devices
        pathnames for the slices on the drive and determines  the
        physical  component  of  the  corresponding  /dev/dsk  or
        /dev/rdsk name.

     2. The  /dev/dsk and  /dev/rdsk directories are checked  for
        disk  entries - that is, symbolic links with names of the
        form cN[tN]dNsN, or  cN[tN]dNpN,  where  N  represents  a
        decimal  number.  cN is the logical controller number, an
        arbitrary number assigned by this program to designate  a
        particular disk controller. The first controller found on
        the first occasion this program is run on  a  system,  is
        assigned  number   0.  tN  is the bus-address number of a
        subsidiary controller attached to a peripheral  bus  such
        as   SCSI  or  IPI (the  target number for  SCSI, and the
        facility number for  IPI controllers). dN is  the  number
        of  the disk attached to the controller. sN is the  slice
        number on the disk. pN is the FDISK partition number used
        by fdisk(1M). (x86 Only)

     3. If only some of the disk entries are  found  in  /dev/dsk
        for  a disk that has been found under the /devices direc-
        tory tree, disks creates the missing symbolic  links.  If
        none  of  the  entries for a particular disk are found in
        /dev/dsk, disks checks to see if any  entries  exist  for
        other  disks  attached to the same controller, and if so,
        creates new entries using the same controller  number  as
        used  for other disks on the same controller. If no other
        /dev/dsk entries are found for slices of disks  belonging
        to  the  same  physical  controller  as the current disk,
        disks assigns the  lowest-unused  controller  number  and
        creates  entries  for  the  disk slices using this newly-
        assigned controller number.

     disks is run automatically each time a  reconfiguration-boot
     is  performed or when add_drv(1M) is executed. When invoking
     disks(1M) manually, first run drvconfig(1M) to ensure  /dev-
     ices is consistent with the current device configuration.

  Notice to Driver Writers
     disks  considers  all  devices   with   a   node   type   of
     DDI_NT_BLOCK, DDI_NT_BLOCK_CHAN, DDI_NT_CD, DDI_NT_BLOCK_WWN
     or  DDI_NT_CD_CHAN to be disk  devices.  disks(1M)  requires
     the  minor  name  of  disk devices obey the following format
     conventions.

     The minor name for block interfaces  consists  of  a  single
     lowercase ASCII character,  a through  u. The minor name for
     character (raw)  interfaces consists of a  single  lowercase
     ASCII character,  a through u, followed by  ,raw.

     disks translates  a through  p to  s0 through  s15, while it
     translates  q through
      u to  p0 through  p4. SPARC drivers  should  only  use  the
     first  8  slices:  a through  h, while x86 drivers can use a
     through  u, with  q through  u corresponding  to   fdisk(1M)
     partitions.  q  represents  the entire disk, while  r, s, t,
     and  u represent up to 4 additional partitions.

     To prevent disks from attempting to  automatically  generate
     links  for  a  device,  drivers  must specify a private node
     type and refrain from  using  a  node  type:   DDI_NT_BLOCK,
     DDI_NT_BLOCK_CHAN,  DDI_NT_CD,  or  DDI_NT_CD_CHAN when cal-
     ling ddi_create_minor_node(9F).


OPTIONS

     -C    Causes disks to remove any invalid links after  adding
           any  new  entries  to  /dev/dsk and /dev/rdsk. Invalid
           links are links which refer to non-existent disk nodes
           that  have been removed, powered off, or are otherwise
           inaccessible.

     -r rootdir
           Causes disks to presume that the  /dev/dsk,  /dev/rdsk
           and /devices directory trees are found under  rootdir,
           not directly under /.


ERRORS

     If disks 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 The Block  And Character  Minor  Devices
     From Within The  xkdisk Driver's attach(9E) Function.

     The following example demonstrates creating the  block   and
     character  minor  devices  from  within the  xkdisk driver's
     attach(9E) function.

     #include    <sys/dkio.h>
     /*
      * Create the minor number by combining the instance number
      * with the slice number.
      */
     #define MINOR_NUM(i, s)       ((i) << 4 | (s))

     int
     xkdiskattach(dev_info_t *dip, ddi_attach_cmd_t cmd)
     {
         int instance, slice;
         char name[8];

          /* other stuff in attach... */

         instance = ddi_get_instance(dip);
         for (slice = 0; slice < V_NUMPAR; slice++) {
             /*
              * create block device interface
              */
             sprintf(name, "%c", slice + 'a');
             ddi_create_minor_node(dip, name, S_IFBLK,
                 MINOR_NUM(instance, slice), DDI_NT_BLOCK_CHAN, 0);

             /*
              * create the raw (character) device interface
              */
             sprintf(name,"%c,raw", slice + 'a');
             ddi_create_minor_node(dip, name, S_IFCHR,
                 MINOR_NUM(instance, slice), DDI_NT_BLOCK_CHAN, 0);
         }
     }

     Installing the  xkdisk disk driver  on  a  SPARCstation  20,
     with the  driver controlling a  SCSI disk (target 3 attached
     to an esp(7D) SCSI HBA) and  performing  a  reconfiguration-
     boot (causing disks to be run) creates the following special
     files in  /devices.

     # ls -l /devices/iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/
     brw-r-----   1 root sys   32, 16 Aug 29 00:02 xkdisk@3,0:a
     crw-r-----   1 root sys   32, 16 Aug 29 00:02 xkdisk@3,0:a,raw
     brw-r-----   1 root sys   32, 17 Aug 29 00:02 xkdisk@3,0:b
     crw-r-----   1 root sys   32, 17 Aug 29 00:02 xkdisk@3,0:b,raw
     brw-r-----   1 root sys   32, 18 Aug 29 00:02 xkdisk@3,0:c
     crw-r-----   1 root sys   32, 18 Aug 29 00:02 xkdisk@3,0:c,raw
     brw-r-----   1 root sys   32, 19 Aug 29 00:02 xkdisk@3,0:d
     crw-r-----   1 root sys   32, 19 Aug 29 00:02 xkdisk@3,0:d,raw
     brw-r-----   1 root sys   32, 20 Aug 29 00:02 xkdisk@3,0:e
     crw-r-----   1 root sys   32, 20 Aug 29 00:02 xkdisk@3,0:e,raw
     brw-r-----   1 root sys   32, 21 Aug 29 00:02 xkdisk@3,0:f
     crw-r-----   1 root sys   32, 21 Aug 29 00:02 xkdisk@3,0:f,raw
     brw-r-----   1 root sys   32, 22 Aug 29 00:02 xkdisk@3,0:g
     crw-r-----   1 root sys   32, 22 Aug 29 00:02 xkdisk@3,0:g,raw
     brw-r-----   1 root sys   32, 23 Aug 29 00:02 xkdisk@3,0:h
     crw-r-----   1 root sys   32, 23 Aug 29 00:02 xkdisk@3,0:h,raw

     /dev/dsk will contain the disk entries to the  block  device
     nodes in /devices

     # ls -l /dev/dsk
     /dev/dsk/c0t3d0s0 -> ../../devices/[...]/xkdisk@3,0:a
     /dev/dsk/c0t3d0s1 -> ../../devices/[...]/xkdisk@3,0:b
     /dev/dsk/c0t3d0s2 -> ../../devices/[...]/xkdisk@3,0:c
     /dev/dsk/c0t3d0s3 -> ../../devices/[...]/xkdisk@3,0:d
     /dev/dsk/c0t3d0s4 -> ../../devices/[...]/xkdisk@3,0:e
     /dev/dsk/c0t3d0s5 -> ../../devices/[...]/xkdisk@3,0:f
     /dev/dsk/c0t3d0s6 -> ../../devices/[...]/xkdisk@3,0:g
     /dev/dsk/c0t3d0s7 -> ../../devices/[...]/xkdisk@3,0:h

     and /dev/rdsk will contain the disk entries for the  charac-
     ter device nodes in /devices

     # ls -l /dev/rdsk
     /dev/rdsk/c0t3d0s0 -> ../../devices/[...]/xkdisk@3,0:a,raw
     /dev/rdsk/c0t3d0s1 -> ../../devices/[...]/xkdisk@3,0:b,raw
     /dev/rdsk/c0t3d0s2 -> ../../devices/[...]/xkdisk@3,0:c,raw
     /dev/rdsk/c0t3d0s3 -> ../../devices/[...]/xkdisk@3,0:d,raw
     /dev/rdsk/c0t3d0s4 -> ../../devices/[...]/xkdisk@3,0:e,raw
     /dev/rdsk/c0t3d0s5 -> ../../devices/[...]/xkdisk@3,0:f,raw
     /dev/rdsk/c0t3d0s6 -> ../../devices/[...]/xkdisk@3,0:g,raw
     /dev/rdsk/c0t3d0s7 -> ../../devices/[...]/xkdisk@3,0:h,raw


FILES

     /dev/dsk/*
           disk entries (block device interface)

     /dev/rdsk/*
           disk entries (character device interface)

     /devices/*
           device special files (minor 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),  devlinks(1M),   drvconfig(1M),
     fdisk(1M),  ports(1M),  tapes(1M),  attributes(5), dkio(7I),
     esp(7D), attach(9E), ddi_create_minor_node(9F)

     Writing Device Drivers


BUGS

     disks silently ignores malformed minor device names.


Man(1) output converted with man2html