Lines Matching refs:vfsp

225 fsop_mount(vfs_t *vfsp, vnode_t *mvp, struct mounta *uap, cred_t *cr)  in fsop_mount()  argument
227 return (*(vfsp)->vfs_op->vfs_mount)(vfsp, mvp, uap, cr); in fsop_mount()
231 fsop_unmount(vfs_t *vfsp, int flag, cred_t *cr) in fsop_unmount() argument
233 return (*(vfsp)->vfs_op->vfs_unmount)(vfsp, flag, cr); in fsop_unmount()
237 fsop_root(vfs_t *vfsp, vnode_t **vpp) in fsop_root() argument
240 int ret = (*(vfsp)->vfs_op->vfs_root)(vfsp, vpp); in fsop_root()
245 if (ret == 0 && vfsp->vfs_mntpt != NULL && (*vpp)->v_path == NULL) { in fsop_root()
246 mntpt = vfs_getmntpoint(vfsp); in fsop_root()
256 fsop_statfs(vfs_t *vfsp, statvfs64_t *sp) in fsop_statfs() argument
258 return (*(vfsp)->vfs_op->vfs_statvfs)(vfsp, sp); in fsop_statfs()
262 fsop_sync(vfs_t *vfsp, short flag, cred_t *cr) in fsop_sync() argument
264 return (*(vfsp)->vfs_op->vfs_sync)(vfsp, flag, cr); in fsop_sync()
268 fsop_vget(vfs_t *vfsp, vnode_t **vpp, fid_t *fidp) in fsop_vget() argument
281 if (vfs_has_feature(vfsp, VFSFT_SYSATTR_VIEWS) && in fsop_vget()
283 return (xattr_dir_vget(vfsp, vpp, fidp)); in fsop_vget()
285 return (*(vfsp)->vfs_op->vfs_vget)(vfsp, vpp, fidp); in fsop_vget()
289 fsop_mountroot(vfs_t *vfsp, enum whymountroot reason) in fsop_mountroot() argument
291 return (*(vfsp)->vfs_op->vfs_mountroot)(vfsp, reason); in fsop_mountroot()
295 fsop_freefs(vfs_t *vfsp) in fsop_freefs() argument
297 (*(vfsp)->vfs_op->vfs_freevfs)(vfsp); in fsop_freefs()
301 fsop_vnstate(vfs_t *vfsp, vnode_t *vp, vntrans_t nstate) in fsop_vnstate() argument
303 return ((*(vfsp)->vfs_op->vfs_vnstate)(vfsp, vp, nstate)); in fsop_vnstate()
468 vfs_setops(vfs_t *vfsp, vfsops_t *vfsops) in vfs_setops() argument
472 ASSERT(vfsp != NULL); in vfs_setops()
475 op = vfsp->vfs_op; in vfs_setops()
477 if (vfsp->vfs_femhead == NULL && in vfs_setops()
478 atomic_cas_ptr(&vfsp->vfs_op, op, vfsops) == op) { in vfs_setops()
481 fsem_setvfsops(vfsp, vfsops); in vfs_setops()
486 vfs_getops(vfs_t *vfsp) in vfs_getops() argument
490 ASSERT(vfsp != NULL); in vfs_getops()
492 op = vfsp->vfs_op; in vfs_getops()
494 if (vfsp->vfs_femhead == NULL && op == vfsp->vfs_op) { in vfs_getops()
497 return (fsem_getvfsops(vfsp)); in vfs_getops()
506 vfs_matchops(vfs_t *vfsp, vfsops_t *vfsops) in vfs_matchops() argument
508 return (vfs_getops(vfsp) == vfsops); in vfs_matchops()
516 vfs_can_sync(vfs_t *vfsp) in vfs_can_sync() argument
519 return (vfs_getops(vfsp)->vfs_sync != fs_sync); in vfs_can_sync()
526 vfs_init(vfs_t *vfsp, vfsops_t *op, void *data) in vfs_init() argument
529 vfsp->vfs_count = 0; in vfs_init()
530 vfsp->vfs_next = vfsp; in vfs_init()
531 vfsp->vfs_prev = vfsp; in vfs_init()
532 vfsp->vfs_zone_next = vfsp; in vfs_init()
533 vfsp->vfs_zone_prev = vfsp; in vfs_init()
534 vfsp->vfs_lofi_minor = 0; in vfs_init()
535 sema_init(&vfsp->vfs_reflock, 1, NULL, SEMA_DEFAULT, NULL); in vfs_init()
536 vfsimpl_setup(vfsp); in vfs_init()
537 vfsp->vfs_data = (data); in vfs_init()
538 vfs_setops((vfsp), (op)); in vfs_init()
546 vfsimpl_setup(vfs_t *vfsp) in vfsimpl_setup() argument
550 if (vfsp->vfs_implp != NULL) { in vfsimpl_setup()
554 vfsp->vfs_implp = kmem_alloc(sizeof (vfs_impl_t), KM_SLEEP); in vfsimpl_setup()
556 vfsp->vfs_vskap = NULL; in vfsimpl_setup()
557 vfsp->vfs_fstypevsp = NULL; in vfsimpl_setup()
560 vfsp->vfs_featureset[0] = VFS_FEATURE_MAXSZ - 1; in vfsimpl_setup()
562 vfsp->vfs_featureset[i] = 0; in vfsimpl_setup()
572 vfsimpl_teardown(vfs_t *vfsp) in vfsimpl_teardown() argument
574 vfs_impl_t *vip = vfsp->vfs_implp; in vfsimpl_teardown()
579 kmem_free(vfsp->vfs_implp, sizeof (vfs_impl_t)); in vfsimpl_teardown()
580 vfsp->vfs_implp = NULL; in vfsimpl_teardown()
837 vfs_t *vfsp; in vfs_mountfs() local
848 if (domount(NULL, &mounta, mvp, CRED(), &vfsp)) in vfs_mountfs()
851 VFS_RELE(vfsp); in vfs_mountfs()
1032 lofi_add(const char *fsname, struct vfs *vfsp, in lofi_add() argument
1092 vfsp->vfs_lofi_minor = minor; in lofi_add()
1106 lofi_remove(struct vfs *vfsp) in lofi_remove() argument
1113 if (vfsp->vfs_lofi_minor == 0) in lofi_remove()
1119 li->li_minor = vfsp->vfs_lofi_minor; in lofi_remove()
1134 vfsp->vfs_lofi_minor = 0; in lofi_remove()
1168 struct vfs *vfsp; in domount() local
1514 vfsp = vp->v_vfsp; in domount()
1515 ovflags = vfsp->vfs_flag; in domount()
1516 vfsp->vfs_flag |= VFS_REMOUNT; in domount()
1517 vfsp->vfs_flag &= ~VFS_RDONLY; in domount()
1519 vfsp = vfs_alloc(KM_SLEEP); in domount()
1520 VFS_INIT(vfsp, vfsops, NULL); in domount()
1523 VFS_HOLD(vfsp); in domount()
1525 if ((error = lofi_add(fsname, vfsp, &mnt_mntopts, uap)) != 0) { in domount()
1529 vfs_free(vfsp); in domount()
1532 VFS_RELE(vfsp); in domount()
1540 if (vfsp->vfs_lofi_minor != 0) { in domount()
1549 if ((sema_tryp(&vfsp->vfs_reflock) == 0) && in domount()
1550 !(vfsp->vfs_flag & VFS_REMOUNT)) in domount()
1562 if (error = vfs_lock(vfsp)) { in domount()
1563 vfsp->vfs_flag = ovflags; in domount()
1565 lofi_remove(vfsp); in domount()
1569 vfs_free(vfsp); in domount()
1573 vfs_lock_wait(vfsp); in domount()
1593 error = vfs_get_lofi(vfsp, &lvp); in domount()
1595 lofi_remove(vfsp); in domount()
1599 vfs_unlock(vfsp); in domount()
1602 VFS_RELE(vfsp); in domount()
1604 vfs_free(vfsp); in domount()
1617 vfs_addmip(bdev, vfsp); in domount()
1687 vfs_swapopttbl(&mnt_mntopts, &vfsp->vfs_mntopts); in domount()
1689 if ((oldresource = vfsp->vfs_resource) != NULL) in domount()
1691 if ((oldmntpt = vfsp->vfs_mntpt) != NULL) in domount()
1694 vfs_setresource(vfsp, resource, 0); in domount()
1695 vfs_setmntpoint(vfsp, mountpt, 0); in domount()
1701 error = VFS_MOUNT(vfsp, vp, uap, credp); in domount()
1704 vfs_setmntopt(vfsp, MNTOPT_RO, NULL, 0); in domount()
1706 vfs_setmntopt(vfsp, MNTOPT_NOSUID, NULL, 0); in domount()
1708 vfs_setmntopt(vfsp, MNTOPT_GLOBAL, NULL, 0); in domount()
1711 lofi_remove(vfsp); in domount()
1715 vfs_swapopttbl(&mnt_mntopts, &vfsp->vfs_mntopts); in domount()
1716 vfs_setmntpoint(vfsp, refstr_value(oldmntpt), in domount()
1720 vfs_setresource(vfsp, refstr_value(oldresource), in domount()
1724 vfsp->vfs_flag = ovflags; in domount()
1725 vfs_unlock(vfsp); in domount()
1726 VFS_RELE(vfsp); in domount()
1728 vfs_unlock(vfsp); in domount()
1729 vfs_freemnttab(vfsp); in domount()
1730 vfs_free(vfsp); in domount()
1736 vfsp->vfs_mtime = ddi_get_time(); in domount()
1738 vfsp->vfs_flag &= ~VFS_REMOUNT; in domount()
1750 vfs_add(vp, vfsp, uap->flags); in domount()
1756 vfsp->vfs_zone = NULL; in domount()
1757 VFS_HOLD(vfsp); in domount()
1758 vfsp->vfs_vnodecovered = NULL; in domount()
1763 if (vfs_optionisset(vfsp, MNTOPT_RO, NULL)) in domount()
1764 vfsp->vfs_flag |= VFS_RDONLY; in domount()
1766 vfsp->vfs_flag &= ~VFS_RDONLY; in domount()
1767 if (vfs_optionisset(vfsp, MNTOPT_NOSUID, NULL)) { in domount()
1768 vfsp->vfs_flag |= (VFS_NOSETUID|VFS_NODEVICES); in domount()
1770 if (vfs_optionisset(vfsp, MNTOPT_NODEVICES, NULL)) in domount()
1771 vfsp->vfs_flag |= VFS_NODEVICES; in domount()
1773 vfsp->vfs_flag &= ~VFS_NODEVICES; in domount()
1774 if (vfs_optionisset(vfsp, MNTOPT_NOSETUID, NULL)) in domount()
1775 vfsp->vfs_flag |= VFS_NOSETUID; in domount()
1777 vfsp->vfs_flag &= ~VFS_NOSETUID; in domount()
1779 if (vfs_optionisset(vfsp, MNTOPT_NBMAND, NULL)) in domount()
1780 vfsp->vfs_flag |= VFS_NBMAND; in domount()
1782 vfsp->vfs_flag &= ~VFS_NBMAND; in domount()
1784 if (vfs_optionisset(vfsp, MNTOPT_XATTR, NULL)) in domount()
1785 vfsp->vfs_flag |= VFS_XATTR; in domount()
1787 vfsp->vfs_flag &= ~VFS_XATTR; in domount()
1789 if (vfs_optionisset(vfsp, MNTOPT_NOEXEC, NULL)) in domount()
1790 vfsp->vfs_flag |= VFS_NOEXEC; in domount()
1792 vfsp->vfs_flag &= ~VFS_NOEXEC; in domount()
1801 &vfsp->vfs_mntopts, inargs, optlen); in domount()
1823 initialize_vopstats(&vfsp->vfs_vopstats); in domount()
1829 vfsp->vfs_vskap = NULL; in domount()
1830 vfsp->vfs_flag |= VFS_STATS; in domount()
1831 vfsp->vfs_fstypevsp = get_fstype_vopstats(vfsp, vswp); in domount()
1835 vfsp->vfs_flag |= VFS_XID; in domount()
1837 vfs_unlock(vfsp); in domount()
1852 vskap = get_vskstat_anchor(vfsp); in domount()
1855 vfs_lock_wait(vfsp); in domount()
1856 if (vfsp->vfs_flag & VFS_STATS) { in domount()
1857 vfsp->vfs_vskap = vskap; in domount()
1859 vfs_unlock(vfsp); in domount()
1863 *vfspp = vfsp; in domount()
1878 vfs_delmip(vfsp); in domount()
1884 lofi_remove(vfsp); in domount()
1885 VFS_RELE(vfsp); in domount()
1893 struct vfs *vfsp, /* vfs being updated */ in vfs_setpath() argument
1904 ASSERT(!VFS_ON_LIST(vfsp) || vfs_lock_held(vfsp)); in vfs_setpath()
1917 if (VFS_ON_LIST(vfsp)) { in vfs_setpath()
1986 vfs_setresource(struct vfs *vfsp, const char *resource, uint32_t flag) in vfs_setresource() argument
1990 vfs_setpath(vfsp, &vfsp->vfs_resource, resource, flag); in vfs_setresource()
1998 vfs_setmntpoint(struct vfs *vfsp, const char *mntpt, uint32_t flag) in vfs_setmntpoint() argument
2002 vfs_setpath(vfsp, &vfsp->vfs_mntpt, mntpt, flag); in vfs_setmntpoint()
2008 vfs_getresource(const struct vfs *vfsp) in vfs_getresource() argument
2013 resource = vfsp->vfs_resource; in vfs_getresource()
2023 vfs_getmntpoint(const struct vfs *vfsp) in vfs_getmntpoint() argument
2028 mntpt = vfsp->vfs_mntpt; in vfs_getmntpoint()
2375 vfs_clearmntopt(struct vfs *vfsp, const char *opt) in vfs_clearmntopt() argument
2379 if (VFS_ON_LIST(vfsp)) { in vfs_clearmntopt()
2383 vfs_clearmntopt_nolock(&vfsp->vfs_mntopts, opt, gotlock); in vfs_clearmntopt()
2461 vfs_setmntopt(struct vfs *vfsp, const char *opt, const char *arg, int flags) in vfs_setmntopt() argument
2465 if (VFS_ON_LIST(vfsp)) { in vfs_setmntopt()
2469 vfs_setmntopt_nolock(&vfsp->vfs_mntopts, opt, arg, flags, gotlock); in vfs_setmntopt()
2512 vfs_t *vfsp; in vfs_settag() local
2524 vfsp = rootvfs; in vfs_settag()
2526 if (vfsp->vfs_dev == dev && in vfs_settag()
2527 strcmp(mntpt, refstr_value(vfsp->vfs_mntpt)) == 0) { in vfs_settag()
2531 vfsp = vfsp->vfs_next; in vfs_settag()
2532 } while (vfsp != rootvfs); in vfs_settag()
2538 err = secpolicy_fs_config(cr, vfsp); in vfs_settag()
2542 mops = &vfsp->vfs_mntopts; in vfs_settag()
2576 vfs_t *vfsp; in vfs_clrtag() local
2586 vfsp = rootvfs; in vfs_clrtag()
2588 if (vfsp->vfs_dev == dev && in vfs_clrtag()
2589 strcmp(mntpt, refstr_value(vfsp->vfs_mntpt)) == 0) { in vfs_clrtag()
2593 vfsp = vfsp->vfs_next; in vfs_clrtag()
2594 } while (vfsp != rootvfs); in vfs_clrtag()
2600 err = secpolicy_fs_config(cr, vfsp); in vfs_clrtag()
2604 if ((mop = vfs_hasopt(&vfsp->vfs_mntopts, tag)) == NULL) { in vfs_clrtag()
2612 vfs_clearmntopt_nolock(&vfsp->vfs_mntopts, tag, 1); in vfs_clrtag()
2727 vfs_optionisset(const struct vfs *vfsp, const char *opt, char **argp) in vfs_optionisset() argument
2732 ret = vfs_optionisset_nolock(&vfsp->vfs_mntopts, opt, argp); in vfs_optionisset()
2975 vfs_freemnttab(struct vfs *vfsp) in vfs_freemnttab() argument
2977 ASSERT(!VFS_ON_LIST(vfsp)); in vfs_freemnttab()
2982 if (vfsp->vfs_mntpt != NULL) { in vfs_freemnttab()
2983 refstr_rele(vfsp->vfs_mntpt); in vfs_freemnttab()
2984 vfsp->vfs_mntpt = NULL; in vfs_freemnttab()
2986 if (vfsp->vfs_resource != NULL) { in vfs_freemnttab()
2987 refstr_rele(vfsp->vfs_resource); in vfs_freemnttab()
2988 vfsp->vfs_resource = NULL; in vfs_freemnttab()
2993 vfs_freeopttbl(&vfsp->vfs_mntopts); in vfs_freemnttab()
3081 dounmount(struct vfs *vfsp, int flag, cred_t *cr) in dounmount() argument
3091 coveredvp = vfsp->vfs_vnodecovered; in dounmount()
3097 (void) dnlc_purge_vfsp(vfsp, 0); in dounmount()
3101 (void) VFS_SYNC(vfsp, 0, cr); in dounmount()
3108 vfs_lock_wait(vfsp); in dounmount()
3110 if (error = VFS_UNMOUNT(vfsp, flag, cr)) { in dounmount()
3111 vfs_unlock(vfsp); in dounmount()
3115 teardown_vopstats(vfsp); in dounmount()
3122 vfs_remove(vfsp); in dounmount()
3126 teardown_vopstats(vfsp); in dounmount()
3131 vfs_unlock(vfsp); in dounmount()
3132 VFS_RELE(vfsp); in dounmount()
3149 struct vfs *vfsp; in vfs_unmountall() local
3161 for (vfsp = rootvfs->vfs_prev; vfsp != rootvfs; vfsp = prev_vfsp) { in vfs_unmountall()
3162 prev_vfsp = vfsp->vfs_prev; in vfs_unmountall()
3164 if (vfs_lock(vfsp) != 0) in vfs_unmountall()
3166 error = vn_vfswlock(vfsp->vfs_vnodecovered); in vfs_unmountall()
3167 vfs_unlock(vfsp); in vfs_unmountall()
3173 (void) VFS_SYNC(vfsp, SYNC_CLOSE, CRED()); in vfs_unmountall()
3174 (void) dounmount(vfsp, 0, CRED()); in vfs_unmountall()
3181 for (vfsp = rootvfs->vfs_prev; in vfs_unmountall()
3182 vfsp != rootvfs; vfsp = vfsp->vfs_prev) in vfs_unmountall()
3183 if (vfsp == prev_vfsp) in vfs_unmountall()
3185 if (vfsp == rootvfs && prev_vfsp != rootvfs) in vfs_unmountall()
3195 vfs_addmip(dev_t dev, struct vfs *vfsp) in vfs_addmip() argument
3202 mipp->mip_vfsp = vfsp; in vfs_addmip()
3217 vfs_delmip(struct vfs *vfsp) in vfs_delmip() argument
3224 mipp && mipp->mip_vfsp != vfsp; mipp = mipp->mip_next) { in vfs_delmip()
3247 vfs_add(vnode_t *coveredvp, struct vfs *vfsp, int mflag) in vfs_add() argument
3251 ASSERT(vfs_lock_held(vfsp)); in vfs_add()
3252 VFS_HOLD(vfsp); in vfs_add()
3253 newflag = vfsp->vfs_flag; in vfs_add()
3269 coveredvp->v_vfsmountedhere = vfsp; in vfs_add()
3272 vfsp->vfs_vnodecovered = coveredvp; in vfs_add()
3273 vfsp->vfs_flag = newflag; in vfs_add()
3275 vfs_list_add(vfsp); in vfs_add()
3288 vfs_remove(struct vfs *vfsp) in vfs_remove() argument
3292 ASSERT(vfs_lock_held(vfsp)); in vfs_remove()
3298 if (vfsp == rootvfs) in vfs_remove()
3301 vfs_list_remove(vfsp); in vfs_remove()
3306 vp = vfsp->vfs_vnodecovered; in vfs_remove()
3309 vfsp->vfs_vnodecovered = NULL; in vfs_remove()
3315 vfs_unlock(vfsp); in vfs_remove()
3316 VFS_RELE(vfsp); in vfs_remove()
3325 vfs_lock(vfs_t *vfsp) in vfs_lock() argument
3329 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_lock()
3338 vfs_rlock(vfs_t *vfsp) in vfs_rlock() argument
3342 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_rlock()
3352 vfs_lock_wait(vfs_t *vfsp) in vfs_lock_wait() argument
3356 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_lock_wait()
3361 vfs_rlock_wait(vfs_t *vfsp) in vfs_rlock_wait() argument
3365 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_rlock_wait()
3373 vfs_unlock(vfs_t *vfsp) in vfs_unlock() argument
3391 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_unlock()
3422 vfs_lock_held(vfs_t *vfsp) in vfs_lock_held() argument
3435 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_lock_held()
3443 vfs_lock_owner(vfs_t *vfsp) in vfs_lock_owner() argument
3456 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_lock_owner()
3500 vfs_hash_add(struct vfs *vfsp, int insert_at_head) in vfs_hash_add() argument
3508 dev = expldev(vfsp->vfs_fsid.val[0]); in vfs_hash_add()
3519 vfsp->vfs_hash = rvfs_list[vhno].rvfs_head; in vfs_hash_add()
3520 rvfs_list[vhno].rvfs_head = vfsp; in vfs_hash_add()
3529 vfsp->vfs_hash = NULL; in vfs_hash_add()
3530 *hp = vfsp; in vfs_hash_add()
3539 vfs_hash_remove(struct vfs *vfsp) in vfs_hash_remove() argument
3547 dev = expldev(vfsp->vfs_fsid.val[0]); in vfs_hash_remove()
3555 if (rvfs_list[vhno].rvfs_head == vfsp) { in vfs_hash_remove()
3556 rvfs_list[vhno].rvfs_head = vfsp->vfs_hash; in vfs_hash_remove()
3562 if (tvfsp->vfs_hash == vfsp) { in vfs_hash_remove()
3563 tvfsp->vfs_hash = vfsp->vfs_hash; in vfs_hash_remove()
3577 vfs_list_add(struct vfs *vfsp) in vfs_list_add() argument
3589 if (vfsp->vfs_implp == NULL) in vfs_list_add()
3590 vfsimpl_setup(vfsp); in vfs_list_add()
3591 vfs_mono_time(&vfsp->vfs_hrctime); in vfs_list_add()
3599 vfsp->vfs_zone = curproc->p_zone; in vfs_list_add()
3600 zone_init_ref(&vfsp->vfs_implp->vi_zone_ref); in vfs_list_add()
3601 zone_hold_ref(vfsp->vfs_zone, &vfsp->vfs_implp->vi_zone_ref, in vfs_list_add()
3607 zone = zone_find_by_path(refstr_value(vfsp->vfs_mntpt)); in vfs_list_add()
3627 if (vfsp == &root) { in vfs_list_add()
3632 ASSERT(rootvfs == vfsp); in vfs_list_add()
3638 zone->zone_vfslist = vfsp; in vfs_list_add()
3645 rootvfs->vfs_prev->vfs_next = vfsp; in vfs_list_add()
3646 vfsp->vfs_prev = rootvfs->vfs_prev; in vfs_list_add()
3647 rootvfs->vfs_prev = vfsp; in vfs_list_add()
3648 vfsp->vfs_next = rootvfs; in vfs_list_add()
3655 zone->zone_vfslist = vfsp; in vfs_list_add()
3657 zone->zone_vfslist->vfs_zone_prev->vfs_zone_next = vfsp; in vfs_list_add()
3658 vfsp->vfs_zone_prev = zone->zone_vfslist->vfs_zone_prev; in vfs_list_add()
3659 zone->zone_vfslist->vfs_zone_prev = vfsp; in vfs_list_add()
3660 vfsp->vfs_zone_next = zone->zone_vfslist; in vfs_list_add()
3669 vfs_hash_add(vfsp, 0); in vfs_list_add()
3675 vfsp->vfs_mntix = ++vfs_curr_mntix; in vfs_list_add()
3676 avl_add(&vfs_by_dev, vfsp); in vfs_list_add()
3681 avl_add(&vfs_by_mntpnt, vfsp); in vfs_list_add()
3692 vfs_list_remove(struct vfs *vfsp) in vfs_list_remove() argument
3696 zone = zone_find_by_path(refstr_value(vfsp->vfs_mntpt)); in vfs_list_remove()
3702 ASSERT(vfsp != rootvfs); in vfs_list_remove()
3709 avl_remove(&vfs_by_mntpnt, vfsp); in vfs_list_remove()
3710 avl_remove(&vfs_by_dev, vfsp); in vfs_list_remove()
3715 vfs_hash_remove(vfsp); in vfs_list_remove()
3720 vfsp->vfs_prev->vfs_next = vfsp->vfs_next; in vfs_list_remove()
3721 vfsp->vfs_next->vfs_prev = vfsp->vfs_prev; in vfs_list_remove()
3722 vfsp->vfs_next = vfsp->vfs_prev = NULL; in vfs_list_remove()
3727 if (zone->zone_vfslist == vfsp) in vfs_list_remove()
3728 zone->zone_vfslist = vfsp->vfs_zone_next; in vfs_list_remove()
3730 if (vfsp->vfs_zone_next == vfsp) { in vfs_list_remove()
3731 ASSERT(vfsp->vfs_zone_prev == vfsp); in vfs_list_remove()
3732 ASSERT(zone->zone_vfslist == vfsp); in vfs_list_remove()
3736 vfsp->vfs_zone_prev->vfs_zone_next = vfsp->vfs_zone_next; in vfs_list_remove()
3737 vfsp->vfs_zone_next->vfs_zone_prev = vfsp->vfs_zone_prev; in vfs_list_remove()
3738 vfsp->vfs_zone_next = vfsp->vfs_zone_prev = NULL; in vfs_list_remove()
3751 struct vfs *vfsp; in getvfs() local
3759 for (vfsp = rvfs_list[vhno].rvfs_head; vfsp; vfsp = vfsp->vfs_hash) { in getvfs()
3760 if (vfsp->vfs_fsid.val[0] == val0 && in getvfs()
3761 vfsp->vfs_fsid.val[1] == val1) { in getvfs()
3762 VFS_HOLD(vfsp); in getvfs()
3764 return (vfsp); in getvfs()
3780 vfs_devmounting(dev_t dev, struct vfs *vfsp) in vfs_devmounting() argument
3788 if (mipp->mip_vfsp != vfsp) in vfs_devmounting()
3805 struct vfs *vfsp; in vfs_devismounted() local
3822 vfsp = avl_nearest(&vfs_by_dev, index, AVL_AFTER); in vfs_devismounted()
3824 if (vfsp != NULL && vfsp->vfs_dev == dev) in vfs_devismounted()
3839 struct vfs *vfsp; in vfs_dev2vfsp() local
3856 vfsp = avl_nearest(&vfs_by_dev, index, AVL_AFTER); in vfs_dev2vfsp()
3859 while (vfsp != NULL && vfsp->vfs_dev == dev) { in vfs_dev2vfsp()
3867 if (ZONE_PATH_VISIBLE(refstr_value(vfsp->vfs_mntpt), in vfs_dev2vfsp()
3869 VFS_HOLD(vfsp); in vfs_dev2vfsp()
3873 vfsp = AVL_NEXT(&vfs_by_dev, vfsp); in vfs_dev2vfsp()
3876 return (found ? vfsp : NULL); in vfs_dev2vfsp()
3893 struct vfs *vfsp; in vfs_mntpoint2vfsp() local
3916 vfsp = avl_nearest(&vfs_by_mntpnt, index, AVL_BEFORE); in vfs_mntpoint2vfsp()
3920 if (vfsp != NULL && in vfs_mntpoint2vfsp()
3921 strcmp(refstr_value(vfsp->vfs_mntpt), mp) == 0) in vfs_mntpoint2vfsp()
3922 retvfsp = vfsp; in vfs_mntpoint2vfsp()
3926 vfsp = list->vfs_zone_prev; in vfs_mntpoint2vfsp()
3928 mntpt = refstr_value(vfsp->vfs_mntpt); in vfs_mntpoint2vfsp()
3931 retvfsp = vfsp; in vfs_mntpoint2vfsp()
3934 vfsp = vfsp->vfs_zone_prev; in vfs_mntpoint2vfsp()
3935 } while (vfsp != list->vfs_zone_prev); in vfs_mntpoint2vfsp()
3950 struct vfs *vfsp; in vfs_opsinuse() local
3954 vfsp = rootvfs; in vfs_opsinuse()
3957 if (vfs_getops(vfsp) == ops) { in vfs_opsinuse()
3961 vfsp = vfsp->vfs_next; in vfs_opsinuse()
3962 } while (vfsp != rootvfs); in vfs_opsinuse()
4276 vfsstray_sync(struct vfs *vfsp, short arg, struct cred *cr) in vfsstray_sync() argument
4310 vfs_EIO_sync(struct vfs *vfsp, short arg, struct cred *cr) in vfs_EIO_sync() argument
4414 vfs_t *vfsp; in vfs_alloc() local
4416 vfsp = kmem_cache_alloc(vfs_cache, kmflag); in vfs_alloc()
4422 bzero(vfsp, sizeof (vfs_t)); in vfs_alloc()
4423 return (vfsp); in vfs_alloc()
4427 vfs_free(vfs_t *vfsp) in vfs_free() argument
4442 if (vfsp->vfs_femhead) { in vfs_free()
4443 ASSERT(vfsp->vfs_femhead->femh_list == NULL); in vfs_free()
4444 mutex_destroy(&vfsp->vfs_femhead->femh_lock); in vfs_free()
4445 kmem_free(vfsp->vfs_femhead, sizeof (*(vfsp->vfs_femhead))); in vfs_free()
4446 vfsp->vfs_femhead = NULL; in vfs_free()
4449 if (vfsp->vfs_implp) in vfs_free()
4450 vfsimpl_teardown(vfsp); in vfs_free()
4451 sema_destroy(&vfsp->vfs_reflock); in vfs_free()
4452 kmem_cache_free(vfs_cache, vfsp); in vfs_free()
4459 vfs_hold(vfs_t *vfsp) in vfs_hold() argument
4461 atomic_inc_32(&vfsp->vfs_count); in vfs_hold()
4462 ASSERT(vfsp->vfs_count != 0); in vfs_hold()
4471 vfs_rele(vfs_t *vfsp) in vfs_rele() argument
4473 ASSERT(vfsp->vfs_count != 0); in vfs_rele()
4474 if (atomic_dec_32_nv(&vfsp->vfs_count) == 0) { in vfs_rele()
4475 VFS_FREEVFS(vfsp); in vfs_rele()
4476 lofi_remove(vfsp); in vfs_rele()
4477 if (vfsp->vfs_zone) in vfs_rele()
4478 zone_rele_ref(&vfsp->vfs_implp->vi_zone_ref, in vfs_rele()
4480 vfs_freemnttab(vfsp); in vfs_rele()
4481 vfs_free(vfsp); in vfs_rele()
4626 vfs_root_redev(vfs_t *vfsp, dev_t ndev, int fstype) in vfs_root_redev() argument
4630 vfs_hash_remove(vfsp); in vfs_root_redev()
4632 vfsp->vfs_dev = ndev; in vfs_root_redev()
4633 vfs_make_fsid(&vfsp->vfs_fsid, ndev, fstype); in vfs_root_redev()
4635 vfs_hash_add(vfsp, 1); in vfs_root_redev()
4843 vfs_set_feature(vfs_t *vfsp, vfs_feature_t feature) in vfs_set_feature() argument
4846 if (vfsp->vfs_implp == NULL) in vfs_set_feature()
4849 vfsp->vfs_featureset[VFTINDEX(feature)] |= VFTBITS(feature); in vfs_set_feature()
4853 vfs_clear_feature(vfs_t *vfsp, vfs_feature_t feature) in vfs_clear_feature() argument
4856 if (vfsp->vfs_implp == NULL) in vfs_clear_feature()
4858 vfsp->vfs_featureset[VFTINDEX(feature)] &= VFTBITS(~feature); in vfs_clear_feature()
4866 vfs_has_feature(vfs_t *vfsp, vfs_feature_t feature) in vfs_has_feature() argument
4871 if (vfsp->vfs_implp == NULL) in vfs_has_feature()
4874 if (vfsp->vfs_featureset[VFTINDEX(feature)] & VFTBITS(feature)) in vfs_has_feature()
4904 vfs_get_lofi(vfs_t *vfsp, vnode_t **vpp) in vfs_get_lofi() argument
4910 if (vfsp->vfs_lofi_minor == 0) { in vfs_get_lofi()
4915 strsize = snprintf(NULL, 0, LOFINODE_PATH, vfsp->vfs_lofi_minor); in vfs_get_lofi()
4917 (void) snprintf(path, strsize + 1, LOFINODE_PATH, vfsp->vfs_lofi_minor); in vfs_get_lofi()