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)