diff options
| author | Victor Li <Victor.Li@Sun.COM> | 2009-10-12 07:57:26 +0800 |
|---|---|---|
| committer | Victor Li <Victor.Li@Sun.COM> | 2009-10-12 07:57:26 +0800 |
| commit | b1a03ab1e63a57c5b968c229e2f36c79d2fdd222 (patch) | |
| tree | 649018f5bcca9a0cf64a5529d7d589a2f759064a /usr/src | |
| parent | 838c28f8478fa1760801af9a06c2b1f912d6709d (diff) | |
| download | illumos-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.c | 10 | ||||
| -rw-r--r-- | usr/src/uts/common/io/scsi/adapters/scsi_vhci/scsi_vhci_tpgs.c | 5 |
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); |
