The Promise VTrak Ex10 series share the same hardware base and firmware.
Consequently all interface variants, whether fibre channel ("f") or
SAS ("s") in dual/single controller, exhibit the same SCSI behavior.

Instead of adding separate blacklist entries for every specific model
variant (such as E610f, E610s, E310f, E310s), consolidate and
broaden the match strings to "VTrak E310" and "VTrak E610".

Cc: Alexander Perlis <[email protected]>
Cc: Nikkos Svoboda <[email protected]>
Cc: Martin Wilck <[email protected]>
Cc: Benjamin Marzinski <[email protected]>
Cc: Christophe Varoqui <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: James E.J. Bottomley <[email protected]>
Cc: Martin K. Petersen <[email protected]>
Cc: SCSI-ML <[email protected]>
Cc: DM_DEVEL-ML <[email protected]>
Signed-off-by: Xose Vazquez Perez <[email protected]>
---
BTW: Be careful with the dual-controller models. They advertise ALUA
to the OS, but they have a non-standard implementation. This could
also happen with other Promise VTrak/Vess models, whether legacy or newer.

>From its multipath-tools/libmultipath/prioritizers/alua_spc3.h:
[...]
#define AAS_OPTIMIZED                   0x0
#define AAS_STANDBY                     0x2

struct rtpg_tpg_dscr {
        unsigned char   b0;             /* x....... = pref(ered) port        */
                                        /* .xxx.... = reserved               */
                                        /* ....xxxx = asymetric access state */
[...]

static inline int
rtpg_tpg_dscr_get_aas(struct rtpg_tpg_dscr *d)
{
        return (d->b0 & 0x0f);
}

/* added for PROMISE VTRAK */
static inline int
rtpg_tpg_dscr_get_aas_for_promise(struct rtpg_tpg_dscr *d)
{
        return ((d->b0 & 0x80)? AAS_OPTIMIZED: AAS_STANDBY);
}
---
 drivers/scsi/scsi_devinfo.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
index c6defe1c3152..15ffbe93ac72 100644
--- a/drivers/scsi/scsi_devinfo.c
+++ b/drivers/scsi/scsi_devinfo.c
@@ -218,8 +218,8 @@ static struct {
        {"PIONEER", "CD-ROM DRM-602X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
        {"PIONEER", "CD-ROM DRM-604X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
        {"PIONEER", "CD-ROM DRM-624X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
-       {"Promise", "VTrak E310f", NULL, BLIST_SPARSELUN | BLIST_NO_RSOC},
-       {"Promise", "VTrak E610f", NULL, BLIST_SPARSELUN | BLIST_NO_RSOC},
+       {"Promise", "VTrak E310", NULL, BLIST_SPARSELUN | BLIST_NO_RSOC},
+       {"Promise", "VTrak E610", NULL, BLIST_SPARSELUN | BLIST_NO_RSOC},
        {"Promise", "", NULL, BLIST_SPARSELUN},
        {"QEMU", "QEMU CD-ROM", NULL, BLIST_SKIP_VPD_PAGES},
        {"QNAP", "iSCSI Storage", NULL, BLIST_MAX_1024},
-- 
2.54.0


Reply via email to