The commit is pushed to "branch-rh7-3.10.0-957.27.2.vz7.107.x-ovz" and will 
appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-957.27.2.vz7.107.11
------>
commit cf5d040cb5339c7aee05e38bc95c06f1a90831c0
Author: Hannes Reinecke <[email protected]>
Date:   Tue Oct 1 17:49:52 2019 +0300

    ms/libata-scsi: Update SATL for ZAC drives
    
    ZAC (zoned-access command) drives translate into ZBC (Zoned block
    command) device type for SCSI. So implement the correct mappings
    into libata-scsi and update the SCSI command set versions.
    
    Acked-by: Christoph Hellwig <[email protected]>
    Acked-by: Tejun Heo <[email protected]>
    Signed-off-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    
    https://pmc.acronis.com/browse/VSTOR-26930
    (cherry picked from commit f9ca5ab832e7ac5bc2b6fe0e82ad46d536f436f9)
    Signed-off-by: Ildar Ismagilov <[email protected]>
    
    =====================
    Patchset description:
    
    Add support of SMR ATA disk
    
    This patchset adds support of SMR ATA disk through SCSI generic interface
    aka /dev/sgX.
    
    The SCSI generic interface is used by libzbc library for communicate
    with SMR disk. These patches allow us to use SMR disk through
    "ata" backend of libzbc ("scsi" and "block" backends aren't supported).
    
    These patches were tested with following command:
     libzbc/test/zbc_test.sh /dev/sgX
    
    JIRA: https://pmc.acronis.com/browse/VSTOR-26930
    
    Damien Le Moal (1):
      libata: Fix ATA request sense
    
    Hannes Reinecke (5):
      libata: Implement ATA_DEV_ZAC
      libata-scsi: Update SATL for ZAC drives
      libata: Implement NCQ autosense
      libata: Implement support for sense data reporting
      libata: fixup ZAC device disabling
---
 drivers/ata/libata-scsi.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index 1b89f3a4fda6..8d907c11c3c9 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -53,6 +53,7 @@
 
 #include "libata.h"
 #include "libata-transport.h"
+#include "../scsi/smartpqi/smartpqi.h"
 
 #define ATA_SCSI_RBUF_SIZE     4096
 
@@ -1981,6 +1982,7 @@ static void ata_scsi_rbuf_fill(struct ata_scsi_args *args,
 static unsigned int ata_scsiop_inq_std(struct ata_scsi_args *args, u8 *rbuf)
 {
        const u8 versions[] = {
+               0x00,
                0x60,   /* SAM-3 (no version claimed) */
 
                0x03,
@@ -1989,6 +1991,20 @@ static unsigned int ata_scsiop_inq_std(struct 
ata_scsi_args *args, u8 *rbuf)
                0x02,
                0x60    /* SPC-3 (no version claimed) */
        };
+       const u8 versions_zbc[] = {
+               0x00,
+               0xA0,   /* SAM-5 (no version claimed) */
+
+               0x04,
+               0xC0,   /* SBC-3 (no version claimed) */
+
+               0x04,
+               0x60,   /* SPC-4 (no version claimed) */
+
+               0x60,
+               0x20,   /* ZBC (no version claimed) */
+       };
+
        u8 hdr[] = {
                TYPE_DISK,
                0,
@@ -2006,6 +2022,11 @@ static unsigned int ata_scsiop_inq_std(struct 
ata_scsi_args *args, u8 *rbuf)
            (args->dev->link->ap->pflags & ATA_PFLAG_EXTERNAL))
                hdr[1] |= (1 << 7);
 
+       if (args->dev->class == ATA_DEV_ZAC) {
+               hdr[0] = TYPE_ZBC;
+               hdr[2] = 0x6; /* ZBC is defined in SPC-4 */
+       }
+
        memcpy(rbuf, hdr, sizeof(hdr));
        memcpy(&rbuf[8], "ATA     ", 8);
        ata_id_string(args->id, &rbuf[16], ATA_ID_PROD, 16);
@@ -2018,7 +2039,10 @@ static unsigned int ata_scsiop_inq_std(struct 
ata_scsi_args *args, u8 *rbuf)
        if (rbuf[32] == 0 || rbuf[32] == ' ')
                memcpy(&rbuf[32], "n/a ", 4);
 
-       memcpy(rbuf + 59, versions, sizeof(versions));
+       if (args->dev->class == ATA_DEV_ZAC)
+               memcpy(rbuf + 58, versions_zbc, sizeof(versions_zbc));
+       else
+               memcpy(rbuf + 58, versions, sizeof(versions));
 
        return 0;
 }

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to