Hello.

On 4/25/2016 1:45 PM, Hannes Reinecke wrote:

Device-managed ZAC devices just set the zoned capabilities field
in INQUIRY byte 69 (cf ACS-4). This corresponds to the 'zoned'
field in the block device characteristics VPD page.
As this is only defined in SPC-5/SBC-4 we also need to update
the supported SCSI version descriptor.

Reviewed-by: Shaun Tancheff <[email protected]>
Tested-by: Shaun Tancheff <[email protected]>
Signed-off-by: Hannes Reinecke <[email protected]>
---
 drivers/ata/libata-scsi.c | 19 ++++++++++---------
 include/linux/ata.h       |  5 +++++
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index 43403aa..96abd42 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
[...]
@@ -2322,12 +2320,15 @@ static unsigned int ata_scsiop_inq_b1(struct 
ata_scsi_args *args, u8 *rbuf)
 {
        int form_factor = ata_id_form_factor(args->id);
        int media_rotation_rate = ata_id_rotation_rate(args->id);
+       u8 zoned = ata_id_zoned_cap(args->id);

        rbuf[1] = 0xb1;
        rbuf[3] = 0x3c;
        rbuf[4] = media_rotation_rate >> 8;
        rbuf[5] = media_rotation_rate;
        rbuf[7] = form_factor;
+       if (zoned)
+               rbuf[8] = (zoned << 4);

   Parens not needed here...

[...]
diff --git a/include/linux/ata.h b/include/linux/ata.h
index e627032..ac1cb93 100644
--- a/include/linux/ata.h
+++ b/include/linux/ata.h
@@ -935,6 +935,11 @@ static inline bool ata_id_is_ssd(const u16 *id)
        return id[ATA_ID_ROT_SPEED] == 0x01;
 }

+static inline u8 ata_id_zoned_cap(const u16 *id)
+{
+       return (id[ATA_ID_ADDITIONAL_SUPP] & 0x3);

   And here as well...

[...]

MBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to