Thread (9 messages) 9 messages, 4 authors, 2004-08-31

Re: [patch] libata: add ioctls to support SMART

From: Jeff Garzik <hidden>
Date: 2004-08-30 17:21:52
Also in: lkml

John W. Linville wrote:
Support for HDIO_DRIVE_CMD and HDIO_DRIVE_TASK in libata.  Useful for
supporting SMART w/ unmodified smartctl and smartd userland binaries.
First let me say that it's a damn fine first attempt, and people should 
be able to use this for SMART until support is merged officially.

Not happy w/ loop after failed ata_qc_new_init(), but needed because smartctl
and smartd did not retry after failure.  Likely need an option to wait for
available qc?  Also not sure all the error return codes are correct...
I'd like to implement it a bit differently, and I think this different 
method will solve some of the open questions you have.

Take a look at http://www.t10.org/ftp/t10/document.04/04-260r2.pdf

I would like to implement HDIO_DRIVE_CMD and HDIO_DRIVE_TASK completely 
inside libata-scsi.c.  These ioctls should translate the ioctl arguments 
into an ATA-passthru SCSI command, and use the standard "issue a scsi 
command" kernel API to submit the command and wait for a result.

That implies, then, that you would add code to libata-scsi.c that 
translates the ATA-passthru SCSI command into an ATA command using the 
ata_scsi_translate() infrastructure.

Note that you'll need to make up a SCSI opcode, inside the SCSI 
vendor-specific opcode space, since the ATA-passthru hasn't yet been 
assigned an official SCSI opcode.  SPC-3 
(http://www.t10.org/ftp/t10/drafts/spc3/spc3r20a.pdf) lists the 
available opcodes in section C.3, denoted with a 'V' across all columns.

Once libata-scsi.c can handle the ATA-passthru SCSI command, 
implementing HDIO_DRIVE_{TASK,CMD} should be quite trivial.

And SMART support will be complete :)

	Jeff

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help