diff options
author | Tom Yan <tom.ty89@gmail.com> | 2016-07-12 16:37:02 +0300 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2016-07-12 17:52:49 +0300 |
commit | 0c12735e8abf4734b011aec979092db5e63556b0 (patch) | |
tree | 897c3d5a9ac676ee834349e5bc411cb01679d969 | |
parent | 56b8cbabb422366e89577c5862ce0aa79cada240 (diff) | |
download | linux-0c12735e8abf4734b011aec979092db5e63556b0.tar.xz |
libata-scsi: fix SET FEATURES "filtering" for ata_msense_caching()
Without this fix, the DRA bit of the caching mode page would not
be updated when the read look-ahead feature is toggled (e.g. with
`smartctl --set`), but will only be until, for example, the write
cache feature is touched.
Signed-off-by: Tom Yan <tom.ty89@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r-- | drivers/ata/libata-core.c | 4 | ||||
-rw-r--r-- | include/linux/ata.h | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 6be7770f68e9..077daf0d2604 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -5127,7 +5127,9 @@ void ata_qc_complete(struct ata_queued_cmd *qc) switch (qc->tf.command) { case ATA_CMD_SET_FEATURES: if (qc->tf.feature != SETFEATURES_WC_ON && - qc->tf.feature != SETFEATURES_WC_OFF) + qc->tf.feature != SETFEATURES_WC_OFF && + qc->tf.feature != SETFEATURES_RA_ON && + qc->tf.feature != SETFEATURES_RA_OFF) break; /* fall through */ case ATA_CMD_INIT_DEV_PARAMS: /* CHS translation changed */ diff --git a/include/linux/ata.h b/include/linux/ata.h index 99346be5a7ca..2d6879392ae3 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -409,6 +409,9 @@ enum { SETFEATURES_WC_ON = 0x02, /* Enable write cache */ SETFEATURES_WC_OFF = 0x82, /* Disable write cache */ + SETFEATURES_RA_ON = 0xaa, /* Enable read look-ahead */ + SETFEATURES_RA_OFF = 0x55, /* Disable read look-ahead */ + /* Enable/Disable Automatic Acoustic Management */ SETFEATURES_AAM_ON = 0x42, SETFEATURES_AAM_OFF = 0xC2, |