disks(1M) System Administration Commands disks(1M)NAMEdisks - creates /dev entries for hard disks attached to the system
SYNOPSIS
/usr/sbin/disks [-C] [-r rootdir]
DESCRIPTIONdevfsadm(1M) 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]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 num‐
ber 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 cre‐
ates 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 used
for other disks on the same controller. If no other /dev/dsk
entries are found for slices of disks belonging to the same physi‐
cal 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 per‐
formed or when add_drv(1M) is executed. When invoking disks(1M) manu‐
ally, first run drvconfig(1M) 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(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) inter‐
faces 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 parti‐
tions.
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(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
/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)
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌─────────────────────────────┬─────────────────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├─────────────────────────────┼─────────────────────────────┤
│Availability │SUNWcsu │
└─────────────────────────────┴─────────────────────────────┘
SEE ALSOadd_drv(1M), devfsadm(1M), fdisk(1M), attributes(5), isp(7D),
devfs(7FS), dkio(7I), attach(9E), ddi_create_minor_node(9F)
Writing Device Drivers
BUGSdisks silently ignores malformed minor device names.
SunOS 5.10 7 Nov 2002 disks(1M)