DISKS(8) | Maintenance Commands and Procedures | DISKS(8) |
disks - creates /dev entries for hard disks attached to the system
/usr/sbin/disks [-C] [-r rootdir]
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:
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.
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:
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).
The following options are supported:
-C
-r rootdir
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.
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
/dev/dsk/*
/dev/rdsk/*
/devices/*
isp(4D), devfs(4FS), dkio(4I), attributes(7), add_drv(8), devfsadm(8), fdisk(8), attach(9E), ddi_create_minor_node(9F)
disks silently ignores malformed minor device names.
July 2, 2009 | OmniOS |