Lines Matching full:dmp
359 * On success devfs_populate_vp() returns with dmp->dm_lock held.
365 struct devfs_mount *dmp; in devfs_populate_vp() local
373 dmp = VFSTODEVFS(vp->v_mount); in devfs_populate_vp()
374 if (!devfs_populate_needed(dmp)) { in devfs_populate_vp()
375 sx_xlock(&dmp->dm_lock); in devfs_populate_vp()
381 sx_xlock(&dmp->dm_lock); in devfs_populate_vp()
382 DEVFS_DMP_HOLD(dmp); in devfs_populate_vp()
386 devfs_populate(dmp); in devfs_populate_vp()
388 sx_xunlock(&dmp->dm_lock); in devfs_populate_vp()
390 sx_xlock(&dmp->dm_lock); in devfs_populate_vp()
391 if (DEVFS_DMP_DROP(dmp)) { in devfs_populate_vp()
392 sx_xunlock(&dmp->dm_lock); in devfs_populate_vp()
393 devfs_unmount_final(dmp); in devfs_populate_vp()
398 sx_xunlock(&dmp->dm_lock); in devfs_populate_vp()
405 sx_xunlock(&dmp->dm_lock); in devfs_populate_vp()
417 struct devfs_mount *dmp; in devfs_vptocnp() local
423 dmp = VFSTODEVFS(vp->v_mount); in devfs_vptocnp()
435 if (vp->v_type == VDIR && dd == dmp->dm_rootdir) { in devfs_vptocnp()
468 sx_xunlock(&dmp->dm_lock); in devfs_vptocnp()
477 devfs_fqpn(char *buf, struct devfs_mount *dmp, struct devfs_dirent *dd, in devfs_fqpn() argument
483 sx_assert(&dmp->dm_lock, SA_LOCKED); in devfs_fqpn()
494 while (de != dmp->dm_rootdir) { in devfs_fqpn()
514 devfs_allocv_drop_refs(int drop_dm_lock, struct devfs_mount *dmp, in devfs_allocv_drop_refs() argument
526 if (DEVFS_DMP_DROP(dmp)) { in devfs_allocv_drop_refs()
530 sx_xunlock(&dmp->dm_lock); in devfs_allocv_drop_refs()
531 devfs_unmount_final(dmp); in devfs_allocv_drop_refs()
534 sx_unlock(&dmp->dm_lock); in devfs_allocv_drop_refs()
539 * devfs_allocv shall be entered with dmp->dm_lock held, and it drops
549 struct devfs_mount *dmp; in devfs_allocv() local
553 dmp = VFSTODEVFS(mp); in devfs_allocv()
555 sx_xunlock(&dmp->dm_lock); in devfs_allocv()
560 DEVFS_DMP_HOLD(dmp); in devfs_allocv()
566 sx_xunlock(&dmp->dm_lock); in devfs_allocv()
568 sx_xlock(&dmp->dm_lock); in devfs_allocv()
569 if (devfs_allocv_drop_refs(0, dmp, de)) { in devfs_allocv()
582 sx_xunlock(&dmp->dm_lock); in devfs_allocv()
589 devfs_allocv_drop_refs(1, dmp, de); in devfs_allocv()
598 devfs_allocv_drop_refs(1, dmp, de); in devfs_allocv()
641 (void) devfs_allocv_drop_refs(1, dmp, de); in devfs_allocv()
644 if (devfs_allocv_drop_refs(0, dmp, de)) { in devfs_allocv()
652 sx_xunlock(&dmp->dm_lock); in devfs_allocv()
817 struct devfs_mount *dmp; in devfs_getattr() local
826 dmp = VFSTODEVFS(vp->v_mount); in devfs_getattr()
827 sx_xunlock(&dmp->dm_lock); in devfs_getattr()
1062 struct devfs_mount *dmp; in devfs_lookupx() local
1076 dmp = VFSTODEVFS(mp); in devfs_lookupx()
1127 pname = devfs_fqpn(specname, dmp, dd, cnp); in devfs_lookupx()
1132 DEVFS_DMP_HOLD(dmp); in devfs_lookupx()
1133 sx_xunlock(&dmp->dm_lock); in devfs_lookupx()
1155 sx_xlock(&dmp->dm_lock); in devfs_lookupx()
1158 sx_xlock(&dmp->dm_lock); in devfs_lookupx()
1159 if (DEVFS_DMP_DROP(dmp)) { in devfs_lookupx()
1160 sx_xunlock(&dmp->dm_lock); in devfs_lookupx()
1161 devfs_unmount_final(dmp); in devfs_lookupx()
1163 sx_xunlock(&dmp->dm_lock); in devfs_lookupx()
1167 if (DEVFS_DMP_DROP(dmp)) { in devfs_lookupx()
1169 sx_xunlock(&dmp->dm_lock); in devfs_lookupx()
1170 devfs_unmount_final(dmp); in devfs_lookupx()
1180 dde = &cdev2priv(cdev)->cdp_dirents[dmp->dm_idx]; in devfs_lookupx()
1218 struct devfs_mount *dmp; in devfs_lookup() local
1224 dmp = VFSTODEVFS(ap->a_dvp->v_mount); in devfs_lookup()
1228 sx_xunlock(&dmp->dm_lock); in devfs_lookup()
1238 struct devfs_mount *dmp; in devfs_mknod() local
1248 dmp = VFSTODEVFS(dvp->v_mount); in devfs_mknod()
1255 sx_xlock(&dmp->dm_lock); in devfs_mknod()
1275 sx_xunlock(&dmp->dm_lock); in devfs_mknod()
1481 struct devfs_mount *dmp; in devfs_readdir() local
1508 dmp = VFSTODEVFS(ap->a_vp->v_mount); in devfs_readdir()
1547 sx_xunlock(&dmp->dm_lock); in devfs_readdir()
1628 struct devfs_mount *dmp = VFSTODEVFS(vp->v_mount); in devfs_remove() local
1633 sx_xlock(&dmp->dm_lock); in devfs_remove()
1648 devfs_delete(dmp, de, 0); in devfs_remove()
1649 sx_xunlock(&dmp->dm_lock); in devfs_remove()
1655 sx_xunlock(&dmp->dm_lock); in devfs_remove()
1742 struct devfs_mount *dmp; in devfs_rioctl() local
1751 dmp = VFSTODEVFS(vp->v_mount); in devfs_rioctl()
1752 sx_xlock(&dmp->dm_lock); in devfs_rioctl()
1754 DEVFS_DMP_HOLD(dmp); in devfs_rioctl()
1755 devfs_populate(dmp); in devfs_rioctl()
1756 if (DEVFS_DMP_DROP(dmp)) { in devfs_rioctl()
1757 sx_xunlock(&dmp->dm_lock); in devfs_rioctl()
1758 devfs_unmount_final(dmp); in devfs_rioctl()
1761 error = devfs_rules_ioctl(dmp, ap->a_command, ap->a_data, ap->a_td); in devfs_rioctl()
1762 sx_xunlock(&dmp->dm_lock); in devfs_rioctl()
1901 struct devfs_mount *dmp; in devfs_symlink() local
1906 dmp = VFSTODEVFS(ap->a_dvp->v_mount); in devfs_symlink()
1923 mac_devfs_create_symlink(ap->a_cnp->cn_cred, dmp->dm_mount, dd, de); in devfs_symlink()
1929 devfs_delete(dmp, de, DEVFS_DEL_NORECURSE); in devfs_symlink()
1930 sx_xunlock(&dmp->dm_lock); in devfs_symlink()
1941 devfs_dir_ref_de(dmp, dd); in devfs_symlink()
1942 devfs_rules_apply(dmp, de); in devfs_symlink()