Skip to content

Commit

Permalink
libata: ATA_12/16 doesn't fall into ATAPI_MISC
Browse files Browse the repository at this point in the history
SAT passthrus don't really fit into ATAPI_MISC class.  SAT passthru
commands always transfer multiple of 512 bytes and variable length
response is not allowed.  This patch creates a separate category -
ATAPI_PASS_THRU - for these.

This fixes HSM violation on "hdparm -I".

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Tejun Heo authored and Jeff Garzik committed Apr 4, 2008
1 parent 436d34b commit e52dcc4
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
5 changes: 5 additions & 0 deletions drivers/ata/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,11 @@ int atapi_cmd_type(u8 opcode)
case GPCMD_READ_CD_MSF:
return ATAPI_READ_CD;

case ATA_16:
case ATA_12:
if (atapi_passthru16)
return ATAPI_PASS_THRU;
/* fall thru */
default:
return ATAPI_MISC;
}
Expand Down
3 changes: 2 additions & 1 deletion include/linux/libata.h
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,8 @@ enum {
ATAPI_READ = 0, /* READs */
ATAPI_WRITE = 1, /* WRITEs */
ATAPI_READ_CD = 2, /* READ CD [MSF] */
ATAPI_MISC = 3, /* the rest */
ATAPI_PASS_THRU = 3, /* SAT pass-thru */
ATAPI_MISC = 4, /* the rest */
};

enum ata_xfer_mask {
Expand Down

0 comments on commit e52dcc4

Please sign in to comment.