DISKS(8)             Maintenance Commands and Procedures            DISKS(8)
NAME
       disks - creates /dev entries for hard disks attached to the system
SYNOPSIS
       /usr/sbin/disks [
-C] [
-r rootdir]
DESCRIPTION
       devfsadm(8) is now the preferred command for 
/dev 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 following 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]
dN
pN, 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(8).
                  (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 directory
                  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(8) is executed. When invoking 
disks       manually, first run 
drvconfig(8) to ensure 
/devices 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 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, representing the slices and the primary
       partitions. The minor name for logical drive block interfaces
       consists of the strings 
p5 through 
p36. The minor name for character
       (raw) interfaces consists of a single lowercase ASCII character, 
a       through 
a, followed by the string 
,raw, representing the slices and
       the primary partitions. The minor name for logical drive character
       (raw) interfaces consists of the string 
p5 through 
p36 followed by       
,raw.       
disks performs the following translations:
           o      
a through 
p to 
s0 through 
s15           o      
q through 
u to 
p0 through 
p4           o      
p5 through 
p36 to 
p5 through 
p36       SPARC drivers should only use the first eight slices: 
a through 
h,
       while x86 drivers can use 
a through 
u, with 
q through 
u corresponding
       to 
fdisk(8) primary partitions. 
q represents the entire disk, while       
r, 
s, 
t, and 
u represent up to four additional primary partitions.
       For logical drives, 
p5 to 
p36 correspond to the 32 logical drives
       that are supported. The device nodes for logical drives change
       dynamically as and when they are created or deleted.
       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 calling 
ddi_create_minor_node(9F).
OPTIONS
       The following options are supported:       
-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 alternative logical-to-physical mappings
       is correct. The links should be manually corrected or removed before
       another reconfiguration-boot is performed.
EXAMPLES
       Example 1: Creating Block and Character Minor Devices
       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 Sun Fire 4800, with the driver
       controlling a 
SCSI disk (target 3 attached to an 
isp(4D) SCSI HBA)       and performing a reconfiguration-boot (causing disks to be run)
       creates the following special files in 
/devices.
         # ls -l /devices/ssm@0,0/pci@18,700000/pci@1/SUNW,isptwo@4/
         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 character 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)
SEE ALSO
       isp(4D), 
devfs(4FS), 
dkio(4I), 
attributes(7), 
add_drv(8),       
devfsadm(8), 
fdisk(8), 
attach(9E), 
ddi_create_minor_node(9F)BUGS
       disks silently ignores malformed minor device names.
                                July 2, 2009                        DISKS(8)