summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorVictor Li <Victor.Li@Sun.COM>2009-10-12 07:57:26 +0800
committerVictor Li <Victor.Li@Sun.COM>2009-10-12 07:57:26 +0800
commitb1a03ab1e63a57c5b968c229e2f36c79d2fdd222 (patch)
tree649018f5bcca9a0cf64a5529d7d589a2f759064a /usr/src
parent838c28f8478fa1760801af9a06c2b1f912d6709d (diff)
downloadillumos-joyent-b1a03ab1e63a57c5b968c229e2f36c79d2fdd222.tar.gz
6721274 TPG relative identifiers should be device identification (page 83h) relative TP identifier aware
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/io/scsi/adapters/scsi_vhci/mpapi_impl.c10
-rw-r--r--usr/src/uts/common/io/scsi/adapters/scsi_vhci/scsi_vhci_tpgs.c5
2 files changed, 11 insertions, 4 deletions
diff --git a/usr/src/uts/common/io/scsi/adapters/scsi_vhci/mpapi_impl.c b/usr/src/uts/common/io/scsi/adapters/scsi_vhci/mpapi_impl.c
index 38c2bf8f4e..c4c5108086 100644
--- a/usr/src/uts/common/io/scsi/adapters/scsi_vhci/mpapi_impl.c
+++ b/usr/src/uts/common/io/scsi/adapters/scsi_vhci/mpapi_impl.c
@@ -63,7 +63,7 @@ int vhci_mpapi_get_vhci(dev_info_t *, void *);
void vhci_mpapi_set_path_state(dev_info_t *, mdi_pathinfo_t *, int);
void vhci_mpapi_synthesize_tpg_data(struct scsi_vhci *, scsi_vhci_lun_t *,
mdi_pathinfo_t *);
-void vhci_mpapi_update_tpg_data(struct scsi_address *, char *);
+void vhci_mpapi_update_tpg_data(struct scsi_address *, char *, int);
int vhci_mpapi_update_tpg_acc_state_for_lu(struct scsi_vhci *,
scsi_vhci_lun_t *);
@@ -3368,7 +3368,8 @@ vhci_mpapi_synthesize_tpg_data(struct scsi_vhci *vhci, scsi_vhci_lun_t *vlun,
*/
/* ARGSUSED */
void
-vhci_mpapi_update_tpg_data(struct scsi_address *ap, char *ptr)
+vhci_mpapi_update_tpg_data(struct scsi_address *ap, char *ptr,
+ int rel_tgt_port)
{
struct scsi_vhci_lun *vlun;
struct scsi_vhci *vhci;
@@ -3640,6 +3641,11 @@ vhci_mpapi_update_tpg_data(struct scsi_address *ap, char *ptr)
rel_tid |= ((ptr[2] & 0Xff) << 8);
rel_tid |= (ptr[3] & 0xff);
+ if (rel_tid != rel_tgt_port) {
+ ptr += 4;
+ continue;
+ }
+
VHCI_DEBUG(4, (CE_NOTE, NULL, "vhci_mpapi_update_tpg_data: "
"TgtPort=%s, RelTgtPort=%x\n", tgt_port, rel_tid));
diff --git a/usr/src/uts/common/io/scsi/adapters/scsi_vhci/scsi_vhci_tpgs.c b/usr/src/uts/common/io/scsi/adapters/scsi_vhci/scsi_vhci_tpgs.c
index 727deb3af4..4aed573eec 100644
--- a/usr/src/uts/common/io/scsi/adapters/scsi_vhci/scsi_vhci_tpgs.c
+++ b/usr/src/uts/common/io/scsi/adapters/scsi_vhci/scsi_vhci_tpgs.c
@@ -34,7 +34,7 @@
/*
* External function definitions
*/
-extern void vhci_mpapi_update_tpg_data(struct scsi_address *, char *);
+extern void vhci_mpapi_update_tpg_data(struct scsi_address *, char *, int);
@@ -556,7 +556,8 @@ try_again:
*pstate = STD_UNAVAILABLE;
*preferred = PCLASS_NONPREFERRED;
}
- vhci_mpapi_update_tpg_data(ap, mpapi_ptr);
+ vhci_mpapi_update_tpg_data(ap, mpapi_ptr,
+ rel_tgt_port);
kmem_free((void *)bufp, len);
scsi_destroy_pkt(pkt);
return (0);