1 SD(7D)                              Devices                             SD(7D)
   2 
   3 
   4 
   5 NAME
   6        sd - SCSI disk and ATAPI/SCSI CD-ROM device driver
   7 
   8 SYNOPSIS
   9        sd@target,lun:partition
  10 
  11 
  12 DESCRIPTION
  13        To open a device without checking if the vtoc is valid, use the
  14        O_NDELAY flag.  When the device is opened using O_NDELAY, the first
  15        read or write to the device that happens after the open results in the
  16        label being read if the label is not currently valid. Once read, the
  17        label remains valid until the last close of the device. Except for
  18        reading the label, O_NDELAY has no impact on the driver.
  19 
  20    SPARC
  21        The sd SCSI and SCSI/ATAPI driver supports embedded SCSI-2 and
  22        CCS-compatible SCSI disk and CD-ROM drives, ATAPI  2.6
  23        (SFF-8020i)-compliant CD-ROM drives, SFF-8090-compliant SCSI/ATAPI DVD-
  24        ROM drives, IOMEGA SCSI/ATAPI ZIP drives, SCSI JAZ drives, and USB mass
  25        storage devices (refer to scsa2usb(7D)).
  26 
  27 
  28        To determine the disk drive type, use the SCSI/ATAPI inquiry command
  29        and read the volume label stored on block 0 of the drive. (The volume
  30        label describes the disk geometry and partitioning and must be present
  31        for the disk to be mounted by the system.) A volume label is not
  32        required for removable, re-writable or read-only media.
  33 
  34    x86 Only
  35        The sd driver supports embedded SCSI-2 and CCS-compatible SCSI disk and
  36        CD-ROM drives, ATAPI 2.6 (SFF-8020i)-compliant CD-ROM drives,
  37        SFF-8090-compliant SCSI/ATAPI DVD-ROM drives, IOMEGA SCSI/ATAPI ZIP
  38        drives, and SCSI JAZ drives.
  39 
  40 
  41        The x86 BIOS legacy requires a master boot record (MBR) and fdisk table
  42        in the first physical sector of the bootable media. If the x86 hard
  43        disk contains a Solaris disk label, it is located in the second
  44        512-byte sector of the FDISK partition.
  45 
  46 DEVICE SPECIAL FILES
  47        Block-files access the disk using normal buffering mechanism and are
  48        read-from and written-to without regard to physical disk records. A raw
  49        interface enables direct transmission between the disk and the user's
  50        read or write buffer. A single read or write call usually results in a
  51        single I/O operation, therefore raw I/O is more efficient when many
  52        bytes are transmitted.  Block files names are found in /dev/dsk; raw
  53        file names are found in /dev/rdsk.
  54 
  55 
  56        I/O requests to the raw device must be aligned on a 512-byte
  57        (DEV_BSIZE) boundary and all I/O request lengths must be in multiples
  58        of 512 bytes.  Requests that do not meet these requirements will
  59        trigger an EINVAL error. There are no alignment or length restrictions
  60        on I/O requests to the block device.
  61 
  62 CD-ROM DRIVE SUPPORT
  63        A CD-ROM disk is single-sided and contains approximately 640 megabytes
  64        of data or 74 minutes of audio. When the CD-ROM is opened, the eject
  65        button is disabled to prevent manual removal of the disk until the last
  66        close() is called.  No volume label is required for a CD-ROM. The disk
  67        geometry and partitioning information are constant and never change. If
  68        the CD-ROM contains data recorded in a Solaris-aware file system
  69        format, it can be mounted using the appropriate Solaris file system
  70        support.
  71 
  72 DVD-ROM DRIVE SUPPORT
  73        DVD-ROM media can be single or double-sided and can be recorded upon
  74        using a single or double layer structure. Double-layer media provides
  75        parallel or opposite track paths. A DVD-ROM can hold from between 4.5
  76        Gbytes and 17 Gbytes of data, depending on the layer structure used for
  77        recording and if the DVD-ROM is single or double-sided.
  78 
  79 
  80        When the DVD-ROM is opened, the eject button is disabled to prevent the
  81        manual removal of a disk until the last close() is called. No volume
  82        label is required for a DVD-ROM. If the DVD-ROM contains data recorded
  83        in a Solaris-aware file system format, it can be mounted using the
  84        appropriate Solaris file system support.
  85 
  86 ZIP/JAZ DRIVE SUPPORT
  87        ZIP/JAZ media provide varied data capacity points; a single JAZ drive
  88        can store up to 2 GBytes of data, while a ZIP-250 can store up to
  89        250MBytes of data. ZIP/JAZ drives can be read-from or written-to using
  90        the appropriate drive.
  91 
  92 
  93        When a ZIP/JAZ drive is opened, the eject button is disabled to prevent
  94        the manual removal of a disk until the last close() is called. No
  95        volume label is required for a ZIP/JAZ drive. If the ZIP/JAZ drive
  96        contains data recorded in a Solaris-aware file system format, it can be
  97        mounted using the appropriate Solaris file system support.
  98 
  99 DEVICE STATISTICS SUPPORT
 100        Each device maintains I/O statistics for the device and for partitions
 101        allocated for that device. For each device/partition, the driver
 102        accumulates reads, writes, bytes read, and bytes written. The driver
 103        also initiates hi-resolution time stamps at queue entry and exit points
 104        to enable monitoring of residence time and cumulative residence-length
 105        product for each queue.
 106 
 107 
 108        Not all device drivers make per-partition IO statistics available for
 109        reporting. sd and ssd(7D) per-partition statistics are enabled by
 110        default but may be disabled in their configuration files.
 111 
 112 IOCTLS
 113        Refer to dkio(7I), and cdio(7I)
 114 
 115    ERRORS
 116        EACCES
 117                  Permission denied
 118 
 119 
 120        EBUSY
 121                  The partition was opened exclusively by another thread
 122 
 123 
 124        EFAULT
 125                  The argument features a bad address
 126 
 127 
 128        EINVAL
 129                  Invalid argument
 130 
 131 
 132        ENOTTY
 133                  The device does not support the requested ioctl function
 134 
 135 
 136        ENXIO
 137                  During opening, the device did not exist. During close, the
 138                  drive unlock failed
 139 
 140 
 141        EROFS
 142                  The device is read-only
 143 
 144 
 145        EAGAIN
 146                  Resource temporarily unavailable
 147 
 148 
 149        EINTR
 150                  A signal was caught during the execution of the ioctl()
 151                  function
 152 
 153 
 154        ENOMEM
 155                  Insufficient memory
 156 
 157 
 158        EPERM
 159                  Insufficient access permission
 160 
 161 
 162        EIO
 163                  An I/O error occurred. Refer to notes for details on copy-
 164                  protected DVD-ROM media.
 165 
 166 
 167 CONFIGURATION
 168        The sd driver can be configured by defining properties in the sd.conf
 169        file. The sd driver supports the following properties:
 170 
 171        enable-partition-kstats
 172                                   The default value is 1, which causes
 173                                   partition IO statistics to be maintained.
 174                                   Set this value to zero to prevent the driver
 175                                   from recording partition statistics. This
 176                                   slightly reduces the CPU overhead for IO,
 177                                   mimimizes the amount of sar(1) data
 178                                   collected and makes these statistics
 179                                   unavailable for reporting by iostat(1M) even
 180                                   though the -p/-P option is specified.
 181                                   Regardless of this setting, disk IO
 182                                   statistics are always maintained.
 183 
 184 
 185        qfull-retries
 186                                   The supplied value is passed as the qfull-
 187                                   retries capability value of the HBA driver.
 188                                   See scsi_ifsetcap(9F) for details.
 189 
 190 
 191        qfull-retry-interval
 192                                   The supplied value is passed as the qfull-
 193                                   retry interval capability value of the HBA
 194                                   driver. See scsi_ifsetcap(9F) for details.
 195 
 196 
 197        allow-bus-device-reset
 198                                   The default value is 1, which allows
 199                                   resetting to occur. Set this value to 0
 200                                   (zero) to prevent the sd driver from calling
 201                                   scsi_reset(9F) with a second argument of
 202                                   RESET_TARGET when in error-recovery mode.
 203                                   This scsi_reset(9F) call may prompt the HBA
 204                                   driver to send a SCSI Bus Device Reset
 205                                   message. The scsi_reset(9F) call with a
 206                                   second argument of RESET_TARGET may result
 207                                   from an explicit request via the USCSICMD
 208                                   ioctl. Some high-availability multi-
 209                                   initiator systems may wish to prohibit the
 210                                   Bus Device Reset message; to do this, set
 211                                   the allow-bus-device-reset property to 0.
 212 
 213 
 214        optical-device-bind
 215                                   Controls the binding of the driver to non
 216                                   self-identifying SCSI target optical
 217                                   devices. (See scsi(4)). The default value is
 218                                   1, which causes sd to bind to DTYPE_OPTICAL
 219                                   devices (as noted in scsi(4)).  Setting this
 220                                   value to 0 prevents automatic binding. The
 221                                   default behavior for the SPARC-based sd
 222                                   driver prior to Solaris 9 was not to bind to
 223                                   optical devices.
 224 
 225 
 226        power-condition
 227                                   Boolean type, when set to False, it
 228                                   indicates that the disk does not support
 229                                   power condition field in the START STOP UNIT
 230                                   command.
 231 
 232 
 233 
 234        In addition to the above properties, some device-specific tunables can
 235        be configured in sd.conf using the sd-config-list global property. The
 236        value of this property is a list of duplets. The formal syntax is:
 237 
 238          sd-config-list = <duplet> [, <duplet> ]* ;
 239 
 240          where
 241 
 242          <duplet>:= "<vid+pid>"     , "<tunable-list>"
 243 
 244          and
 245 
 246          <tunable-list>:= <tunable>  [,     <tunable> ]*;
 247          <tunable> = <name> : <value>
 248 
 249          The <vid+pid> is the string that is returned by the target device
 250          on a SCSI inquiry command.
 251 
 252          The <tunable-list> contains one or more tunables to apply to
 253          all target devices with the specified <vid+pid>.
 254 
 255          Each <tunable>   is a <name> : <value> pair. Supported
 256          tunable names are:
 257 
 258             delay-busy: when busy, nsecs of delay before retry.
 259 
 260             retries-timeout: retries to perform on an IO timeout.
 261 
 262 
 263        mmc-gesn-polling
 264                            For optical drives compliant with MMC-3 and
 265                            supporting the GET EVENT STATUS NOTIFICATION
 266                            command, this command is used for periodic media
 267                            state polling, usually initiated by the DKIOCSTATE
 268                            dkio(7I) ioctl. To disable the use of this command,
 269                            set this boolean property to false. In that case,
 270                            either the TEST UNIT READY or zero-length WRITE(10)
 271                            command is used instead.
 272 
 273 
 274 EXAMPLES
 275          The following is an example of a global sd-config-list property:
 276 
 277             sd-config-list =
 278                "SUN     T4", "delay-busy:600, retries-timeout:6",
 279                "SUN     StorEdge_3510", "retries-timeout:3";
 280 
 281 
 282 FILES
 283        /kernel/drv/sd.conf
 284                               Driver configuration file
 285 
 286 
 287        /dev/dsk/cntndnsn
 288                               Block files
 289 
 290 
 291        /dev/rdsk/cntndnsn
 292                               Raw files
 293 
 294 
 295 
 296        Where:
 297 
 298        cn
 299              controller n
 300 
 301 
 302        tn
 303              SCSI target id n (0-6)
 304 
 305 
 306        dn
 307              SCSI LUN n (0-7 normally; some HBAs support LUNs to 15 or 32. See
 308              the specific manpage for details)
 309 
 310 
 311        sn
 312              partition n (0-7)
 313 
 314 
 315    x86 Only
 316        /dev/rdsk/cntndnpn
 317                              raw files
 318 
 319 
 320 
 321        Where:
 322 
 323        pn
 324              Where n=0 the node corresponds to the entire disk.
 325 
 326 
 327 SEE ALSO
 328        sar(1), cfgadm_scsi(1M), fdisk(1M), format(1M), iostat(1M), close(2),
 329        ioctl(2), lseek(2), read(2), write(2), driver.conf(4), scsi(4),
 330        filesystem(5), scsa2usb(7D), ssd(7D), hsfs(7FS), pcfs(7FS), udfs(7FS),
 331        cdio(7I), dkio(7I), scsi_ifsetcap(9F), scsi_reset(9F)
 332 
 333 
 334        ANSI Small Computer System Interface-2 (SCSI-2)
 335 
 336 
 337        ATA Packet Interface for CD-ROMs, SFF-8020i
 338 
 339 
 340        Mt.Fuji Commands for CD and DVD, SFF8090v3
 341 
 342 DIAGNOSTICS
 343          Error for Command:<command name>
 344          Error Level: Fatal
 345          Requested Block: <n>
 346          Error  Block: <m>
 347          Vendor:'<vendorname>'
 348          Serial Number:'<serial      number>'
 349          Sense Key:<sense key name>
 350 
 351 
 352 
 353        ASC: 0x<a> (<ASC        name>),      ASCQ: 0x<b>, FRU: 0x<c>
 354 
 355            The command indicated by <command name> failed. The Requested Block
 356            is the block where the transfer started and the Error Block is the
 357            block that caused the error. Sense Key, ASC, and ASCQ information
 358            is returned by the target in response to a request sense command.
 359 
 360 
 361        Caddy not inserted in drive
 362 
 363            The drive is not ready because no caddy has been inserted.
 364 
 365 
 366        Check Condition on REQUEST SENSE
 367 
 368            A REQUEST SENSE command completed with a check condition. The
 369            original command will be retried a number of times.
 370 
 371 
 372        Label says <m> blocks Drive says   <n> blocks
 373 
 374            There is a discrepancy between the label and what the drive
 375            returned on the READ CAPACITY command.
 376 
 377 
 378        Not enough sense information
 379 
 380            The request sense data was less than expected.
 381 
 382 
 383        Request Sense couldn't get sense data
 384 
 385            The REQUEST SENSE command did not transfer any data.
 386 
 387 
 388        Reservation Conflict
 389 
 390            The drive was reserved by another initiator.
 391 
 392 
 393        SCSI transport failed: reason 'xxxx': {retrying|giving up}
 394 
 395            The host adapter has failed to transport a command to the target
 396            for the reason stated. The driver will either retry the command or,
 397            ultimately, give up.
 398 
 399 
 400        Unhandled Sense Key<n>
 401 
 402            The REQUEST SENSE data included an invalid sense.
 403 
 404 
 405        Unit not ready. Additional sense code 0x
 406 
 407            <n> The drive is not   ready.
 408 
 409 
 410        Can't do switch back to mode 1
 411 
 412            A failure to switch back to read mode 1.
 413 
 414 
 415        Corrupt label - bad geometry
 416 
 417            The disk label is corrupted.
 418 
 419 
 420        Corrupt label - label checksum failed
 421 
 422            The disk label is corrupted.
 423 
 424 
 425        Corrupt label - wrong magic number
 426 
 427            The disk label is corrupted.
 428 
 429 
 430        Device busy too long
 431 
 432            The drive returned busy during a number of retries.
 433 
 434 
 435        Disk not responding to selection
 436 
 437            The drive is powered down or died
 438 
 439 
 440        Failed to handle UA
 441 
 442            A retry on a Unit Attention condition failed.
 443 
 444 
 445        I/O to invalid geometry
 446 
 447            The geometry of the drive could not be established.
 448 
 449 
 450        Incomplete read/write - retrying/giving up
 451 
 452            There was a residue after the command completed normally.
 453 
 454 
 455        No bp for direct access device format geometry
 456 
 457            A bp with consistent memory could not be allocated.
 458 
 459 
 460        No bp for disk label
 461 
 462            A bp with consistent memory could not be allocated.
 463 
 464 
 465        No bp for fdisk
 466 
 467            A bp with consistent memory could not be allocated.
 468 
 469 
 470        No bp for rigid disk geometry
 471 
 472            A bp with consistent memory could not be allocated.
 473 
 474 
 475        No mem for property
 476 
 477            Free memory pool exhausted.
 478 
 479 
 480        No memory for direct access device format geometry
 481 
 482            Free memory pool exhausted.
 483 
 484 
 485        No memory for disk label
 486 
 487            Free memory pool exhausted.
 488 
 489 
 490        No memory for rigid disk geometry
 491 
 492            The disk label is corrupted.
 493 
 494 
 495        No resources for dumping
 496 
 497            A packet could not be allocated during dumping.
 498 
 499 
 500        Offline
 501 
 502            Drive went offline; probably powered down.
 503 
 504 
 505        Requeue of command fails
 506 
 507            Driver attempted to retry a command and experienced a transport
 508            error.
 509 
 510 
 511        sdrestart transport failed()
 512 
 513            Driver attempted to retry a command and experienced a transport
 514            error.
 515 
 516 
 517        Transfer length not modulo
 518 
 519            Illegal request size.
 520 
 521 
 522        Transport of request sense fails()
 523 
 524            Driver attempted to submit a request sense command and failed.
 525 
 526 
 527        Transport rejected()
 528 
 529            Host adapter driver was unable to accept a command.
 530 
 531 
 532        Unable to read label
 533 
 534            Failure to read disk label.
 535 
 536 
 537        Unit does not respond to selection
 538 
 539            Drive went offline; probably powered down.
 540 
 541 
 542 NOTES
 543        DVD-ROM media containing DVD-Video data may follow/adhere to the
 544        requirements of content scrambling system or copy protection scheme.
 545        Reading of copy-protected sector will cause I/O error. Users are
 546        advised to use the appropriate playback software to view video contents
 547        on DVD-ROM media containing DVD-Video data.
 548 
 549 
 550 
 551                                January 10, 2020                         SD(7D)