Commit e52dcc4899cf1b7601379c31542bd91cd2997a64

Authored by Tejun Heo
Committed by Jeff Garzik
1 parent 436d34b362

libata: ATA_12/16 doesn't fall into ATAPI_MISC

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>

Showing 2 changed files with 7 additions and 1 deletions Side-by-side Diff

drivers/ata/libata-core.c
... ... @@ -353,6 +353,11 @@
353 353 case GPCMD_READ_CD_MSF:
354 354 return ATAPI_READ_CD;
355 355  
  356 + case ATA_16:
  357 + case ATA_12:
  358 + if (atapi_passthru16)
  359 + return ATAPI_PASS_THRU;
  360 + /* fall thru */
356 361 default:
357 362 return ATAPI_MISC;
358 363 }
include/linux/libata.h
... ... @@ -350,7 +350,8 @@
350 350 ATAPI_READ = 0, /* READs */
351 351 ATAPI_WRITE = 1, /* WRITEs */
352 352 ATAPI_READ_CD = 2, /* READ CD [MSF] */
353   - ATAPI_MISC = 3, /* the rest */
  353 + ATAPI_PASS_THRU = 3, /* SAT pass-thru */
  354 + ATAPI_MISC = 4, /* the rest */
354 355 };
355 356  
356 357 enum ata_xfer_mask {