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]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(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)

tribblix@gmail.com :: GitHub :: Privacy