Lines Matching refs:vhci

148 static void *vhci_mpapi_get_rel_tport_pair(struct scsi_vhci *vhci,
172 struct scsi_vhci *vhci;
178 /* Check for validity of vhci structure */
179 vhci = ddi_get_soft_state(vhci_softstate, MINOR2INST(getminor(dev)));
180 if (vhci == NULL) {
184 mutex_enter(&vhci->vhci_mutex);
185 if ((vhci->vhci_state & VHCI_STATE_OPEN) == 0) {
186 mutex_exit(&vhci->vhci_mutex);
189 mutex_exit(&vhci->vhci_mutex);
191 /* Get the vhci dip */
192 vdip = vhci->vhci_dip;
207 retval = vhci_mpapi_ioctl(dev, vhci, (void *)data, mpioc, mode, credp);
518 vhci_get_driver_prop(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
544 mutex_enter(&vhci->vhci_mutex);
546 ((vhci->vhci_conf_flags & VHCI_CONF_FLAGS_AUTO_FAILBACK) ?
548 mutex_exit(&vhci->vhci_mutex);
571 vhci_get_dev_prod_list(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
589 ilist = vhci->mp_priv->
623 vhci_get_dev_prod_prop(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
634 ilist = vhci->mp_priv->
664 vhci_get_lu_list(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
677 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_MULTIPATH_LU]->head;
714 vhci_get_lu_list_from_tpg(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
725 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_TARGET_PORT_GROUP]
787 vhci_get_tpg_list_for_lu(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
798 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_MULTIPATH_LU]->head;
856 vhci_get_lu_prop(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
866 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_MULTIPATH_LU]->head;
906 vhci_get_path_list_for_mp_lu(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
918 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_MULTIPATH_LU]->head;
991 vhci_get_path_list_for_init_port(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1003 ilist = vhci->mp_priv->
1017 mdi_vhci_walk_phcis(vhci->vhci_dip, vhci_mpapi_sync_init_port_list,
1018 vhci);
1020 ilist = vhci->mp_priv->
1094 vhci_get_path_list_for_target_port(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1106 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_TARGET_PORT]->head;
1179 vhci_get_path_prop(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1188 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_PATH_LU]->head;
1225 vhci_get_init_port_list(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1234 ilist = vhci->mp_priv->
1248 mdi_vhci_walk_phcis(vhci->vhci_dip, vhci_mpapi_sync_init_port_list,
1249 vhci);
1251 ilist = vhci->mp_priv->
1292 vhci_get_init_port_prop(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1301 ilist = vhci->mp_priv->
1315 mdi_vhci_walk_phcis(vhci->vhci_dip, vhci_mpapi_sync_init_port_list,
1316 vhci);
1318 ilist = vhci->mp_priv->
1359 vhci_get_target_port_prop(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1369 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_TARGET_PORT]->head;
1409 vhci_get_tpg_prop(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1419 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_TARGET_PORT_GROUP]->
1460 vhci_get_target_port_list_for_tpg(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1471 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_TARGET_PORT_GROUP]
1530 vhci_set_tpg_access_state(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1544 lu_list = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_MULTIPATH_LU]
1546 tpg_list = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_TARGET_PORT_GROUP]
1595 retval = mdi_failover(vhci->vhci_dip, svl->svl_dip,
1627 "state: Unable to find vhci private data"));
1683 vhci_get_prop_lb_list(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1706 vhci_get_prop_lb_prop(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1720 vhci_assign_lu_to_tpg(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1730 vhci_enable_auto_failback(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1738 mutex_enter(&vhci->vhci_mutex);
1739 vhci->vhci_conf_flags |= VHCI_CONF_FLAGS_AUTO_FAILBACK;
1740 mutex_exit(&vhci->vhci_mutex);
1743 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_MULTIPATH_LU]->head;
1755 vhci_mpapi_log_sysevent(vhci->vhci_dip, &raw_oid,
1763 vhci_disable_auto_failback(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
1771 mutex_enter(&vhci->vhci_mutex);
1772 vhci->vhci_conf_flags &= ~VHCI_CONF_FLAGS_AUTO_FAILBACK;
1773 mutex_exit(&vhci->vhci_mutex);
1776 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_MULTIPATH_LU]->head;
1788 vhci_mpapi_log_sysevent(vhci->vhci_dip, &raw_oid,
1799 vhci_mpapi_hold_item(struct scsi_vhci *vhci, uint64_t *oid, uint8_t obj_type)
1803 ilist = vhci->mp_priv->obj_hdr_list[obj_type]->head;
1826 vhci_mpapi_chk_path(struct scsi_vhci *vhci, mpapi_item_list_t *ilist)
1839 if (vhci_mpapi_match_pip(vhci, ilist, pip) == NULL) {
1853 vhci_mpapi_hold_pip(struct scsi_vhci *vhci, mpapi_item_list_t *ilist, int flags)
1863 if (vhci_mpapi_chk_path(vhci, ilist) == NULL) {
1900 vhci_init_uscsi_cmd(struct scsi_vhci *vhci,
1917 vhci, oid, MP_OBJECT_TYPE_PATH_LU)) == NULL) {
1925 if ((pip = vhci_mpapi_hold_pip(vhci, ilist,
1938 " Unable to find vhci private data"));
2000 vhci_send_uscsi_cmd(dev_t dev, struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
2012 mp_uscmdp = vhci_init_uscsi_cmd(vhci, mpioc, oid, &ilist);
2067 vhci_enable_path(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
2076 if ((ilist = (mpapi_item_list_t *)vhci_mpapi_hold_item(vhci, oid,
2085 if (vhci_mpapi_chk_path(vhci, ilist) == NULL) {
2095 vhci_mpapi_log_sysevent(vhci->vhci_dip,
2104 vhci_disable_path(struct scsi_vhci *vhci, mp_iocdata_t *mpioc,
2113 if ((ilist = (mpapi_item_list_t *)vhci_mpapi_hold_item(vhci, oid,
2122 if (vhci_mpapi_chk_path(vhci, ilist) == NULL) {
2141 vhci_mpapi_log_sysevent(vhci->vhci_dip,
2151 vhci_mpapi_ioctl(dev_t dev, struct scsi_vhci *vhci, void *udata,
2199 if (vhci_mpapi_sync_lu_oid_list(vhci) != 0) {
2203 mdi_vhci_walk_phcis(vhci->vhci_dip,
2204 vhci_mpapi_sync_init_port_list, vhci);
2209 rval = vhci_get_driver_prop(vhci, mpioc,
2213 rval = vhci_get_dev_prod_list(vhci, mpioc,
2217 rval = vhci_get_dev_prod_prop(vhci, mpioc,
2221 rval = vhci_get_lu_list(vhci, mpioc,
2225 rval = vhci_get_lu_list_from_tpg(vhci, mpioc,
2229 rval = vhci_get_tpg_list_for_lu(vhci, mpioc,
2233 rval = vhci_get_lu_prop(vhci, mpioc,
2237 rval = vhci_get_path_list_for_mp_lu(vhci, mpioc,
2241 rval = vhci_get_path_list_for_init_port(vhci, mpioc,
2245 rval = vhci_get_path_list_for_target_port(vhci, mpioc,
2249 rval = vhci_get_path_prop(vhci, mpioc,
2253 rval = vhci_get_init_port_list(vhci, mpioc,
2257 rval = vhci_get_init_port_prop(vhci, mpioc,
2261 rval = vhci_get_target_port_prop(vhci, mpioc,
2265 rval = vhci_get_tpg_list_for_lu(vhci, mpioc,
2269 rval = vhci_get_tpg_prop(vhci, mpioc,
2273 rval = vhci_get_target_port_list_for_tpg(vhci, mpioc,
2277 rval = vhci_set_tpg_access_state(vhci, mpioc,
2281 rval = vhci_assign_lu_to_tpg(vhci, mpioc,
2285 rval = vhci_get_prop_lb_list(vhci, mpioc,
2289 rval = vhci_get_prop_lb_prop(vhci, mpioc,
2293 rval = vhci_enable_auto_failback(vhci, mpioc,
2297 rval = vhci_disable_auto_failback(vhci, mpioc,
2301 rval = vhci_enable_path(vhci, mpioc,
2305 rval = vhci_disable_path(vhci, mpioc,
2309 rval = vhci_send_uscsi_cmd(dev, vhci, mpioc,
2341 vhci_mpapi_init(struct scsi_vhci *vhci)
2355 vhci->mp_priv->tstamp = (time32_t)(tod_get().tv_sec);
2359 vhci->mp_priv->obj_hdr_list[i] = vhci_mpapi_create_list_head();
2368 item->oid.raw_oid = vhci_mpapi_create_oid(vhci->mp_priv,
2392 if (vhci_mpapi_add_to_list(vhci->mp_priv->obj_hdr_list
2403 vhci_mpapi_add_dev_prod(struct scsi_vhci *vhci, char *vidpid)
2414 (vhci->mp_priv, MP_OBJECT_TYPE_DEVICE_PRODUCT);
2423 (void) vhci_mpapi_add_to_list(vhci->mp_priv->obj_hdr_list
2425 vhci_mpapi_log_sysevent(vhci->vhci_dip,
2489 * exits based on the pointer to the vhci resource that is passed.
2494 vhci_get_mpapi_item(struct scsi_vhci *vhci, mpapi_list_header_t *list,
2505 ilist = vhci->mp_priv->obj_hdr_list[obj_type]->head;
2569 (vhci, ilist, res)));
2573 (vhci, ilist, res)));
2592 vhci_mpapi_create_item(struct scsi_vhci *vhci, uint8_t obj_type, void* res)
2628 (void) vhci_mpapi_create_oid(vhci->mp_priv, obj_type);
2688 vhci_mpapi_log_sysevent(vhci->vhci_dip,
2708 vhci_mpapi_create_oid(vhci->mp_priv, obj_type);
2721 vhci_mpapi_log_sysevent(vhci->vhci_dip,
2732 vhci_mpapi_create_oid(vhci->mp_priv, obj_type);
2748 vhci_mpapi_log_sysevent(vhci->vhci_dip,
2763 vhci_mpapi_create_oid(vhci->mp_priv, obj_type);
2789 ((VHCI_CONF_FLAGS_AUTO_FAILBACK & vhci->
2822 vhci_mpapi_set_lu_valid(vhci, item, 1);
2834 vhci_mpapi_create_oid(vhci->mp_priv, obj_type);
2866 vhci_mpapi_log_sysevent(vhci->vhci_dip,
2885 (void) vhci_mpapi_add_to_list(vhci->mp_priv->obj_hdr_list[obj_type],
2910 vhci_update_mpapi_data(struct scsi_vhci *vhci, scsi_vhci_lun_t *vlun,
2923 VHCI_DEBUG(6, (CE_NOTE, NULL, "vhci_update_mpapi_data: vhci: %p, "
2924 "vlun: %p, pip: %p\n", (void *)vhci, (void *)vlun, (void *)pip));
2942 lu_list = vhci_get_mpapi_item(vhci, NULL,
2946 lu_list = vhci_mpapi_create_item(vhci,
2954 vhci_mpapi_set_lu_valid(vhci, lu_list->item, 1);
2975 path_list = vhci_get_mpapi_item(vhci, NULL,
2979 path_list = vhci_mpapi_create_item(vhci,
2993 vhci_mpapi_set_path_state(vhci->vhci_dip, pip,
2996 vhci_mpapi_set_path_state(vhci->vhci_dip, pip,
2999 vhci_mpapi_set_path_state(vhci->vhci_dip, pip,
3010 init_list = vhci_get_mpapi_item(vhci, NULL,
3019 init_list = vhci_mpapi_create_item(vhci,
3043 tgt_list = vhci_get_mpapi_item(vhci, NULL,
3047 tgt_list = vhci_mpapi_create_item(vhci,
3063 if (vhci_get_mpapi_item(vhci, ld->path_list,
3072 if (vhci_get_mpapi_item(vhci, initd->path_list,
3081 if (vhci_get_mpapi_item(vhci, tpd->path_list,
3102 vhci_mpapi_synthesize_tpg_data(vhci, vlun, pip);
3118 vhci_mpapi_get_alua_item(struct scsi_vhci *vhci, void *vlun, void *tpg_id,
3132 tpglist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_TARGET_PORT_GROUP]
3151 this_lulist = vhci_get_mpapi_item(vhci, NULL,
3181 vhci_mpapi_get_tpg_item(struct scsi_vhci *vhci, uint32_t acc_state, void *vlun,
3192 lulist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_MULTIPATH_LU]->head;
3212 this_lulist = vhci_get_mpapi_item(vhci, NULL,
3244 vhci_mpapi_get_tpg_for_lun(struct scsi_vhci *vhci, char *pclass,
3254 this_lulist = vhci_get_mpapi_item(vhci, NULL,
3317 vhci_mpapi_synthesize_tpg_data(struct scsi_vhci *vhci, scsi_vhci_lun_t *vlun,
3381 lu_list = vhci_get_mpapi_item(vhci, NULL,
3383 tpg_list = vhci_mpapi_get_tpg_item(vhci, as, vlun, path_class,
3386 tpg_list = vhci_mpapi_create_item(vhci,
3403 if (vhci_get_mpapi_item(vhci, tpg_data->lu_list,
3407 item_list = vhci_get_mpapi_item(vhci, NULL,
3417 if (vhci_get_mpapi_item(vhci, tpg_data->tport_list,
3421 item_list = vhci_get_mpapi_item(vhci, NULL,
3432 (vhci, path_class, vlun, tmp_wwn);
3447 (void) vhci_mpapi_update_tpg_acc_state_for_lu(vhci, vlun);
3468 struct scsi_vhci *vhci;
3532 * Now get the vhci ptr using the walker
3534 mdi_walk_vhcis(vhci_mpapi_get_vhci, &vhci);
3536 VHCI_DEBUG(4, (CE_NOTE, NULL, "vhci_mpapi_update_tpg_data: vhci=%p, "
3538 "%p\n", (void *)vhci, (void *)vlun,
3543 if ((vhci == NULL) || (vlun == NULL) ||
3558 lu_list = vhci_get_mpapi_item(vhci, NULL,
3562 lu_list = vhci_mpapi_create_item(vhci,
3570 vhci_mpapi_set_lu_valid(vhci, lu_list->item, 1);
3577 path_list = vhci_get_mpapi_item(vhci, NULL,
3581 path_list = vhci_mpapi_create_item(vhci,
3594 vhci_mpapi_set_path_state(vhci->vhci_dip, pip,
3597 vhci_mpapi_set_path_state(vhci->vhci_dip, pip,
3600 vhci_mpapi_set_path_state(vhci->vhci_dip, pip,
3611 init_list = vhci_get_mpapi_item(vhci, NULL,
3620 init_list = vhci_mpapi_create_item(vhci,
3637 if (vhci_get_mpapi_item(vhci, ld->path_list,
3646 if (vhci_get_mpapi_item(vhci, initd->path_list,
3671 tpg_list = vhci_mpapi_get_alua_item(vhci, vlun, &tpg_id, tgt_port);
3673 tpg_list = vhci_mpapi_create_item(vhci,
3699 if (vhci_get_mpapi_item(vhci, tpg_data->lu_list,
3703 item_list = vhci_get_mpapi_item(vhci, NULL,
3713 if (vhci_get_mpapi_item(vhci, ld->tpg_list,
3740 tgt_list = vhci_mpapi_get_rel_tport_pair(vhci, NULL,
3744 tgt_list = vhci_mpapi_create_item(vhci,
3756 if (vhci_get_mpapi_item(vhci, tpd->path_list,
3765 if (vhci_mpapi_get_rel_tport_pair(vhci,
3927 vhci_mpapi_sync_lu_oid_list(struct scsi_vhci *vhci)
3937 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_MULTIPATH_LU]->head;
3959 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_PATH_LU]->head;
4004 static void vhci_mpapi_set_lu_valid(struct scsi_vhci *vhci,
4014 vhci_mpapi_log_sysevent(vhci->vhci_dip, &(lu_item->oid.raw_oid),
4028 static void vhci_mpapi_set_tpg_as_prop(struct scsi_vhci *vhci,
4038 vhci_mpapi_log_sysevent(vhci->vhci_dip, &(tpg_item->oid.raw_oid),
4051 struct scsi_vhci *vhci = arg;
4068 init_list = vhci_get_mpapi_item(vhci, NULL,
4077 init_list = vhci_mpapi_create_item(vhci,
4127 struct scsi_vhci *vhci;
4135 vhci = ddi_get_soft_state(vhci_softstate, ddi_get_instance(vdip));
4137 ilist = vhci_get_mpapi_item(vhci, NULL, MP_OBJECT_TYPE_PATH_LU, pip);
4200 (void) vhci_mpapi_update_tpg_acc_state_for_lu(vhci,
4208 lu_list = vhci_get_mpapi_item(vhci, NULL,
4211 vhci_mpapi_set_lu_valid(vhci, lu_list->item, 0);
4225 vhci_mpapi_match_pip(struct scsi_vhci *vhci, mpapi_item_list_t *ilist,
4278 mpapi_item_list_t *vhci_mpapi_match_lu(struct scsi_vhci *vhci,
4308 vhci_mpapi_update_tpg_acc_state_for_lu(struct scsi_vhci *vhci,
4319 lu_list = vhci_get_mpapi_item(vhci, NULL, MP_OBJECT_TYPE_MULTIPATH_LU,
4346 * vhci has done the update on one of the class
4365 vhci_mpapi_set_tpg_as_prop(vhci,
4371 vhci_mpapi_set_tpg_as_prop(vhci,
4377 vhci_mpapi_set_tpg_as_prop(vhci,
4395 vhci_mpapi_set_lu_valid(vhci, lu_list->item, 1);
4419 vhci_mpapi_get_rel_tport_pair(struct scsi_vhci *vhci, mpapi_list_header_t *list,
4431 ilist = vhci->mp_priv->obj_hdr_list[MP_OBJECT_TYPE_TARGET_PORT]