System Administration Commands disks(1M)
NAME
disks - creates /dev entries for hard disks attached to the
systemSYNOPSIS
/usr/sbin/disks [-C] [-r rootdir]
DESCRIPTION
devfsadm(1M) is now the preferred command for /dev andshould 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 checkedfor 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 bythis program to designate a particular disk con-
troller. The first controller found on the first occasion this program is run on a system, isassigned 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 con-
troller. 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 directory tree, disks creates the missing
symbolic links. If none of the entries for a par-
ticular 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 usedfor 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 theSunOS 5.11 Last change: 2 Jul 2009 1
System Administration Commands disks(1M)
current disk, disks assigns the lowest-unused con-
troller number and creates entries for the diskslices 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 manually, first run drvconfig(1M) to ensure /devices
is consistent with the current device configuration. Notice to Driver Writersdisks 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 conven-
tions. The minor name for block interfaces consists of a single lowercase ASCII character, a through u, representing theslices and the primary partitions. The minor name for logi-
cal 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 theprimary partitions. The minor name for logical drive charac-
ter (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(1M) 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 typeand refrain from using a node type: DDI_NT_BLOCK,
SunOS 5.11 Last change: 2 Jul 2009 2
System Administration Commands disks(1M)
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 referto non-existent disk nodes that have been
removed, powered off, or are otherwise inac-
cessible.-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 /devdirectory, 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 anotherreconfiguration-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
/* * Create the minor number by combining the instance number * with the slice number. */#define MINOR_NUM(i, s) ((i) << 4 | (s))
intxkdiskattach(dev_info_t *dip, ddi_attach_cmd_t cmd)
{ int instance, slice; char name[8]; /* other stuff in attach... */SunOS 5.11 Last change: 2 Jul 2009 3
System Administration Commands disks(1M)
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 anisp(7D) 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
SunOS 5.11 Last change: 2 Jul 2009 4
System Administration Commands disks(1M)
/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 | SUNWcs ||_____________________________|_____________________________|
SEE ALSO
add_drv(1M), devfsadm(1M), fdisk(1M), attributes(5),
isp(7D), devfs(7FS), dkio(7I), attach(9E),SunOS 5.11 Last change: 2 Jul 2009 5
System Administration Commands disks(1M)
ddi_create_minor_node(9F)
BUGS
disks silently ignores malformed minor device names.
SunOS 5.11 Last change: 2 Jul 2009 6