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)