[PATCH #upstream-fixes 2/2] libata: ATA_12/16 doesn't fall into ATAPI_MISC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
---
drivers/ata/libata-core.c |    5 +++++
include/linux/libata.h    |    3 ++-
2 files changed, 7 insertions(+), 1 deletion(-)

Index: work1/drivers/ata/libata-core.c
===================================================================
--- work1.orig/drivers/ata/libata-core.c
+++ work1/drivers/ata/libata-core.c
@@ -412,6 +412,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;
	}
Index: work1/include/linux/libata.h
===================================================================
--- work1.orig/include/linux/libata.h
+++ work1/include/linux/libata.h
@@ -347,7 +347,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 {
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux