Lines Matching refs:vfsp

224 fsop_mount(vfs_t *vfsp, vnode_t *mvp, struct mounta *uap, cred_t *cr)  in fsop_mount()  argument
226 return (*(vfsp)->vfs_op->vfs_mount)(vfsp, mvp, uap, cr); in fsop_mount()
230 fsop_unmount(vfs_t *vfsp, int flag, cred_t *cr) in fsop_unmount() argument
232 return (*(vfsp)->vfs_op->vfs_unmount)(vfsp, flag, cr); in fsop_unmount()
236 fsop_root(vfs_t *vfsp, vnode_t **vpp) in fsop_root() argument
239 int ret = (*(vfsp)->vfs_op->vfs_root)(vfsp, vpp); in fsop_root()
244 if (ret == 0 && vfsp->vfs_mntpt != NULL && in fsop_root()
248 mntpt = vfs_getmntpoint(vfsp); in fsop_root()
258 fsop_statfs(vfs_t *vfsp, statvfs64_t *sp) in fsop_statfs() argument
260 return (*(vfsp)->vfs_op->vfs_statvfs)(vfsp, sp); in fsop_statfs()
264 fsop_sync(vfs_t *vfsp, short flag, cred_t *cr) in fsop_sync() argument
266 return (*(vfsp)->vfs_op->vfs_sync)(vfsp, flag, cr); in fsop_sync()
270 fsop_vget(vfs_t *vfsp, vnode_t **vpp, fid_t *fidp) in fsop_vget() argument
283 if (vfs_has_feature(vfsp, VFSFT_SYSATTR_VIEWS) && in fsop_vget()
285 return (xattr_dir_vget(vfsp, vpp, fidp)); in fsop_vget()
287 return (*(vfsp)->vfs_op->vfs_vget)(vfsp, vpp, fidp); in fsop_vget()
291 fsop_mountroot(vfs_t *vfsp, enum whymountroot reason) in fsop_mountroot() argument
293 return (*(vfsp)->vfs_op->vfs_mountroot)(vfsp, reason); in fsop_mountroot()
297 fsop_freefs(vfs_t *vfsp) in fsop_freefs() argument
299 (*(vfsp)->vfs_op->vfs_freevfs)(vfsp); in fsop_freefs()
303 fsop_vnstate(vfs_t *vfsp, vnode_t *vp, vntrans_t nstate) in fsop_vnstate() argument
305 return ((*(vfsp)->vfs_op->vfs_vnstate)(vfsp, vp, nstate)); in fsop_vnstate()
320 fsop_syncfs(vfs_t *vfsp, uint64_t flags, cred_t *cr) in fsop_syncfs() argument
322 return (*(vfsp)->vfs_op->vfs_syncfs)(vfsp, flags, cr); in fsop_syncfs()
490 vfs_setops(vfs_t *vfsp, vfsops_t *vfsops) in vfs_setops() argument
494 ASSERT(vfsp != NULL); in vfs_setops()
497 op = vfsp->vfs_op; in vfs_setops()
499 if (vfsp->vfs_femhead == NULL && in vfs_setops()
500 atomic_cas_ptr(&vfsp->vfs_op, op, vfsops) == op) { in vfs_setops()
503 fsem_setvfsops(vfsp, vfsops); in vfs_setops()
508 vfs_getops(vfs_t *vfsp) in vfs_getops() argument
512 ASSERT(vfsp != NULL); in vfs_getops()
514 op = vfsp->vfs_op; in vfs_getops()
516 if (vfsp->vfs_femhead == NULL && op == vfsp->vfs_op) { in vfs_getops()
519 return (fsem_getvfsops(vfsp)); in vfs_getops()
528 vfs_matchops(vfs_t *vfsp, vfsops_t *vfsops) in vfs_matchops() argument
530 return (vfs_getops(vfsp) == vfsops); in vfs_matchops()
538 vfs_can_sync(vfs_t *vfsp) in vfs_can_sync() argument
541 return (vfs_getops(vfsp)->vfs_sync != fs_sync); in vfs_can_sync()
548 vfs_init(vfs_t *vfsp, vfsops_t *op, void *data) in vfs_init() argument
551 vfsp->vfs_count = 0; in vfs_init()
552 vfsp->vfs_next = vfsp; in vfs_init()
553 vfsp->vfs_prev = vfsp; in vfs_init()
554 vfsp->vfs_zone_next = vfsp; in vfs_init()
555 vfsp->vfs_zone_prev = vfsp; in vfs_init()
556 vfsp->vfs_lofi_id = 0; in vfs_init()
557 sema_init(&vfsp->vfs_reflock, 1, NULL, SEMA_DEFAULT, NULL); in vfs_init()
558 vfsimpl_setup(vfsp); in vfs_init()
559 vfsp->vfs_data = (data); in vfs_init()
560 vfs_setops((vfsp), (op)); in vfs_init()
568 vfsimpl_setup(vfs_t *vfsp) in vfsimpl_setup() argument
572 if (vfsp->vfs_implp != NULL) { in vfsimpl_setup()
576 vfsp->vfs_implp = kmem_alloc(sizeof (vfs_impl_t), KM_SLEEP); in vfsimpl_setup()
578 vfsp->vfs_vskap = NULL; in vfsimpl_setup()
579 vfsp->vfs_fstypevsp = NULL; in vfsimpl_setup()
582 vfsp->vfs_featureset[0] = VFS_FEATURE_MAXSZ - 1; in vfsimpl_setup()
584 vfsp->vfs_featureset[i] = 0; in vfsimpl_setup()
594 vfsimpl_teardown(vfs_t *vfsp) in vfsimpl_teardown() argument
596 vfs_impl_t *vip = vfsp->vfs_implp; in vfsimpl_teardown()
601 kmem_free(vfsp->vfs_implp, sizeof (vfs_impl_t)); in vfsimpl_teardown()
602 vfsp->vfs_implp = NULL; in vfsimpl_teardown()
817 vfs_t *vfsp; in vfs_mountfs() local
828 if (domount(NULL, &mounta, mvp, CRED(), &vfsp)) in vfs_mountfs()
831 VFS_RELE(vfsp); in vfs_mountfs()
979 lofi_add(const char *fsname, struct vfs *vfsp, in lofi_add() argument
1039 vfsp->vfs_lofi_id = id; in lofi_add()
1053 lofi_remove(struct vfs *vfsp) in lofi_remove() argument
1060 if (vfsp->vfs_lofi_id == 0) in lofi_remove()
1066 li->li_id = vfsp->vfs_lofi_id; in lofi_remove()
1081 vfsp->vfs_lofi_id = 0; in lofi_remove()
1114 struct vfs *vfsp; in domount() local
1461 vfsp = vp->v_vfsp; in domount()
1462 ovflags = vfsp->vfs_flag; in domount()
1463 vfsp->vfs_flag |= VFS_REMOUNT; in domount()
1464 vfsp->vfs_flag &= ~VFS_RDONLY; in domount()
1466 vfsp = vfs_alloc(KM_SLEEP); in domount()
1467 VFS_INIT(vfsp, vfsops, NULL); in domount()
1470 VFS_HOLD(vfsp); in domount()
1472 if ((error = lofi_add(fsname, vfsp, &mnt_mntopts, uap)) != 0) { in domount()
1476 vfs_free(vfsp); in domount()
1479 VFS_RELE(vfsp); in domount()
1487 if (vfsp->vfs_lofi_id != 0) { in domount()
1496 if ((sema_tryp(&vfsp->vfs_reflock) == 0) && in domount()
1497 !(vfsp->vfs_flag & VFS_REMOUNT)) in domount()
1509 if (error = vfs_lock(vfsp)) { in domount()
1510 lofi_remove(vfsp); in domount()
1514 vfs_free(vfsp); in domount()
1518 vfs_lock_wait(vfsp); in domount()
1539 error = vfs_get_lofi(vfsp, &lvp); in domount()
1541 lofi_remove(vfsp); in domount()
1545 vfs_unlock(vfsp); in domount()
1548 VFS_RELE(vfsp); in domount()
1550 vfs_free(vfsp); in domount()
1563 vfs_addmip(bdev, vfsp); in domount()
1633 vfs_swapopttbl(&mnt_mntopts, &vfsp->vfs_mntopts); in domount()
1635 if ((oldresource = vfsp->vfs_resource) != NULL) in domount()
1637 if ((oldmntpt = vfsp->vfs_mntpt) != NULL) in domount()
1640 vfs_setresource(vfsp, resource, 0); in domount()
1641 vfs_setmntpoint(vfsp, mountpt, 0); in domount()
1647 error = VFS_MOUNT(vfsp, vp, uap, credp); in domount()
1650 vfs_setmntopt(vfsp, MNTOPT_RO, NULL, 0); in domount()
1652 vfs_setmntopt(vfsp, MNTOPT_NOSUID, NULL, 0); in domount()
1654 vfs_setmntopt(vfsp, MNTOPT_GLOBAL, NULL, 0); in domount()
1657 lofi_remove(vfsp); in domount()
1661 vfs_swapopttbl(&mnt_mntopts, &vfsp->vfs_mntopts); in domount()
1662 vfs_setmntpoint(vfsp, refstr_value(oldmntpt), in domount()
1666 vfs_setresource(vfsp, refstr_value(oldresource), in domount()
1670 vfsp->vfs_flag = ovflags; in domount()
1671 vfs_unlock(vfsp); in domount()
1672 VFS_RELE(vfsp); in domount()
1674 vfs_unlock(vfsp); in domount()
1675 vfs_freemnttab(vfsp); in domount()
1676 vfs_free(vfsp); in domount()
1682 vfsp->vfs_mtime = ddi_get_time(); in domount()
1684 vfsp->vfs_flag &= ~VFS_REMOUNT; in domount()
1696 vfs_add(vp, vfsp, uap->flags); in domount()
1702 vfsp->vfs_zone = NULL; in domount()
1703 VFS_HOLD(vfsp); in domount()
1704 vfsp->vfs_vnodecovered = NULL; in domount()
1709 if (vfs_optionisset(vfsp, MNTOPT_RO, NULL)) in domount()
1710 vfsp->vfs_flag |= VFS_RDONLY; in domount()
1712 vfsp->vfs_flag &= ~VFS_RDONLY; in domount()
1713 if (vfs_optionisset(vfsp, MNTOPT_NOSUID, NULL)) { in domount()
1714 vfsp->vfs_flag |= (VFS_NOSETUID|VFS_NODEVICES); in domount()
1716 if (vfs_optionisset(vfsp, MNTOPT_NODEVICES, NULL)) in domount()
1717 vfsp->vfs_flag |= VFS_NODEVICES; in domount()
1719 vfsp->vfs_flag &= ~VFS_NODEVICES; in domount()
1720 if (vfs_optionisset(vfsp, MNTOPT_NOSETUID, NULL)) in domount()
1721 vfsp->vfs_flag |= VFS_NOSETUID; in domount()
1723 vfsp->vfs_flag &= ~VFS_NOSETUID; in domount()
1725 if (vfs_optionisset(vfsp, MNTOPT_NBMAND, NULL)) in domount()
1726 vfsp->vfs_flag |= VFS_NBMAND; in domount()
1728 vfsp->vfs_flag &= ~VFS_NBMAND; in domount()
1730 if (vfs_optionisset(vfsp, MNTOPT_XATTR, NULL)) in domount()
1731 vfsp->vfs_flag |= VFS_XATTR; in domount()
1733 vfsp->vfs_flag &= ~VFS_XATTR; in domount()
1735 if (vfs_optionisset(vfsp, MNTOPT_NOEXEC, NULL)) in domount()
1736 vfsp->vfs_flag |= VFS_NOEXEC; in domount()
1738 vfsp->vfs_flag &= ~VFS_NOEXEC; in domount()
1747 &vfsp->vfs_mntopts, inargs, optlen); in domount()
1769 initialize_vopstats(&vfsp->vfs_vopstats); in domount()
1775 vfsp->vfs_vskap = NULL; in domount()
1776 vfsp->vfs_flag |= VFS_STATS; in domount()
1777 vfsp->vfs_fstypevsp = get_fstype_vopstats(vfsp, vswp); in domount()
1781 vfsp->vfs_flag |= VFS_XID; in domount()
1783 vfs_unlock(vfsp); in domount()
1798 vskap = get_vskstat_anchor(vfsp); in domount()
1801 vfs_lock_wait(vfsp); in domount()
1802 if (vfsp->vfs_flag & VFS_STATS) { in domount()
1803 vfsp->vfs_vskap = vskap; in domount()
1805 vfs_unlock(vfsp); in domount()
1809 *vfspp = vfsp; in domount()
1824 vfs_delmip(vfsp); in domount()
1830 lofi_remove(vfsp); in domount()
1831 VFS_RELE(vfsp); in domount()
1839 struct vfs *vfsp, /* vfs being updated */ in vfs_setpath() argument
1850 ASSERT(!VFS_ON_LIST(vfsp) || vfs_lock_held(vfsp)); in vfs_setpath()
1863 if (VFS_ON_LIST(vfsp)) { in vfs_setpath()
1932 vfs_setresource(struct vfs *vfsp, const char *resource, uint32_t flag) in vfs_setresource() argument
1936 vfs_setpath(vfsp, &vfsp->vfs_resource, resource, flag); in vfs_setresource()
1944 vfs_setmntpoint(struct vfs *vfsp, const char *mntpt, uint32_t flag) in vfs_setmntpoint() argument
1948 vfs_setpath(vfsp, &vfsp->vfs_mntpt, mntpt, flag); in vfs_setmntpoint()
1954 vfs_getresource(const struct vfs *vfsp) in vfs_getresource() argument
1959 resource = vfsp->vfs_resource; in vfs_getresource()
1969 vfs_getmntpoint(const struct vfs *vfsp) in vfs_getmntpoint() argument
1974 mntpt = vfsp->vfs_mntpt; in vfs_getmntpoint()
2321 vfs_clearmntopt(struct vfs *vfsp, const char *opt) in vfs_clearmntopt() argument
2325 if (VFS_ON_LIST(vfsp)) { in vfs_clearmntopt()
2329 vfs_clearmntopt_nolock(&vfsp->vfs_mntopts, opt, gotlock); in vfs_clearmntopt()
2407 vfs_setmntopt(struct vfs *vfsp, const char *opt, const char *arg, int flags) in vfs_setmntopt() argument
2411 if (VFS_ON_LIST(vfsp)) { in vfs_setmntopt()
2415 vfs_setmntopt_nolock(&vfsp->vfs_mntopts, opt, arg, flags, gotlock); in vfs_setmntopt()
2458 vfs_t *vfsp; in vfs_settag() local
2470 vfsp = rootvfs; in vfs_settag()
2472 if (vfsp->vfs_dev == dev && in vfs_settag()
2473 strcmp(mntpt, refstr_value(vfsp->vfs_mntpt)) == 0) { in vfs_settag()
2477 vfsp = vfsp->vfs_next; in vfs_settag()
2478 } while (vfsp != rootvfs); in vfs_settag()
2484 err = secpolicy_fs_config(cr, vfsp); in vfs_settag()
2488 mops = &vfsp->vfs_mntopts; in vfs_settag()
2522 vfs_t *vfsp; in vfs_clrtag() local
2532 vfsp = rootvfs; in vfs_clrtag()
2534 if (vfsp->vfs_dev == dev && in vfs_clrtag()
2535 strcmp(mntpt, refstr_value(vfsp->vfs_mntpt)) == 0) { in vfs_clrtag()
2539 vfsp = vfsp->vfs_next; in vfs_clrtag()
2540 } while (vfsp != rootvfs); in vfs_clrtag()
2546 err = secpolicy_fs_config(cr, vfsp); in vfs_clrtag()
2550 if ((mop = vfs_hasopt(&vfsp->vfs_mntopts, tag)) == NULL) { in vfs_clrtag()
2558 vfs_clearmntopt_nolock(&vfsp->vfs_mntopts, tag, 1); in vfs_clrtag()
2673 vfs_optionisset(const struct vfs *vfsp, const char *opt, char **argp) in vfs_optionisset() argument
2678 ret = vfs_optionisset_nolock(&vfsp->vfs_mntopts, opt, argp); in vfs_optionisset()
2921 vfs_freemnttab(struct vfs *vfsp) in vfs_freemnttab() argument
2923 ASSERT(!VFS_ON_LIST(vfsp)); in vfs_freemnttab()
2928 if (vfsp->vfs_mntpt != NULL) { in vfs_freemnttab()
2929 refstr_rele(vfsp->vfs_mntpt); in vfs_freemnttab()
2930 vfsp->vfs_mntpt = NULL; in vfs_freemnttab()
2932 if (vfsp->vfs_resource != NULL) { in vfs_freemnttab()
2933 refstr_rele(vfsp->vfs_resource); in vfs_freemnttab()
2934 vfsp->vfs_resource = NULL; in vfs_freemnttab()
2939 vfs_freeopttbl(&vfsp->vfs_mntopts); in vfs_freemnttab()
3027 dounmount(struct vfs *vfsp, int flag, cred_t *cr) in dounmount() argument
3037 coveredvp = vfsp->vfs_vnodecovered; in dounmount()
3043 (void) dnlc_purge_vfsp(vfsp, 0); in dounmount()
3047 (void) VFS_SYNC(vfsp, 0, cr); in dounmount()
3054 vfs_lock_wait(vfsp); in dounmount()
3056 if (error = VFS_UNMOUNT(vfsp, flag, cr)) { in dounmount()
3057 vfs_unlock(vfsp); in dounmount()
3061 teardown_vopstats(vfsp); in dounmount()
3068 vfs_remove(vfsp); in dounmount()
3072 teardown_vopstats(vfsp); in dounmount()
3077 vfs_unlock(vfsp); in dounmount()
3078 VFS_RELE(vfsp); in dounmount()
3095 struct vfs *vfsp; in vfs_unmountall() local
3107 for (vfsp = rootvfs->vfs_prev; vfsp != rootvfs; vfsp = prev_vfsp) { in vfs_unmountall()
3108 prev_vfsp = vfsp->vfs_prev; in vfs_unmountall()
3110 if (vfs_lock(vfsp) != 0) in vfs_unmountall()
3112 error = vn_vfswlock(vfsp->vfs_vnodecovered); in vfs_unmountall()
3113 vfs_unlock(vfsp); in vfs_unmountall()
3119 (void) VFS_SYNC(vfsp, SYNC_CLOSE, CRED()); in vfs_unmountall()
3120 (void) dounmount(vfsp, 0, CRED()); in vfs_unmountall()
3127 for (vfsp = rootvfs->vfs_prev; in vfs_unmountall()
3128 vfsp != rootvfs; vfsp = vfsp->vfs_prev) in vfs_unmountall()
3129 if (vfsp == prev_vfsp) in vfs_unmountall()
3131 if (vfsp == rootvfs && prev_vfsp != rootvfs) in vfs_unmountall()
3141 vfs_addmip(dev_t dev, struct vfs *vfsp) in vfs_addmip() argument
3148 mipp->mip_vfsp = vfsp; in vfs_addmip()
3163 vfs_delmip(struct vfs *vfsp) in vfs_delmip() argument
3170 mipp && mipp->mip_vfsp != vfsp; mipp = mipp->mip_next) { in vfs_delmip()
3193 vfs_add(vnode_t *coveredvp, struct vfs *vfsp, int mflag) in vfs_add() argument
3197 ASSERT(vfs_lock_held(vfsp)); in vfs_add()
3198 VFS_HOLD(vfsp); in vfs_add()
3199 newflag = vfsp->vfs_flag; in vfs_add()
3215 coveredvp->v_vfsmountedhere = vfsp; in vfs_add()
3218 vfsp->vfs_vnodecovered = coveredvp; in vfs_add()
3219 vfsp->vfs_flag = newflag; in vfs_add()
3221 vfs_list_add(vfsp); in vfs_add()
3234 vfs_remove(struct vfs *vfsp) in vfs_remove() argument
3238 ASSERT(vfs_lock_held(vfsp)); in vfs_remove()
3244 if (vfsp == rootvfs) in vfs_remove()
3247 vfs_list_remove(vfsp); in vfs_remove()
3252 vp = vfsp->vfs_vnodecovered; in vfs_remove()
3255 vfsp->vfs_vnodecovered = NULL; in vfs_remove()
3261 vfs_unlock(vfsp); in vfs_remove()
3262 VFS_RELE(vfsp); in vfs_remove()
3271 vfs_lock(vfs_t *vfsp) in vfs_lock() argument
3275 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_lock()
3284 vfs_rlock(vfs_t *vfsp) in vfs_rlock() argument
3288 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_rlock()
3298 vfs_lock_wait(vfs_t *vfsp) in vfs_lock_wait() argument
3302 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_lock_wait()
3307 vfs_rlock_wait(vfs_t *vfsp) in vfs_rlock_wait() argument
3311 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_rlock_wait()
3319 vfs_unlock(vfs_t *vfsp) in vfs_unlock() argument
3337 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_unlock()
3368 vfs_lock_held(vfs_t *vfsp) in vfs_lock_held() argument
3381 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_lock_held()
3389 vfs_lock_owner(vfs_t *vfsp) in vfs_lock_owner() argument
3402 vpvfsentry = vn_vfslocks_getlock(vfsp); in vfs_lock_owner()
3446 vfs_hash_add(struct vfs *vfsp, int insert_at_head) in vfs_hash_add() argument
3454 dev = expldev(vfsp->vfs_fsid.val[0]); in vfs_hash_add()
3465 vfsp->vfs_hash = rvfs_list[vhno].rvfs_head; in vfs_hash_add()
3466 rvfs_list[vhno].rvfs_head = vfsp; in vfs_hash_add()
3475 vfsp->vfs_hash = NULL; in vfs_hash_add()
3476 *hp = vfsp; in vfs_hash_add()
3485 vfs_hash_remove(struct vfs *vfsp) in vfs_hash_remove() argument
3493 dev = expldev(vfsp->vfs_fsid.val[0]); in vfs_hash_remove()
3501 if (rvfs_list[vhno].rvfs_head == vfsp) { in vfs_hash_remove()
3502 rvfs_list[vhno].rvfs_head = vfsp->vfs_hash; in vfs_hash_remove()
3508 if (tvfsp->vfs_hash == vfsp) { in vfs_hash_remove()
3509 tvfsp->vfs_hash = vfsp->vfs_hash; in vfs_hash_remove()
3523 vfs_list_add(struct vfs *vfsp) in vfs_list_add() argument
3535 if (vfsp->vfs_implp == NULL) in vfs_list_add()
3536 vfsimpl_setup(vfsp); in vfs_list_add()
3537 vfs_mono_time(&vfsp->vfs_hrctime); in vfs_list_add()
3545 vfsp->vfs_zone = curproc->p_zone; in vfs_list_add()
3546 zone_init_ref(&vfsp->vfs_implp->vi_zone_ref); in vfs_list_add()
3547 zone_hold_ref(vfsp->vfs_zone, &vfsp->vfs_implp->vi_zone_ref, in vfs_list_add()
3553 zone = zone_find_by_path(refstr_value(vfsp->vfs_mntpt)); in vfs_list_add()
3573 if (vfsp == &root) { in vfs_list_add()
3578 ASSERT(rootvfs == vfsp); in vfs_list_add()
3584 zone->zone_vfslist = vfsp; in vfs_list_add()
3591 rootvfs->vfs_prev->vfs_next = vfsp; in vfs_list_add()
3592 vfsp->vfs_prev = rootvfs->vfs_prev; in vfs_list_add()
3593 rootvfs->vfs_prev = vfsp; in vfs_list_add()
3594 vfsp->vfs_next = rootvfs; in vfs_list_add()
3601 zone->zone_vfslist = vfsp; in vfs_list_add()
3603 zone->zone_vfslist->vfs_zone_prev->vfs_zone_next = vfsp; in vfs_list_add()
3604 vfsp->vfs_zone_prev = zone->zone_vfslist->vfs_zone_prev; in vfs_list_add()
3605 zone->zone_vfslist->vfs_zone_prev = vfsp; in vfs_list_add()
3606 vfsp->vfs_zone_next = zone->zone_vfslist; in vfs_list_add()
3615 vfs_hash_add(vfsp, 0); in vfs_list_add()
3626 vfs_list_remove(struct vfs *vfsp) in vfs_list_remove() argument
3630 zone = zone_find_by_path(refstr_value(vfsp->vfs_mntpt)); in vfs_list_remove()
3636 ASSERT(vfsp != rootvfs); in vfs_list_remove()
3643 vfs_hash_remove(vfsp); in vfs_list_remove()
3648 vfsp->vfs_prev->vfs_next = vfsp->vfs_next; in vfs_list_remove()
3649 vfsp->vfs_next->vfs_prev = vfsp->vfs_prev; in vfs_list_remove()
3650 vfsp->vfs_next = vfsp->vfs_prev = NULL; in vfs_list_remove()
3655 if (zone->zone_vfslist == vfsp) in vfs_list_remove()
3656 zone->zone_vfslist = vfsp->vfs_zone_next; in vfs_list_remove()
3658 if (vfsp->vfs_zone_next == vfsp) { in vfs_list_remove()
3659 ASSERT(vfsp->vfs_zone_prev == vfsp); in vfs_list_remove()
3660 ASSERT(zone->zone_vfslist == vfsp); in vfs_list_remove()
3664 vfsp->vfs_zone_prev->vfs_zone_next = vfsp->vfs_zone_next; in vfs_list_remove()
3665 vfsp->vfs_zone_next->vfs_zone_prev = vfsp->vfs_zone_prev; in vfs_list_remove()
3666 vfsp->vfs_zone_next = vfsp->vfs_zone_prev = NULL; in vfs_list_remove()
3679 struct vfs *vfsp; in getvfs() local
3687 for (vfsp = rvfs_list[vhno].rvfs_head; vfsp; vfsp = vfsp->vfs_hash) { in getvfs()
3688 if (vfsp->vfs_fsid.val[0] == val0 && in getvfs()
3689 vfsp->vfs_fsid.val[1] == val1) { in getvfs()
3690 VFS_HOLD(vfsp); in getvfs()
3692 return (vfsp); in getvfs()
3708 vfs_devmounting(dev_t dev, struct vfs *vfsp) in vfs_devmounting() argument
3716 if (mipp->mip_vfsp != vfsp) in vfs_devmounting()
3733 struct vfs *vfsp; in vfs_devismounted() local
3737 vfsp = rootvfs; in vfs_devismounted()
3740 if (vfsp->vfs_dev == dev) { in vfs_devismounted()
3744 vfsp = vfsp->vfs_next; in vfs_devismounted()
3745 } while (vfsp != rootvfs); in vfs_devismounted()
3759 struct vfs *vfsp; in vfs_dev2vfsp() local
3763 vfsp = rootvfs; in vfs_dev2vfsp()
3773 if (vfsp->vfs_dev == dev && in vfs_dev2vfsp()
3774 ZONE_PATH_VISIBLE(refstr_value(vfsp->vfs_mntpt), in vfs_dev2vfsp()
3776 VFS_HOLD(vfsp); in vfs_dev2vfsp()
3780 vfsp = vfsp->vfs_next; in vfs_dev2vfsp()
3781 } while (vfsp != rootvfs); in vfs_dev2vfsp()
3783 return (found ? vfsp: NULL); in vfs_dev2vfsp()
3800 struct vfs *vfsp; in vfs_mntpoint2vfsp() local
3810 vfsp = rootvfs->vfs_prev; in vfs_mntpoint2vfsp()
3812 if (strcmp(refstr_value(vfsp->vfs_mntpt), mp) == 0) { in vfs_mntpoint2vfsp()
3813 retvfsp = vfsp; in vfs_mntpoint2vfsp()
3816 vfsp = vfsp->vfs_prev; in vfs_mntpoint2vfsp()
3817 } while (vfsp != rootvfs->vfs_prev); in vfs_mntpoint2vfsp()
3821 vfsp = list->vfs_zone_prev; in vfs_mntpoint2vfsp()
3823 mntpt = refstr_value(vfsp->vfs_mntpt); in vfs_mntpoint2vfsp()
3826 retvfsp = vfsp; in vfs_mntpoint2vfsp()
3829 vfsp = vfsp->vfs_zone_prev; in vfs_mntpoint2vfsp()
3830 } while (vfsp != list->vfs_zone_prev); in vfs_mntpoint2vfsp()
3845 struct vfs *vfsp; in vfs_opsinuse() local
3849 vfsp = rootvfs; in vfs_opsinuse()
3852 if (vfs_getops(vfsp) == ops) { in vfs_opsinuse()
3856 vfsp = vfsp->vfs_next; in vfs_opsinuse()
3857 } while (vfsp != rootvfs); in vfs_opsinuse()
4137 vfsstray_sync(struct vfs *vfsp, short arg, struct cred *cr) in vfsstray_sync() argument
4171 vfs_EIO_sync(struct vfs *vfsp, short arg, struct cred *cr) in vfs_EIO_sync() argument
4277 vfs_t *vfsp; in vfs_alloc() local
4279 vfsp = kmem_cache_alloc(vfs_cache, kmflag); in vfs_alloc()
4285 bzero(vfsp, sizeof (vfs_t)); in vfs_alloc()
4286 return (vfsp); in vfs_alloc()
4290 vfs_free(vfs_t *vfsp) in vfs_free() argument
4305 if (vfsp->vfs_femhead) { in vfs_free()
4306 ASSERT(vfsp->vfs_femhead->femh_list == NULL); in vfs_free()
4307 mutex_destroy(&vfsp->vfs_femhead->femh_lock); in vfs_free()
4308 kmem_free(vfsp->vfs_femhead, sizeof (*(vfsp->vfs_femhead))); in vfs_free()
4309 vfsp->vfs_femhead = NULL; in vfs_free()
4312 if (vfsp->vfs_implp) in vfs_free()
4313 vfsimpl_teardown(vfsp); in vfs_free()
4314 sema_destroy(&vfsp->vfs_reflock); in vfs_free()
4315 kmem_cache_free(vfs_cache, vfsp); in vfs_free()
4322 vfs_hold(vfs_t *vfsp) in vfs_hold() argument
4324 atomic_inc_32(&vfsp->vfs_count); in vfs_hold()
4325 ASSERT(vfsp->vfs_count != 0); in vfs_hold()
4334 vfs_rele(vfs_t *vfsp) in vfs_rele() argument
4336 ASSERT(vfsp->vfs_count != 0); in vfs_rele()
4337 if (atomic_dec_32_nv(&vfsp->vfs_count) == 0) { in vfs_rele()
4338 VFS_FREEVFS(vfsp); in vfs_rele()
4339 lofi_remove(vfsp); in vfs_rele()
4340 if (vfsp->vfs_zone) in vfs_rele()
4341 zone_rele_ref(&vfsp->vfs_implp->vi_zone_ref, in vfs_rele()
4343 vfs_freemnttab(vfsp); in vfs_rele()
4344 vfs_free(vfsp); in vfs_rele()
4489 vfs_root_redev(vfs_t *vfsp, dev_t ndev, int fstype) in vfs_root_redev() argument
4493 vfs_hash_remove(vfsp); in vfs_root_redev()
4495 vfsp->vfs_dev = ndev; in vfs_root_redev()
4496 vfs_make_fsid(&vfsp->vfs_fsid, ndev, fstype); in vfs_root_redev()
4498 vfs_hash_add(vfsp, 1); in vfs_root_redev()
4701 vfs_set_feature(vfs_t *vfsp, vfs_feature_t feature) in vfs_set_feature() argument
4704 if (vfsp->vfs_implp == NULL) in vfs_set_feature()
4707 vfsp->vfs_featureset[VFTINDEX(feature)] |= VFTBITS(feature); in vfs_set_feature()
4711 vfs_clear_feature(vfs_t *vfsp, vfs_feature_t feature) in vfs_clear_feature() argument
4714 if (vfsp->vfs_implp == NULL) in vfs_clear_feature()
4716 vfsp->vfs_featureset[VFTINDEX(feature)] &= VFTBITS(~feature); in vfs_clear_feature()
4724 vfs_has_feature(vfs_t *vfsp, vfs_feature_t feature) in vfs_has_feature() argument
4729 if (vfsp->vfs_implp == NULL) in vfs_has_feature()
4732 if (vfsp->vfs_featureset[VFTINDEX(feature)] & VFTBITS(feature)) in vfs_has_feature()
4762 vfs_get_lofi(vfs_t *vfsp, vnode_t **vpp) in vfs_get_lofi() argument
4768 if (vfsp->vfs_lofi_id == 0) { in vfs_get_lofi()
4773 strsize = snprintf(NULL, 0, LOFINODE_PATH, vfsp->vfs_lofi_id); in vfs_get_lofi()
4775 (void) snprintf(path, strsize + 1, LOFINODE_PATH, vfsp->vfs_lofi_id); in vfs_get_lofi()