SD(4D) Devices SD(4D)
NAME
sd - SCSI disk and ATAPI/SCSI CD-ROM device driver
SYNOPSIS
sd@target,lun:partitionDESCRIPTION
To open a device without checking if the vtoc is valid, use the O_NDELAY
flag. When the device is opened using O_NDELAY, the first read or write
to the device that happens after the open results in the label being read
if the label is not currently valid. Once read, the label remains valid
until the last close of the device. Except for reading the label,
O_NDELAY has no impact on the driver.
SPARC
The
sd SCSI and
SCSI/ATAPI driver supports embedded
SCSI-2 and
CCS-compatible
SCSI disk and CD-ROM drives,
ATAPI 2.6
(SFF-8020i)-compliant CD-ROM drives, SFF-8090-compliant
SCSI/ATAPI DVD-
ROM drives, IOMEGA
SCSI/ATAPI ZIP drives,
SCSI JAZ drives, and USB mass
storage devices (refer to
scsa2usb(4D)).
To determine the disk drive type, use the
SCSI/ATAPI inquiry command and
read the volume label stored on block 0 of the drive. (The volume label
describes the disk geometry and partitioning and must be present for the
disk to be mounted by the system.) A volume label is not required for
removable, re-writable or read-only media.
x86 Only The
sd driver supports embedded
SCSI-2 and
CCS-compatible
SCSI disk and
CD-ROM drives,
ATAPI 2.6 (SFF-8020i)-compliant CD-ROM drives,
SFF-8090-compliant
SCSI/ATAPI DVD-ROM drives, IOMEGA
SCSI/ATAPI ZIP
drives
, and SCSI JAZ drives.
The x86 BIOS legacy requires a master boot record (MBR) and
fdisk table
in the first physical sector of the bootable media. If the x86 hard disk
contains a Solaris disk label, it is located in the second 512-byte
sector of the FDISK partition.
DEVICE SPECIAL FILES
Block-files access the disk using normal buffering mechanism and are
read-from and written-to without regard to physical disk records. A
raw interface enables direct transmission between the disk and the user's
read or write buffer. A single
read or
write call usually results in a
single I/O operation, therefore raw I/O is more efficient when many bytes
are transmitted. Block files names are found in
/dev/dsk; raw file names
are found in
/dev/rdsk.
I/O requests to the raw device must be aligned on a 512-byte (
DEV_BSIZE)
boundary and all I/O request lengths must be in multiples of 512 bytes.
Requests that do not meet these requirements will trigger an
EINVAL error. There are no alignment or length restrictions on I/O requests to
the block device.
CD-ROM DRIVE SUPPORT A CD-ROM disk is single-sided and contains approximately 640 megabytes of
data or 74 minutes of audio. When the CD-ROM is opened, the eject button
is disabled to prevent manual removal of the disk until the last
close() is called. No volume label is required for a CD-ROM. The disk geometry
and partitioning information are constant and never change. If the CD-ROM
contains data recorded in a Solaris-aware file system format, it can be
mounted using the appropriate Solaris file system support.
DVD-ROM DRIVE SUPPORT DVD-ROM media can be single or double-sided and can be recorded upon
using a single or double layer structure. Double-layer media provides
parallel or opposite track paths. A DVD-ROM can hold from between 4.5
Gbytes and 17 Gbytes of data, depending on the layer structure used for
recording and if the DVD-ROM is single or double-sided.
When the DVD-ROM is opened, the eject button is disabled to prevent the
manual removal of a disk until the last
close() is called. No volume
label is required for a DVD-ROM. If the DVD-ROM contains data recorded in
a Solaris-aware file system format, it can be mounted using the
appropriate Solaris file system support.
ZIP/JAZ DRIVE SUPPORT ZIP/JAZ media provide varied data capacity points; a single
JAZ drive can
store up to 2 GBytes of data, while a ZIP-250 can store up to 250MBytes
of data.
ZIP/JAZ drives can be read-from or written-to using the
appropriate drive.
When a
ZIP/JAZ drive is opened, the eject button is disabled to prevent
the manual removal of a disk until the last
close() is called. No volume
label is required for a
ZIP/JAZ drive. If the
ZIP/JAZ drive contains data
recorded in a Solaris-aware file system format, it can be mounted using
the appropriate Solaris file system support.
DEVICE STATISTICS SUPPORT
Each device maintains I/O statistics for the device and for partitions
allocated for that device. For each device/partition, the driver
accumulates reads, writes, bytes read, and bytes written. The driver also
initiates hi-resolution time stamps at queue entry and exit points to
enable monitoring of residence time and cumulative residence-length
product for each queue.
Not all device drivers make per-partition IO statistics available for
reporting.
sd and
ssd(4D) per-partition statistics are enabled by default
but may be disabled in their configuration files.
IOCTLS
Refer to
dkio(4I), and
cdio(4I) ERRORS
EACCES Permission denied
EBUSY The partition was opened exclusively by another thread
EFAULT The argument features a bad address
EINVAL Invalid argument
ENOTTY The device does not support the requested ioctl function
ENXIO During opening, the device did not exist. During close, the
drive unlock failed
EROFS The device is read-only
EAGAIN Resource temporarily unavailable
EINTR A signal was caught during the execution of the
ioctl() function
ENOMEM Insufficient memory
EPERM Insufficient access permission
EIO An I/O error occurred. Refer to notes for details on copy-
protected DVD-ROM media.
CONFIGURATION
The
sd driver can be configured by defining properties in the
sd.conf file. The
sd driver supports the following properties:
enable-partition-kstats The default value is 1, which causes partition
IO statistics to be maintained. Set this
value to zero to prevent the driver from
recording partition statistics. This slightly
reduces the CPU overhead for IO, minimizes the
amount of
sar(1) data collected and makes
these statistics unavailable for reporting by
iostat(8) even though the
-p/
-P option is
specified. Regardless of this setting, disk IO
statistics are always maintained.
qfull-retries The supplied value is passed as the
qfull- retries capability value of the HBA driver.
See
scsi_ifsetcap(9F) for details.
qfull-retry-interval The supplied value is passed as the
qfull- retry interval capability value of the HBA
driver. See
scsi_ifsetcap(9F) for details.
allow-bus-device-reset The default value is 1, which allows resetting
to occur. Set this value to
0 (zero) to
prevent the
sd driver from calling
scsi_reset(9F) with a second argument of
RESET_TARGET when in error-recovery mode. This
scsi_reset(9F) call may prompt the HBA driver
to send a SCSI Bus Device Reset message. The
scsi_reset(9F) call with a second argument of
RESET_TARGET may result from an explicit
request via the
USCSICMD ioctl. Some high-
availability multi-initiator systems may wish
to prohibit the Bus Device Reset message; to
do this, set the
allow-bus-device-reset property to
0.
optical-device-bind Controls the binding of the driver to non
self-identifying SCSI target optical devices.
(See
scsi(5)). The default value is 1, which
causes
sd to bind to DTYPE_OPTICAL devices (as
noted in
scsi(5)). Setting this value to 0
prevents automatic binding. The default
behavior for the SPARC-based
sd driver prior
to Solaris 9 was not to bind to optical
devices.
power-condition Boolean type, when set to
False, it indicates
that the disk does not support
power condition field in the
START STOP UNIT command.
In addition to the above properties, some device-specific tunables can be
configured in
sd.conf using the
sd-config-list global property. The value
of this property is a list of duplets. The formal syntax is:
sd-config-list = <duplet> [, <duplet> ]* ;
where
<duplet>:= "<vid+pid>" , "<tunable-list>"
and
<tunable-list>:= <tunable> [, <tunable> ]*;
<tunable> = <name> : <value>
The <vid+pid> is the string that is returned by the target device
on a SCSI inquiry command.
The <tunable-list> contains one or more tunables to apply to
all target devices with the specified <vid+pid>.
Each <tunable> is a <name> : <value> pair. Supported
tunable names are:
delay-busy: when busy, nsecs of delay before retry.
retries-timeout: retries to perform on an IO timeout.
mmc-gesn-polling For optical drives compliant with
MMC-3 and
supporting the
GET EVENT STATUS NOTIFICATION command,
this command is used for periodic media state
polling, usually initiated by the
DKIOCSTATE dkio(4I)
ioctl. To disable the use of this command, set this
boolean property to
false. In that case, either the
TEST UNIT READY or zero-length
WRITE(10) command is
used instead.
EXAMPLES
The following is an example of a global sd-config-list property:
sd-config-list =
"SUN T4", "delay-busy:600, retries-timeout:6",
"SUN StorEdge_3510", "retries-timeout:3";
FILES
/kernel/drv/sd.conf Driver configuration file
/dev/dsk/cntndnsn Block files
/dev/rdsk/cntndnsn Raw files
Where:
cn controller n
tn SCSI target id n (0-6)
dn SCSI LUN n (0-7 normally; some HBAs support LUNs to 15 or 32. See
the specific manpage for details)
sn partition n (0-7)
x86 Only /dev/rdsk/cntndnpn raw files
Where:
pn Where
n=0 the node corresponds to the entire disk.
SEE ALSO
sar(1),
close(2),
ioctl(2),
lseek(2),
read(2),
write(2),
scsa2usb(4D),
ssd(4D),
hsfs(4FS),
pcfs(4FS),
udfs(4FS),
cdio(4I),
dkio(4I),
driver.conf(5),
scsi(5),
filesystem(7),
cfgadm_scsi(8),
fdisk(8),
format(8),
iostat(8),
scsi_ifsetcap(9F),
scsi_reset(9F) ANSI Small Computer System Interface-2 (SCSI-2) ATA Packet Interface for CD-ROMs, SFF-8020i Mt.Fuji Commands for CD and DVD, SFF8090v3DIAGNOSTICS
Error for Command:
<command name> Error Level: Fatal
Requested Block:
<n> Error Block:
<m> Vendor:'
<vendorname>'
Serial Number:'
<serial number>'
Sense Key:
<sense key name> ASC: 0x<a> (<ASC name>), ASCQ: 0x<b>, FRU: 0x<c> The command indicated by <command name> failed. The Requested Block
is the block where the transfer started and the Error Block is the
block that caused the error. Sense Key,
ASC, and
ASCQ information is
returned by the target in response to a request sense command.
Caddy not inserted in drive The drive is not ready because no caddy has been inserted.
Check Condition on REQUEST SENSE A REQUEST SENSE command completed with a check condition. The
original command will be retried a number of times.
Label says <m> blocks Drive says <n> blocks There is a discrepancy between the label and what the drive returned
on the
READ CAPACITY command.
Not enough sense information The request sense data was less than expected.
Request Sense couldn't get sense data The
REQUEST SENSE command did not transfer any data.
Reservation Conflict The drive was reserved by another initiator.
SCSI transport failed: reason 'xxxx': {retrying|giving up}
The host adapter has failed to transport a command to the target for
the reason stated. The driver will either retry the command or,
ultimately, give up.
Unhandled Sense Key<n>
The REQUEST SENSE data included an invalid sense.
Unit not ready. Additional sense code 0x <n> The drive is not ready.
Can't do switch back to mode 1 A failure to switch back to read mode 1.
Corrupt label - bad geometry The disk label is corrupted.
Corrupt label - label checksum failed The disk label is corrupted.
Corrupt label - wrong magic number The disk label is corrupted.
Device busy too long The drive returned busy during a number of retries.
Disk not responding to selection The drive is powered down or died
Failed to handle UA A retry on a Unit Attention condition failed.
I/O to invalid geometry The geometry of the drive could not be established.
Incomplete read/write - retrying/giving up There was a residue after the command completed normally.
No bp for direct access device format geometry A bp with consistent memory could not be allocated.
No bp for disk label A bp with consistent memory could not be allocated.
No bp for fdisk A bp with consistent memory could not be allocated.
No bp for rigid disk geometry A bp with consistent memory could not be allocated.
No mem for property Free memory pool exhausted.
No memory for direct access device format geometry Free memory pool exhausted.
No memory for disk label Free memory pool exhausted.
No memory for rigid disk geometry The disk label is corrupted.
No resources for dumping A packet could not be allocated during dumping.
Offline Drive went offline; probably powered down.
Requeue of command fails Driver attempted to retry a command and experienced a transport
error.
sdrestart transport failed() Driver attempted to retry a command and experienced a transport
error.
Transfer length not modulo Illegal request size.
Transport of request sense fails() Driver attempted to submit a request sense command and failed.
Transport rejected() Host adapter driver was unable to accept a command.
Unable to read label Failure to read disk label.
Unit does not respond to selection Drive went offline; probably powered down.
NOTES
DVD-ROM media containing DVD-Video data may follow/adhere to the
requirements of content scrambling system or copy protection scheme.
Reading of copy-protected sector will cause I/O error. Users are advised
to use the appropriate playback software to view video contents on DVD-
ROM media containing DVD-Video data.
September 12, 2020
SD(4D)