Lines Matching full:dmp

348  * On success devfs_populate_vp() returns with dmp->dm_lock held.
354 struct devfs_mount *dmp; in devfs_populate_vp() local
359 dmp = VFSTODEVFS(vp->v_mount); in devfs_populate_vp()
360 if (!devfs_populate_needed(dmp)) { in devfs_populate_vp()
361 sx_xlock(&dmp->dm_lock); in devfs_populate_vp()
367 sx_xlock(&dmp->dm_lock); in devfs_populate_vp()
368 DEVFS_DMP_HOLD(dmp); in devfs_populate_vp()
372 devfs_populate(dmp); in devfs_populate_vp()
374 sx_xunlock(&dmp->dm_lock); in devfs_populate_vp()
376 sx_xlock(&dmp->dm_lock); in devfs_populate_vp()
377 if (DEVFS_DMP_DROP(dmp)) { in devfs_populate_vp()
378 sx_xunlock(&dmp->dm_lock); in devfs_populate_vp()
379 devfs_unmount_final(dmp); in devfs_populate_vp()
384 sx_xunlock(&dmp->dm_lock); in devfs_populate_vp()
391 sx_xunlock(&dmp->dm_lock); in devfs_populate_vp()
403 struct devfs_mount *dmp; in devfs_vptocnp() local
409 dmp = VFSTODEVFS(vp->v_mount); in devfs_vptocnp()
421 if (vp->v_type == VDIR && dd == dmp->dm_rootdir) { in devfs_vptocnp()
454 sx_xunlock(&dmp->dm_lock); in devfs_vptocnp()
463 devfs_fqpn(char *buf, struct devfs_mount *dmp, struct devfs_dirent *dd, in devfs_fqpn() argument
469 sx_assert(&dmp->dm_lock, SA_LOCKED); in devfs_fqpn()
480 while (de != dmp->dm_rootdir) { in devfs_fqpn()
500 devfs_allocv_drop_refs(int drop_dm_lock, struct devfs_mount *dmp, in devfs_allocv_drop_refs() argument
512 if (DEVFS_DMP_DROP(dmp)) { in devfs_allocv_drop_refs()
516 sx_xunlock(&dmp->dm_lock); in devfs_allocv_drop_refs()
517 devfs_unmount_final(dmp); in devfs_allocv_drop_refs()
520 sx_unlock(&dmp->dm_lock); in devfs_allocv_drop_refs()
525 * devfs_allocv shall be entered with dmp->dm_lock held, and it drops
535 struct devfs_mount *dmp; in devfs_allocv() local
539 dmp = VFSTODEVFS(mp); in devfs_allocv()
541 sx_xunlock(&dmp->dm_lock); in devfs_allocv()
546 DEVFS_DMP_HOLD(dmp); in devfs_allocv()
552 sx_xunlock(&dmp->dm_lock); in devfs_allocv()
554 sx_xlock(&dmp->dm_lock); in devfs_allocv()
555 if (devfs_allocv_drop_refs(0, dmp, de)) { in devfs_allocv()
568 sx_xunlock(&dmp->dm_lock); in devfs_allocv()
575 devfs_allocv_drop_refs(1, dmp, de); in devfs_allocv()
584 devfs_allocv_drop_refs(1, dmp, de); in devfs_allocv()
627 (void) devfs_allocv_drop_refs(1, dmp, de); in devfs_allocv()
630 if (devfs_allocv_drop_refs(0, dmp, de)) { in devfs_allocv()
638 sx_xunlock(&dmp->dm_lock); in devfs_allocv()
803 struct devfs_mount *dmp; in devfs_getattr() local
812 dmp = VFSTODEVFS(vp->v_mount); in devfs_getattr()
813 sx_xunlock(&dmp->dm_lock); in devfs_getattr()
1048 struct devfs_mount *dmp; in devfs_lookupx() local
1062 dmp = VFSTODEVFS(mp); in devfs_lookupx()
1113 pname = devfs_fqpn(specname, dmp, dd, cnp); in devfs_lookupx()
1118 DEVFS_DMP_HOLD(dmp); in devfs_lookupx()
1119 sx_xunlock(&dmp->dm_lock); in devfs_lookupx()
1124 sx_xlock(&dmp->dm_lock); in devfs_lookupx()
1127 sx_xlock(&dmp->dm_lock); in devfs_lookupx()
1128 if (DEVFS_DMP_DROP(dmp)) { in devfs_lookupx()
1129 sx_xunlock(&dmp->dm_lock); in devfs_lookupx()
1130 devfs_unmount_final(dmp); in devfs_lookupx()
1132 sx_xunlock(&dmp->dm_lock); in devfs_lookupx()
1136 if (DEVFS_DMP_DROP(dmp)) { in devfs_lookupx()
1138 sx_xunlock(&dmp->dm_lock); in devfs_lookupx()
1139 devfs_unmount_final(dmp); in devfs_lookupx()
1149 dde = &cdev2priv(cdev)->cdp_dirents[dmp->dm_idx]; in devfs_lookupx()
1187 struct devfs_mount *dmp; in devfs_lookup() local
1193 dmp = VFSTODEVFS(ap->a_dvp->v_mount); in devfs_lookup()
1197 sx_xunlock(&dmp->dm_lock); in devfs_lookup()
1207 struct devfs_mount *dmp; in devfs_mknod() local
1217 dmp = VFSTODEVFS(dvp->v_mount); in devfs_mknod()
1224 sx_xlock(&dmp->dm_lock); in devfs_mknod()
1244 sx_xunlock(&dmp->dm_lock); in devfs_mknod()
1450 struct devfs_mount *dmp; in devfs_readdir() local
1476 dmp = VFSTODEVFS(ap->a_vp->v_mount); in devfs_readdir()
1509 sx_xunlock(&dmp->dm_lock); in devfs_readdir()
1588 struct devfs_mount *dmp = VFSTODEVFS(vp->v_mount); in devfs_remove() local
1593 sx_xlock(&dmp->dm_lock); in devfs_remove()
1608 devfs_delete(dmp, de, 0); in devfs_remove()
1609 sx_xunlock(&dmp->dm_lock); in devfs_remove()
1615 sx_xunlock(&dmp->dm_lock); in devfs_remove()
1702 struct devfs_mount *dmp; in devfs_rioctl() local
1711 dmp = VFSTODEVFS(vp->v_mount); in devfs_rioctl()
1712 sx_xlock(&dmp->dm_lock); in devfs_rioctl()
1714 DEVFS_DMP_HOLD(dmp); in devfs_rioctl()
1715 devfs_populate(dmp); in devfs_rioctl()
1716 if (DEVFS_DMP_DROP(dmp)) { in devfs_rioctl()
1717 sx_xunlock(&dmp->dm_lock); in devfs_rioctl()
1718 devfs_unmount_final(dmp); in devfs_rioctl()
1721 error = devfs_rules_ioctl(dmp, ap->a_command, ap->a_data, ap->a_td); in devfs_rioctl()
1722 sx_xunlock(&dmp->dm_lock); in devfs_rioctl()
1861 struct devfs_mount *dmp; in devfs_symlink() local
1866 dmp = VFSTODEVFS(ap->a_dvp->v_mount); in devfs_symlink()
1883 mac_devfs_create_symlink(ap->a_cnp->cn_cred, dmp->dm_mount, dd, de); in devfs_symlink()
1889 devfs_delete(dmp, de, DEVFS_DEL_NORECURSE); in devfs_symlink()
1890 sx_xunlock(&dmp->dm_lock); in devfs_symlink()
1901 devfs_dir_ref_de(dmp, dd); in devfs_symlink()
1902 devfs_rules_apply(dmp, de); in devfs_symlink()