libata-dev-2.6: verify cmd bug fixes/support
PATCH 1/1 libata-dev-2.6: verify cmd bug fixes/support
Below find a patch which gets the read verify command working. Note that in order to get this 100% working one also needs to apply Albert Lee's patch:
http://article.gmane.org/gmane.linux.ide/2798
to libata* before or after this. I've stripped out his portion of the changes because I can't sign off on his work.
This work was verified using a SATA bus analyzer and the sg_verify utility which sends VERIFY_10. Should libata support VERIFY_12?
===== drivers/scsi/libata-scsi.c 1.68 vs edited =====
drivers/scsi/libata-scsi.c 2005-02-01 19:26:55 -05:00 renamed from drivers/scsi/libata-scsi.c 2004-12-29 02:35:53 -05:00 +6 -1
@@ -741,13 +741,18 @@ } if (lba48) { + tf->command = ATA_CMD_VERIFY_EXT; + tf->hob_nsect = (n_sect >> 8) & 0xff; tf->hob_lbah = (sect >> 40) & 0xff; tf->hob_lbam = (sect >> 32) & 0xff; tf->hob_lbal = (sect >> 24) & 0xff; - } else + } else { + tf->command = ATA_CMD_VERIFY; + tf->device |= (sect >> 24) & 0xf; + } tf->nsect = n_sect & 0xff;
===== include/linux/ata.h 1.20 vs edited =====
include/linux/ata.h 2005-02-01 16:28:09 -05:00 renamed from include/linux/ata.h 2004-11-14 03:21:22 -05:00 +3 -0
@@ -123,6 +123,9 @@ ATA_CMD_PIO_WRITE_EXT = 0x34, ATA_CMD_SET_FEATURES = 0xEF, ATA_CMD_PACKET = 0xA0, + ATA_CMD_VERIFY = 0x40, + ATA_CMD_VERIFY_EXT = 0x42, + /* SETFEATURES stuff */ SETFEATURES_XFER = 0x03,
Quoted 5 lines · Brett Russ
Below find a patch which gets the read verify command working. Note that in order to get this 100% working one also needs to apply Albert Lee's patch:
http://article.gmane.org/gmane.linux.ide/2798
to libata* before or after this. I've stripped out his portion of the changes because I can't sign off on his work.This work was verified using a SATA bus analyzer and the
sg_verifyutility which sendsVERIFY_10. Should libata supportVERIFY_12?
Unless there is some major application which needs _12 variants, I would prefer to avoid implementing them.
I want libata-scsi.c to be compatible with the upcoming T10 "SAT" specification, but I also wish to avoid translations which are rarely used (keeps the code small).
Quoted 27 lines
=====
drivers/scsi/libata-scsi.c1.68 vs edited =====drivers/scsi/libata-scsi.c 2005-02-01 19:26:55 -05:00 renamed from drivers/scsi/libata-scsi.c 2004-12-29 02:35:53 -05:00 +6
-1@@ -741,13 +741,18 @@ } if (lba48) { + tf->command = ATA_CMD_VERIFY_EXT; + tf->hob_nsect = (n_sect >> 8) & 0xff; tf->hob_lbah = (sect >> 40) & 0xff; tf->hob_lbam = (sect >> 32) & 0xff; tf->hob_lbal = (sect >> 24) & 0xff; - } else + } else { + tf->command = ATA_CMD_VERIFY; + tf->device |= (sect >> 24) & 0xf; + } tf->nsect = n_sect & 0xff;=====
include/linux/ata.h1.20 vs edited =====
include/linux/ata.h 2005-02-01 16:28:09 -05:00 line 127
Quoted 5 lines
include/linux/ata.h 2005-02-01 16:28:09 -05:00 renamed from include/linux/ata.h 2004-11-14 03:21:22 -05:00 +2
-0@@ -123,6 +123,9 @@ ATA_CMD_PIO_WRITE_EXT = 0x34, ATA_CMD_SET_FEATURES = 0xEF, ATA_CMD_PACKET = 0xA0, + ATA_CMD_VERIFY = 0x40, + ATA_CMD_VERIFY_EXT = 0x42,
Your patch looks good, and I tried to apply it, but apparently your mailer turned all tabs into spaces. Can you resend?
Jeff
Re: [PATCH] libata-2.6: verify cmd bug fixes/support
Below is a resend of a patch which gets the read verify command working.
I moved the patch to the libata-2.6 tree since that seems to be where
Albert's patch ended up, so let's keep them together. Sending as an attachment to avoid mailer interference.
===== drivers/scsi/libata-scsi.c 1.63 vs edited =====
drivers/scsi/libata-scsi.c +6 -1
@@ -488,13 +488,18 @@ }if (lba48) { + tf->command =ATA_CMD_VERIFY_EXT ; + tf->hob_nsect = (n_sect >>8 ) &0xff ; tf->hob_lbah = (sect >>40 ) &0xff ; tf->hob_lbam = (sect >>32 ) &0xff ; tf->hob_lbal = (sect >>24 ) &0xff ; - }else + }else { + tf->command =ATA_CMD_VERIFY ; + tf->device |= (sect >>24 ) &0xf ; + } tf->nsect = n_sect &0xff ;
===== include/linux/ata.h 1.21 vs edited =====
include/linux/ata.h +2 -0
@@ -123,6 +123,8 @@ATA_CMD_PIO_WRITE_EXT =0x34 ,ATA_CMD_SET_FEATURES =0xEF ,ATA_CMD_PACKET =0xA0 , +ATA_CMD_VERIFY =0x40 , +ATA_CMD_VERIFY_EXT =0x42 ,/* SETFEATURES stuff */ SETFEATURES_XFER = 0x03,
Jeff Garzik
AppliedRe: [PATCH] libata-2.6: verify cmd bug fixes/support
Quoted 5 lines · Brett Russ
Below is a resend of a patch which gets the read verify command working.
I moved the patch to the libata-2.6 tree since that seems to be where
Albert's patch ended up, so let's keep them together. Sending as an attachment to avoid mailer interference.Signed-off-by Brett Russ <[email protected]>
applied, thanks