Lines Matching refs:spp
106 sdev_plugin_t *spp = buf; in sdev_plugin_cache_constructor() local
107 mutex_init(&spp->sp_lock, NULL, MUTEX_DRIVER, 0); in sdev_plugin_cache_constructor()
108 cv_init(&spp->sp_nodecv, NULL, CV_DRIVER, NULL); in sdev_plugin_cache_constructor()
116 sdev_plugin_t *spp = buf; in sdev_plugin_cache_destructor() local
117 cv_destroy(&spp->sp_nodecv); in sdev_plugin_cache_destructor()
118 mutex_destroy(&spp->sp_lock); in sdev_plugin_cache_destructor()
196 sdev_plugin_mknode(sdev_plugin_t *spp, sdev_node_t *sdvp, char *name, in sdev_plugin_mknode() argument
203 ASSERT(spp != NULL); in sdev_plugin_mknode()
301 sdev_plugin_t *spp; in sdev_plugin_validate() local
304 spp = sdp->sdev_private; in sdev_plugin_validate()
305 ASSERT(spp->sp_islegacy == B_FALSE); in sdev_plugin_validate()
306 ASSERT(spp->sp_pops != NULL); in sdev_plugin_validate()
308 ret = spp->sp_pops->spo_validate((uintptr_t)sdp); in sdev_plugin_validate()
362 sdev_plugin_t *spp; in sdev_plugin_vop_readdir() local
370 spp = sdvp->sdev_private; in sdev_plugin_vop_readdir()
371 ASSERT(spp != NULL); in sdev_plugin_vop_readdir()
372 ASSERT(spp->sp_islegacy == B_FALSE); in sdev_plugin_vop_readdir()
373 ASSERT(spp->sp_pops != NULL); in sdev_plugin_vop_readdir()
394 ret = spp->sp_pops->spo_filldir((uintptr_t)sdvp); in sdev_plugin_vop_readdir()
426 sdev_plugin_t *spp; in sdev_plugin_vop_lookup() local
433 spp = sdvp->sdev_private; in sdev_plugin_vop_lookup()
434 ASSERT(spp != NULL); in sdev_plugin_vop_lookup()
435 ASSERT(spp->sp_islegacy == B_FALSE); in sdev_plugin_vop_lookup()
436 ASSERT(spp->sp_pops != NULL); in sdev_plugin_vop_lookup()
450 ret = spp->sp_pops->spo_filldir((uintptr_t)sdvp); in sdev_plugin_vop_lookup()
469 sdev_plugin_t *spp = sdp->sdev_private; in sdev_plugin_vop_inactive_cb() local
476 spp->sp_pops->spo_inactive((uintptr_t)sdp); in sdev_plugin_vop_inactive_cb()
477 mutex_enter(&spp->sp_lock); in sdev_plugin_vop_inactive_cb()
478 VERIFY(spp->sp_nnodes > 0); in sdev_plugin_vop_inactive_cb()
479 spp->sp_nnodes--; in sdev_plugin_vop_inactive_cb()
480 cv_signal(&spp->sp_nodecv); in sdev_plugin_vop_inactive_cb()
481 mutex_exit(&spp->sp_lock); in sdev_plugin_vop_inactive_cb()
491 sdev_plugin_t *spp = sdp->sdev_private; in sdev_plugin_vop_inactive() local
493 ASSERT(spp->sp_islegacy == B_FALSE); in sdev_plugin_vop_inactive()
553 sdev_plugin_t *spp, *iter; in sdev_plugin_register() local
588 spp = kmem_cache_alloc(sdev_plugin_cache, KM_SLEEP); in sdev_plugin_register()
589 (void) strlcpy(spp->sp_name, name, SDEV_PLUGIN_NAMELEN); in sdev_plugin_register()
591 spp->sp_pops = ops; in sdev_plugin_register()
592 spp->sp_nflags = SDEV_DYNAMIC | SDEV_VTOR; in sdev_plugin_register()
594 spp->sp_nflags |= SDEV_NO_NCACHE; in sdev_plugin_register()
596 spp->sp_nflags |= SDEV_SUBDIR; in sdev_plugin_register()
597 spp->sp_vnops = sdev_plugin_vnops; in sdev_plugin_register()
598 spp->sp_islegacy = B_FALSE; in sdev_plugin_register()
599 spp->sp_lvtor = NULL; in sdev_plugin_register()
600 spp->sp_nnodes = 0; in sdev_plugin_register()
621 kmem_cache_free(sdev_plugin_cache, spp); in sdev_plugin_register()
634 slp = sdev_cache_lookup(sdp, spp->sp_name); in sdev_plugin_register()
640 kmem_cache_free(sdev_plugin_cache, spp); in sdev_plugin_register()
647 if (strcmp(spp->sp_name, iter->sp_name) == 0) { in sdev_plugin_register()
652 kmem_cache_free(sdev_plugin_cache, spp); in sdev_plugin_register()
657 list_insert_tail(&sdev_plugin_list, spp); in sdev_plugin_register()
669 (void) sdev_plugin_mknode(spp, sdp, spp->sp_name, &vap); in sdev_plugin_register()
676 return ((sdev_plugin_hdl_t)spp); in sdev_plugin_register()
682 sdev_plugin_t *spp = arg; in sdev_plugin_unregister_cb() local
686 sdp = sdev_cache_lookup(rdp, spp->sp_name); in sdev_plugin_unregister_cb()
698 sdev_cache_update(rdp, &sdp, spp->sp_name, SDEV_CACHE_DELETE); in sdev_plugin_unregister_cb()
719 sdev_plugin_t *spp = (sdev_plugin_t *)hdl; in sdev_plugin_unregister() local
720 if (spp->sp_islegacy) in sdev_plugin_unregister()
727 list_remove(&sdev_plugin_list, spp); in sdev_plugin_unregister()
730 sdev_mnt_walk(sdev_plugin_unregister_cb, spp); in sdev_plugin_unregister()
731 mutex_enter(&spp->sp_lock); in sdev_plugin_unregister()
732 while (spp->sp_nnodes > 0) in sdev_plugin_unregister()
733 cv_wait(&spp->sp_nodecv, &spp->sp_lock); in sdev_plugin_unregister()
734 mutex_exit(&spp->sp_lock); in sdev_plugin_unregister()
735 kmem_cache_free(sdev_plugin_cache, spp); in sdev_plugin_unregister()
745 sdev_plugin_t *spp; in sdev_plugin_register_legacy() local
747 spp = kmem_cache_alloc(sdev_plugin_cache, KM_SLEEP); in sdev_plugin_register_legacy()
748 (void) strlcpy(spp->sp_name, vtp->vt_name, SDEV_PLUGIN_NAMELEN); in sdev_plugin_register_legacy()
749 spp->sp_islegacy = B_TRUE; in sdev_plugin_register_legacy()
750 spp->sp_pops = NULL; in sdev_plugin_register_legacy()
751 spp->sp_nflags = vtp->vt_flags; in sdev_plugin_register_legacy()
752 spp->sp_lvtor = vtp->vt_vtor; in sdev_plugin_register_legacy()
753 spp->sp_nnodes = 0; in sdev_plugin_register_legacy()
760 &spp->sp_vnops) != 0) { in sdev_plugin_register_legacy()
764 kmem_cache_free(sdev_plugin_cache, spp); in sdev_plugin_register_legacy()
769 *(vtp->vt_global_vops) = spp->sp_vnops; in sdev_plugin_register_legacy()
774 spp->sp_vnops = sdev_vnodeops; in sdev_plugin_register_legacy()
783 list_insert_tail(&sdev_plugin_list, spp); in sdev_plugin_register_legacy()
798 sdev_plugin_t *spp; in sdev_match() local
809 for (spp = list_head(&sdev_plugin_list); spp != NULL; in sdev_match()
810 spp = list_next(&sdev_plugin_list, spp)) { in sdev_match()
811 if (strcmp(spp->sp_name, path) == 0) { in sdev_match()
813 return (spp); in sdev_match()
816 if (spp->sp_nflags & SDEV_SUBDIR) { in sdev_match()
817 vlen = strlen(spp->sp_name); in sdev_match()
818 if ((strncmp(spp->sp_name, path, in sdev_match()
821 return (spp); in sdev_match()
835 sdev_plugin_t *spp; in sdev_set_no_negcache() local
841 for (spp = list_head(&sdev_plugin_list); spp != NULL; in sdev_set_no_negcache()
842 spp = list_next(&sdev_plugin_list, spp)) { in sdev_set_no_negcache()
843 if (strcmp(spp->sp_name, path) == 0) { in sdev_set_no_negcache()
844 if (spp->sp_nflags & SDEV_NO_NCACHE) in sdev_set_no_negcache()
856 sdev_plugin_t *spp; in sdev_get_vop() local
864 if ((spp = sdev_match(dv)) != NULL) { in sdev_get_vop()
865 dv->sdev_flags |= spp->sp_nflags; in sdev_get_vop()
869 return (spp->sp_vnops); in sdev_get_vop()
881 sdev_plugin_t *spp; in sdev_get_vtor() local
884 spp = sdev_match(dv); in sdev_get_vtor()
885 if (spp == NULL) in sdev_get_vtor()
888 spp = dv->sdev_private; in sdev_get_vtor()
891 if (spp->sp_islegacy) in sdev_get_vtor()
892 return ((void *)spp->sp_lvtor); in sdev_get_vtor()
900 sdev_plugin_t *spp; in sdev_plugin_nodeready() local
905 spp = sdev_match(sdp); in sdev_plugin_nodeready()
906 if (spp == NULL) in sdev_plugin_nodeready()
908 if (spp->sp_islegacy) in sdev_plugin_nodeready()
910 sdp->sdev_private = spp; in sdev_plugin_nodeready()
911 mutex_enter(&spp->sp_lock); in sdev_plugin_nodeready()
912 spp->sp_nnodes++; in sdev_plugin_nodeready()
913 mutex_exit(&spp->sp_lock); in sdev_plugin_nodeready()