#
311403 |
|
05-Jan-2017 |
mav |
MFC r310257: Improve support for informational exceptions.
While CTL still has no real events to report in this way (like SMART), it is possible to trigger false event by manually setting TEST bit in Informational Exceptions Control mode page, that can be useful for initiator testing. This code supports all flavours of IE reporting: UNIT ATTENTION, RECOVERED ERROR and NO SENSE sense keys, REQUEST SENSE command and Informational Exceptions log page.
|
#
278170 |
|
03-Feb-2015 |
ken |
MFC r276835:
r276835 | ken | 2015-01-08 09:58:40 -0700 (Thu, 08 Jan 2015) | 91 lines
Improve camcontrol(8) handling of drive defect data.
This includes a new summary mode (-s) for camcontrol defects that quickly tells the user the most important thing: how many defects are in the requested list. The actual location of the defects is less important.
Modern drives frequently have more than the 8191 defects that can be reported by the READ DEFECT DATA (10) command. If they don't have that many grown defects, they certainly have more than 8191 defects in the primary (i.e. factory) defect list.
The READ DEFECT DATA (12) command allows for longer parameter lists, as well as indexing into the list of defects, and so allows reporting many more defects.
This has been tested with HGST drives and Seagate drives, but does not fully work with Seagate drives. Once I have a Seagate spec I may be able to determine whether it is possible to make it work with Seagate drives.
scsi_da.h: Add a definition for the new long block defect format.
Add bit and mask definitions for the new extended physical sector and bytes from index defect formats.
Add a prototype for the new scsi_read_defects() CDB building function.
scsi_da.c: Add a new scsi_read_defects() CDB building function. camcontrol(8) was previously composing CDBs manually. This is long overdue.
camcontrol.c: Revamp the camcontrol defects subcommand. We now go through multiple stages in trying to get defect data off the drive while avoiding various drive firmware quirks.
We start off by requesting the defect header with the 10 byte command. If we're in summary mode (-s) and the drive reports fewer defects than can be represented in the 10 byte header, we're done. Otherwise, we know that we need to issue the 12 byte command if the drive reports the maximum number of defects.
If we're in summary mode, we're done if we get a good response back when asking for the 12 byte header.
If the user has asked for the full list, then we use the address descriptor index field in the 12 byte CDB to step through the list in 64K chunks. 64K is small enough to work with most any ancient or modern SCSI controller.
Add support for printing the new long block defect format, as well as the extended physical sector and bytes from index formats. I don't have any drives that support the new formats.
Add a hexadecimal output format that can be turned on with -X.
Add a quiet mode (-q) that can be turned on with the summary mode (-s) to just print out a number.
Revamp the error detection and recovery code for the defects command to work with HGST drives.
Call the new scsi_read_defects() CDB building function instead of rolling the CDB ourselves.
Pay attention to the residual from the defect list request when printing it out, so we don't run off the end of the list.
Use the new scsi_nv library routines to convert from strings to numbers and back.
camcontrol.8: Document the new defect formats (longblock, extbfi, extphys) and command line options (-q, -s, -S and -X) for the defects subcommand.
Explain a little more about what drives generally do and don't support.
Sponsored by: Spectra Logic
|
#
273325 |
|
20-Oct-2014 |
mav |
MFC r273072: Add LBPERE mode bit definition.
|
#
273323 |
|
20-Oct-2014 |
mav |
MFC r273038: Add support for READ DEFECT DATA (10/12) commands.
SPC-4 r2 allows to return empty defect list if the list is not supported. We don't reallu support defect data lists, but this suppresses some errors.
|
#
268151 |
|
02-Jul-2014 |
mav |
MFC r267537: Add support for VERIFY(10/12/16) and COMPARE AND WRITE SCSI commands.
Make data_submit backends method support not only read and write requests, but also two new ones: verify and compare. Verify just checks readability of the data in specified location without transferring them outside. Compare reads the specified data and compares them to received data, returning error if they are different.
VERIFY(10/12/16) commands request either verify or compare from backend, depending on BYTCHK CDB field. COMPARE AND WRITE command executed in two stages: first it requests compare, and then, if succeesed, requests write. Atomicity of operation is guarantied by CTL request ordering code.
Sponsored by: iXsystems, Inc.
|
#
278170 |
|
03-Feb-2015 |
ken |
MFC r276835:
r276835 | ken | 2015-01-08 09:58:40 -0700 (Thu, 08 Jan 2015) | 91 lines
Improve camcontrol(8) handling of drive defect data.
This includes a new summary mode (-s) for camcontrol defects that quickly tells the user the most important thing: how many defects are in the requested list. The actual location of the defects is less important.
Modern drives frequently have more than the 8191 defects that can be reported by the READ DEFECT DATA (10) command. If they don't have that many grown defects, they certainly have more than 8191 defects in the primary (i.e. factory) defect list.
The READ DEFECT DATA (12) command allows for longer parameter lists, as well as indexing into the list of defects, and so allows reporting many more defects.
This has been tested with HGST drives and Seagate drives, but does not fully work with Seagate drives. Once I have a Seagate spec I may be able to determine whether it is possible to make it work with Seagate drives.
scsi_da.h: Add a definition for the new long block defect format.
Add bit and mask definitions for the new extended physical sector and bytes from index defect formats.
Add a prototype for the new scsi_read_defects() CDB building function.
scsi_da.c: Add a new scsi_read_defects() CDB building function. camcontrol(8) was previously composing CDBs manually. This is long overdue.
camcontrol.c: Revamp the camcontrol defects subcommand. We now go through multiple stages in trying to get defect data off the drive while avoiding various drive firmware quirks.
We start off by requesting the defect header with the 10 byte command. If we're in summary mode (-s) and the drive reports fewer defects than can be represented in the 10 byte header, we're done. Otherwise, we know that we need to issue the 12 byte command if the drive reports the maximum number of defects.
If we're in summary mode, we're done if we get a good response back when asking for the 12 byte header.
If the user has asked for the full list, then we use the address descriptor index field in the 12 byte CDB to step through the list in 64K chunks. 64K is small enough to work with most any ancient or modern SCSI controller.
Add support for printing the new long block defect format, as well as the extended physical sector and bytes from index formats. I don't have any drives that support the new formats.
Add a hexadecimal output format that can be turned on with -X.
Add a quiet mode (-q) that can be turned on with the summary mode (-s) to just print out a number.
Revamp the error detection and recovery code for the defects command to work with HGST drives.
Call the new scsi_read_defects() CDB building function instead of rolling the CDB ourselves.
Pay attention to the residual from the defect list request when printing it out, so we don't run off the end of the list.
Use the new scsi_nv library routines to convert from strings to numbers and back.
camcontrol.8: Document the new defect formats (longblock, extbfi, extphys) and command line options (-q, -s, -S and -X) for the defects subcommand.
Explain a little more about what drives generally do and don't support.
Sponsored by: Spectra Logic
|
#
273325 |
|
20-Oct-2014 |
mav |
MFC r273072: Add LBPERE mode bit definition.
|
#
273323 |
|
20-Oct-2014 |
mav |
MFC r273038: Add support for READ DEFECT DATA (10/12) commands.
SPC-4 r2 allows to return empty defect list if the list is not supported. We don't reallu support defect data lists, but this suppresses some errors.
|
#
268151 |
|
02-Jul-2014 |
mav |
MFC r267537: Add support for VERIFY(10/12/16) and COMPARE AND WRITE SCSI commands.
Make data_submit backends method support not only read and write requests, but also two new ones: verify and compare. Verify just checks readability of the data in specified location without transferring them outside. Compare reads the specified data and compares them to received data, returning error if they are different.
VERIFY(10/12/16) commands request either verify or compare from backend, depending on BYTCHK CDB field. COMPARE AND WRITE command executed in two stages: first it requests compare, and then, if succeesed, requests write. Atomicity of operation is guarantied by CTL request ordering code.
Sponsored by: iXsystems, Inc.
|