scsi_dh_alua: use scsi_vpd_tpg_id()

Use the common function 'scsi_vpd_tpg_id()' instead of open-coding
it in scsi_dh_alua.

[mkp: Applied by hand]

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Hannes Reinecke 2015-12-01 10:16:58 +01:00 committed by Martin K. Petersen
parent a8aa397858
commit 83ea0e5e35

View file

@ -322,36 +322,10 @@ static int alua_check_vpd(struct scsi_device *sdev, struct alua_dh_data *h)
{ {
unsigned char *d; unsigned char *d;
unsigned char __rcu *vpd_pg83; unsigned char __rcu *vpd_pg83;
int rel_port = -1, group_id;
rcu_read_lock(); group_id = scsi_vpd_tpg_id(sdev, &rel_port);
if (!rcu_dereference(sdev->vpd_pg83)) { if (group_id < 0) {
rcu_read_unlock();
return SCSI_DH_DEV_UNSUPP;
}
/*
* Look for the correct descriptor.
*/
vpd_pg83 = rcu_dereference(sdev->vpd_pg83);
d = vpd_pg83 + 4;
while (d < vpd_pg83 + sdev->vpd_pg83_len) {
switch (d[1] & 0xf) {
case 0x4:
/* Relative target port */
h->rel_port = get_unaligned_be16(&d[6]);
break;
case 0x5:
/* Target port group */
h->group_id = get_unaligned_be16(&d[6]);
break;
default:
break;
}
d += d[3] + 4;
}
rcu_read_unlock();
if (h->group_id == -1) {
/* /*
* Internal error; TPGS supported but required * Internal error; TPGS supported but required
* VPD identification descriptors not present. * VPD identification descriptors not present.
@ -360,10 +334,11 @@ static int alua_check_vpd(struct scsi_device *sdev, struct alua_dh_data *h)
sdev_printk(KERN_INFO, sdev, sdev_printk(KERN_INFO, sdev,
"%s: No target port descriptors found\n", "%s: No target port descriptors found\n",
ALUA_DH_NAME); ALUA_DH_NAME);
h->state = TPGS_STATE_OPTIMIZED;
h->tpgs = TPGS_MODE_NONE;
return SCSI_DH_DEV_UNSUPP; return SCSI_DH_DEV_UNSUPP;
} }
h->state = TPGS_STATE_OPTIMIZED;
h->group_id = group_id;
sdev_printk(KERN_INFO, sdev, sdev_printk(KERN_INFO, sdev,
"%s: port group %02x rel port %02x\n", "%s: port group %02x rel port %02x\n",
ALUA_DH_NAME, h->group_id, h->rel_port); ALUA_DH_NAME, h->group_id, h->rel_port);