DISKS(8) Maintenance 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)