Lines Matching refs:sdvp
196 sdev_plugin_mknode(sdev_plugin_t *spp, sdev_node_t *sdvp, char *name, in sdev_plugin_mknode() argument
202 ASSERT(RW_WRITE_HELD(&sdvp->sdev_contents)); in sdev_plugin_mknode()
204 svp = sdev_cache_lookup(sdvp, name); in sdev_plugin_mknode()
210 ret = sdev_mknode(sdvp, name, &svp, vap, NULL, NULL, kcred, in sdev_plugin_mknode()
225 sdev_node_t *sdvp; in sdev_plugin_mkdir() local
232 sdvp = (sdev_node_t *)ctx; in sdev_plugin_mkdir()
233 ASSERT(sdvp->sdev_private != NULL); in sdev_plugin_mkdir()
234 ASSERT(RW_WRITE_HELD(&sdvp->sdev_contents)); in sdev_plugin_mkdir()
242 return (sdev_plugin_mknode(sdvp->sdev_private, sdvp, name, &vap)); in sdev_plugin_mkdir()
248 sdev_node_t *sdvp; in sdev_plugin_mknod() local
257 sdvp = (sdev_node_t *)ctx; in sdev_plugin_mknod()
258 ASSERT(RW_WRITE_HELD(&sdvp->sdev_contents)); in sdev_plugin_mknod()
283 ASSERT(sdvp->sdev_private != NULL); in sdev_plugin_mknod()
294 return (sdev_plugin_mknode(sdvp->sdev_private, sdvp, name, &vap)); in sdev_plugin_mknod()
314 sdev_plugin_validate_dir(sdev_node_t *sdvp) in sdev_plugin_validate_dir() argument
319 ASSERT(RW_WRITE_HELD(&sdvp->sdev_contents)); in sdev_plugin_validate_dir()
321 for (svp = SDEV_FIRST_ENTRY(sdvp); svp != NULL; svp = next) { in sdev_plugin_validate_dir()
323 next = SDEV_NEXT_ENTRY(sdvp, svp); in sdev_plugin_validate_dir()
349 (void) sdev_cache_update(sdvp, &svp, svp->sdev_name, in sdev_plugin_validate_dir()
361 sdev_node_t *sdvp = VTOSDEV(dvp); in sdev_plugin_vop_readdir() local
364 ASSERT(RW_READ_HELD(&sdvp->sdev_contents)); in sdev_plugin_vop_readdir()
367 if (sdvp->sdev_state == SDEV_ZOMBIE) in sdev_plugin_vop_readdir()
370 spp = sdvp->sdev_private; in sdev_plugin_vop_readdir()
375 if (crgetzoneid(cred) == GLOBAL_ZONEID && !SDEV_IS_GLOBAL(sdvp)) in sdev_plugin_vop_readdir()
384 if (rw_tryupgrade(&sdvp->sdev_contents) == 0) { in sdev_plugin_vop_readdir()
385 rw_exit(&sdvp->sdev_contents); in sdev_plugin_vop_readdir()
386 rw_enter(&sdvp->sdev_contents, RW_WRITER); in sdev_plugin_vop_readdir()
387 if (sdvp->sdev_state == SDEV_ZOMBIE) { in sdev_plugin_vop_readdir()
388 rw_downgrade(&sdvp->sdev_contents); in sdev_plugin_vop_readdir()
393 sdev_plugin_validate_dir(sdvp); in sdev_plugin_vop_readdir()
394 ret = spp->sp_pops->spo_filldir((uintptr_t)sdvp); in sdev_plugin_vop_readdir()
395 rw_downgrade(&sdvp->sdev_contents); in sdev_plugin_vop_readdir()
425 sdev_node_t *sdvp; in sdev_plugin_vop_lookup() local
432 sdvp = VTOSDEV(dvp); in sdev_plugin_vop_lookup()
433 spp = sdvp->sdev_private; in sdev_plugin_vop_lookup()
438 if (crgetzoneid(cred) == GLOBAL_ZONEID && !SDEV_IS_GLOBAL(sdvp)) in sdev_plugin_vop_lookup()
444 rw_enter(&sdvp->sdev_contents, RW_WRITER); in sdev_plugin_vop_lookup()
445 if (sdvp->sdev_state == SDEV_ZOMBIE) { in sdev_plugin_vop_lookup()
446 rw_exit(&sdvp->sdev_contents); in sdev_plugin_vop_lookup()
449 sdev_plugin_validate_dir(sdvp); in sdev_plugin_vop_lookup()
450 ret = spp->sp_pops->spo_filldir((uintptr_t)sdvp); in sdev_plugin_vop_lookup()
451 rw_exit(&sdvp->sdev_contents); in sdev_plugin_vop_lookup()
455 return (devname_lookup_func(sdvp, nm, vpp, cred, in sdev_plugin_vop_lookup()