Lines Matching refs:mi

704 	mntinfo4_t *mi;			/* mount info, pointed at by vfs */  in nfs4_mount()  local
759 if ((mi = VFTOMI4(vfsp)) != NULL) { in nfs4_mount()
763 old_mi_llock = (mi->mi_flags & MI4_LLOCK) ? 1 : 0; in nfs4_mount()
807 mi = NULL; in nfs4_mount()
1136 mi = VTOMI4(rtvp); in nfs4_mount()
1142 nfs4setclientid(mi, cr, FALSE, &n4e); in nfs4_mount()
1154 mutex_enter(&mi->mi_lock); in nfs4_mount()
1155 mi->mi_flags |= MI4_LLOCK; in nfs4_mount()
1156 mutex_exit(&mi->mi_lock); in nfs4_mount()
1166 error = nfs4_record_ephemeral_mount(mi, mvp); in nfs4_mount()
1175 if (mi != NULL) { in nfs4_mount()
1178 nfs4_remove_mi_from_server(mi, NULL); in nfs4_mount()
1184 removed = nfs4_mi_zonelist_remove(mi); in nfs4_mount()
1186 zone_rele_ref(&mi->mi_zone_ref, in nfs4_mount()
1188 MI4_RELE(mi); in nfs4_mount()
1232 getlinktext_otw(mntinfo4_t *mi, nfs_fh4 *fh, char **linktextp, cred_t *cr, in getlinktext_otw() argument
1249 sfh = sfh4_get(fh, mi); in getlinktext_otw()
1261 e.error = nfs4_start_op(mi, NULL, NULL, &recov_state); in getlinktext_otw()
1277 rfs4call(mi, &args, &res, cr, &doqueue, 0, &e); in getlinktext_otw()
1279 needrecov = nfs4_needs_recovery(&e, FALSE, mi->mi_vfsp); in getlinktext_otw()
1286 if (nfs4_start_recovery(&e, mi, NULL, NULL, NULL, NULL, in getlinktext_otw()
1288 nfs4_end_op(mi, NULL, NULL, &recov_state, needrecov); in getlinktext_otw()
1300 nfs4_end_op(mi, NULL, NULL, &recov_state, needrecov); in getlinktext_otw()
1309 nfs4_end_op(mi, NULL, NULL, &recov_state, needrecov); in getlinktext_otw()
1324 nfs4_end_op(mi, NULL, NULL, &recov_state, needrecov); in getlinktext_otw()
1360 resolve_sympath(mntinfo4_t *mi, servinfo4_t *svp, int nth, nfs_fh4 *fh, in resolve_sympath() argument
1371 error = getlinktext_otw(mi, fh, &symlink, cr, flags); in resolve_sympath()
1613 resolve_referral(mntinfo4_t *mi, servinfo4_t *svp, cred_t *cr, int nth, in resolve_referral() argument
1635 sfh = sfh4_get(fh, mi); in resolve_referral()
1636 index = nfs4_process_referral(mi, sfh, nm, cr, in resolve_referral()
1650 mutex_enter(&mi->mi_lock); in resolve_referral()
1651 mi->mi_vfs_referral_loop_cnt++; in resolve_referral()
1652 mutex_exit(&mi->mi_lock); in resolve_referral()
1675 nfs4getfh_otw(struct mntinfo4 *mi, servinfo4_t *svp, vtype_t *vtp, in nfs4getfh_otw() argument
1707 if (mi->mi_vfs_referral_loop_cnt >= NFS4_REFERRAL_LOOP_MAX) { in nfs4getfh_otw()
1709 mi, servinfo4_t *, svp, char *, "nfs4getfh_otw"); in nfs4getfh_otw()
1716 ep->error = nfs4_start_fop(mi, NULL, NULL, OH_MOUNT, in nfs4getfh_otw()
1727 mutex_enter(&mi->mi_lock); in nfs4getfh_otw()
1728 if (mi->mi_flags & MI4_MOUNTING) { in nfs4getfh_otw()
1729 mi->mi_flags |= MI4_RECOV_FAIL; in nfs4getfh_otw()
1730 mi->mi_error = EIO; in nfs4getfh_otw()
1735 while (mi->mi_flags & MI4_RECOV_ACTIV) in nfs4getfh_otw()
1736 cv_wait(&mi->mi_failover_cv, in nfs4getfh_otw()
1737 &mi->mi_lock); in nfs4getfh_otw()
1739 mutex_exit(&mi->mi_lock); in nfs4getfh_otw()
1754 (void) nfs4_secinfo_path(mi, cr, FALSE); in nfs4getfh_otw()
1769 lookuparg.mi = mi; in nfs4getfh_otw()
1790 needrecov ? "recov" : "first", (void *)mi)); in nfs4getfh_otw()
1792 rfs4call(mi, &args, &res, cr, &doqueue, RFSCALL_SOFT, ep); in nfs4getfh_otw()
1794 needrecov = nfs4_needs_recovery(ep, FALSE, mi->mi_vfsp); in nfs4getfh_otw()
1811 abort = nfs4_start_recovery(ep, mi, NULL, in nfs4getfh_otw()
1819 nfs4_end_fop(mi, NULL, NULL, OH_MOUNT, &recov_state, needrecov); in nfs4getfh_otw()
1833 nfs4_end_fop(mi, NULL, NULL, OH_MOUNT, &recov_state, in nfs4getfh_otw()
1844 nfs4_end_fop(mi, NULL, NULL, OH_MOUNT, &recov_state, in nfs4getfh_otw()
1865 nfs4_end_fop(mi, NULL, NULL, OH_MOUNT, &recov_state, in nfs4getfh_otw()
1889 ep->error = resolve_sympath(mi, svp, nthcomp, in nfs4getfh_otw()
1898 ep->error = resolve_referral(mi, svp, cr, nthcomp, in nfs4getfh_otw()
1923 mi->mi_fh_expire_type = garp->n4g_ext_res->n4g_fet; in nfs4getfh_otw()
1925 mutex_enter(&mi->mi_lock); in nfs4getfh_otw()
1927 mi->mi_flags |= MI4_LINK; in nfs4getfh_otw()
1929 mi->mi_flags |= MI4_SYMLINK; in nfs4getfh_otw()
1931 mi->mi_flags |= MI4_ACL; in nfs4getfh_otw()
1932 mutex_exit(&mi->mi_lock); in nfs4getfh_otw()
1935 mi->mi_tsize = in nfs4getfh_otw()
1936 MIN(MAXBSIZE, mi->mi_tsize); in nfs4getfh_otw()
1938 mi->mi_tsize = in nfs4getfh_otw()
1940 mi->mi_tsize); in nfs4getfh_otw()
1943 mi->mi_stsize = in nfs4getfh_otw()
1944 MIN(MAXBSIZE, mi->mi_stsize); in nfs4getfh_otw()
1946 mi->mi_stsize = in nfs4getfh_otw()
1948 mi->mi_stsize); in nfs4getfh_otw()
1951 mi->mi_maxfilesize = in nfs4getfh_otw()
1953 mi->mi_maxfilesize); in nfs4getfh_otw()
1979 nfs4_end_fop(mi, NULL, NULL, OH_MOUNT, &recov_state, in nfs4getfh_otw()
1982 ep->error = resolve_sympath(mi, svp, nthcomp, resfhp, cr, in nfs4getfh_otw()
2038 nfs4_end_fop(mi, NULL, NULL, OH_MOUNT, &recov_state, needrecov); in nfs4getfh_otw()
2123 restore_svp(mntinfo4_t *mi, servinfo4_t *svp, servinfo4_t *origsvp) in restore_svp() argument
2139 mutex_enter(&mi->mi_lock); in restore_svp()
2140 mi->mi_servers = svp; in restore_svp()
2141 mi->mi_curr_serv = svp; in restore_svp()
2142 mutex_exit(&mi->mi_lock); in restore_svp()
2174 nfs4_remap_root(mntinfo4_t *mi, nfs4_error_t *ep, int flags) in nfs4_remap_root() argument
2182 mutex_enter(&mi->mi_lock); in nfs4_remap_root()
2185 svp = mi->mi_curr_serv; in nfs4_remap_root()
2189 (mi->mi_flags & MI4_PUBLIC) ? NFS4_GETFH_PUBLIC : 0; in nfs4_remap_root()
2190 mutex_exit(&mi->mi_lock); in nfs4_remap_root()
2218 nfs4getfh_otw(mi, svp, &vtype, getfh_flags, CRED(), ep); in nfs4_remap_root()
2227 svp = restore_svp(mi, svp, origsvp); in nfs4_remap_root()
2237 if (vtype != VNON && vtype != mi->mi_type) { in nfs4_remap_root()
2239 zcmn_err(mi->mi_zone->zone_id, CE_WARN, in nfs4_remap_root()
2241 "match mount info (%d)", vtype, mi->mi_type); in nfs4_remap_root()
2248 sfh4_update(mi->mi_rootfh, &rootfh); in nfs4_remap_root()
2256 mutex_enter(&mi->mi_lock); in nfs4_remap_root()
2257 if (mi->mi_curr_serv != svp) in nfs4_remap_root()
2260 mutex_exit(&mi->mi_lock); in nfs4_remap_root()
2268 mntinfo4_t *mi; in nfs4rootvp() local
2297 mi = kmem_zalloc(sizeof (*mi), KM_SLEEP); in nfs4rootvp()
2298 mutex_init(&mi->mi_lock, NULL, MUTEX_DEFAULT, NULL); in nfs4rootvp()
2299 nfs_rw_init(&mi->mi_recovlock, NULL, RW_DEFAULT, NULL); in nfs4rootvp()
2300 nfs_rw_init(&mi->mi_rename_lock, NULL, RW_DEFAULT, NULL); in nfs4rootvp()
2301 nfs_rw_init(&mi->mi_fh_lock, NULL, RW_DEFAULT, NULL); in nfs4rootvp()
2304 mi->mi_flags |= MI4_HARD; in nfs4rootvp()
2306 mi->mi_flags |= MI4_NOPRINT; in nfs4rootvp()
2308 mi->mi_flags |= MI4_INT; in nfs4rootvp()
2310 mi->mi_flags |= MI4_PUBLIC; in nfs4rootvp()
2312 mi->mi_flags |= MI4_MIRRORMOUNT; in nfs4rootvp()
2314 mi->mi_flags |= MI4_REFERRAL; in nfs4rootvp()
2315 mi->mi_retrans = NFS_RETRIES; in nfs4rootvp()
2318 mi->mi_timeo = nfs4_cots_timeo; in nfs4rootvp()
2320 mi->mi_timeo = NFS_TIMEO; in nfs4rootvp()
2321 mi->mi_prog = NFS_PROGRAM; in nfs4rootvp()
2322 mi->mi_vers = NFS_V4; in nfs4rootvp()
2323 mi->mi_rfsnames = rfsnames_v4; in nfs4rootvp()
2324 mi->mi_reqs = nfsstatsp->nfs_stats_v4.rfsreqcnt_ptr; in nfs4rootvp()
2325 cv_init(&mi->mi_failover_cv, NULL, CV_DEFAULT, NULL); in nfs4rootvp()
2326 mi->mi_servers = svp; in nfs4rootvp()
2327 mi->mi_curr_serv = svp; in nfs4rootvp()
2328 mi->mi_acregmin = SEC2HR(ACREGMIN); in nfs4rootvp()
2329 mi->mi_acregmax = SEC2HR(ACREGMAX); in nfs4rootvp()
2330 mi->mi_acdirmin = SEC2HR(ACDIRMIN); in nfs4rootvp()
2331 mi->mi_acdirmax = SEC2HR(ACDIRMAX); in nfs4rootvp()
2332 mi->mi_fh_expire_type = FH4_PERSISTENT; in nfs4rootvp()
2333 mi->mi_clientid_next = NULL; in nfs4rootvp()
2334 mi->mi_clientid_prev = NULL; in nfs4rootvp()
2335 mi->mi_srv = NULL; in nfs4rootvp()
2336 mi->mi_grace_wait = 0; in nfs4rootvp()
2337 mi->mi_error = 0; in nfs4rootvp()
2338 mi->mi_srvsettime = 0; in nfs4rootvp()
2339 mi->mi_srvset_cnt = 0; in nfs4rootvp()
2341 mi->mi_count = 1; in nfs4rootvp()
2343 mi->mi_tsize = nfs4_tsize(svp->sv_knconf); in nfs4rootvp()
2344 mi->mi_stsize = mi->mi_tsize; in nfs4rootvp()
2347 mi->mi_flags |= MI4_DIRECTIO; in nfs4rootvp()
2349 mi->mi_flags |= MI4_MOUNTING; in nfs4rootvp()
2351 mutex_init(&mi->mi_rnodes_lock, NULL, MUTEX_DEFAULT, NULL); in nfs4rootvp()
2352 list_create(&mi->mi_rnodes, sizeof (rnode4_t), in nfs4rootvp()
2370 vfsp->vfs_data = (caddr_t)mi; in nfs4rootvp()
2378 mi->mi_async_clusters[i] = nfs4_async_clusters; in nfs4rootvp()
2379 mi->mi_async_init_clusters = nfs4_async_clusters; in nfs4rootvp()
2380 mi->mi_async_curr[NFS4_ASYNC_QUEUE] = in nfs4rootvp()
2381 mi->mi_async_curr[NFS4_ASYNC_PGOPS_QUEUE] = &mi->mi_async_reqs[0]; in nfs4rootvp()
2382 mi->mi_max_threads = nfs4_max_threads; in nfs4rootvp()
2383 mutex_init(&mi->mi_async_lock, NULL, MUTEX_DEFAULT, NULL); in nfs4rootvp()
2384 cv_init(&mi->mi_async_reqs_cv, NULL, CV_DEFAULT, NULL); in nfs4rootvp()
2385 cv_init(&mi->mi_async_work_cv[NFS4_ASYNC_QUEUE], NULL, CV_DEFAULT, in nfs4rootvp()
2387 cv_init(&mi->mi_async_work_cv[NFS4_ASYNC_PGOPS_QUEUE], NULL, in nfs4rootvp()
2389 cv_init(&mi->mi_async_cv, NULL, CV_DEFAULT, NULL); in nfs4rootvp()
2390 cv_init(&mi->mi_inact_req_cv, NULL, CV_DEFAULT, NULL); in nfs4rootvp()
2392 mi->mi_vfsp = vfsp; in nfs4rootvp()
2393 mi->mi_zone = zone; in nfs4rootvp()
2394 zone_init_ref(&mi->mi_zone_ref); in nfs4rootvp()
2395 zone_hold_ref(zone, &mi->mi_zone_ref, ZONE_REF_NFSV4); in nfs4rootvp()
2396 nfs4_mi_zonelist_add(mi); in nfs4rootvp()
2402 bucketp = &(mi->mi_oo_list[i]); in nfs4rootvp()
2412 mi->mi_foo_num = 0; in nfs4rootvp()
2413 mi->mi_foo_max = NFS4_NUM_FREED_OPEN_OWNERS; in nfs4rootvp()
2414 list_create(&mi->mi_foo_list, sizeof (nfs4_open_owner_t), in nfs4rootvp()
2417 list_create(&mi->mi_lost_state, sizeof (nfs4_lost_rqst_t), in nfs4rootvp()
2420 list_create(&mi->mi_bseqid_list, sizeof (nfs4_bseqid_entry_t), in nfs4rootvp()
2426 list_create(&mi->mi_msg_list, sizeof (nfs4_debug_msg_t), in nfs4rootvp()
2428 mi->mi_msg_count = 0; in nfs4rootvp()
2429 mutex_init(&mi->mi_msg_list_lock, NULL, MUTEX_DEFAULT, NULL); in nfs4rootvp()
2439 sfh4_createtab(&mi->mi_filehandles); in nfs4rootvp()
2476 mi->mi_curr_serv = svp; in nfs4rootvp()
2497 nfs4getfh_otw(mi, svp, &tmp_vtype, in nfs4rootvp()
2508 svp = restore_svp(mi, svp, origsvp); in nfs4rootvp()
2520 mi->mi_flags &= ~MI4_RECOV_FAIL; in nfs4rootvp()
2521 mi->mi_error = 0; in nfs4rootvp()
2526 zcmn_err(mi->mi_zone->zone_id, CE_WARN, in nfs4rootvp()
2538 zcmn_err(mi->mi_zone->zone_id, CE_WARN, in nfs4rootvp()
2556 mi->mi_curr_serv = svp = firstsvp; in nfs4rootvp()
2558 ASSERT((mi->mi_curr_serv->sv_flags & SV4_NOTINUSE) == 0); in nfs4rootvp()
2561 mi->mi_rootfh = sfh4_get(&fh, mi); in nfs4rootvp()
2564 mi->mi_srvparentfh = sfh4_get(&fh, mi); in nfs4rootvp()
2570 mi->mi_fname = fn_get(NULL, ".", mi->mi_rootfh); in nfs4rootvp()
2571 mfname = mi->mi_fname; in nfs4rootvp()
2577 rtvp = makenfs4node_by_fh(mi->mi_rootfh, NULL, in nfs4rootvp()
2578 &mfname, NULL, mi, cr, gethrtime()); in nfs4rootvp()
2581 mi->mi_curread = mi->mi_tsize; in nfs4rootvp()
2582 mi->mi_curwrite = mi->mi_stsize; in nfs4rootvp()
2588 MI4_HOLD(mi); in nfs4rootvp()
2590 mi->mi_manager_thread = zthread_create(NULL, 0, nfs4_async_manager, in nfs4rootvp()
2592 ASSERT(mi->mi_manager_thread != NULL); in nfs4rootvp()
2599 MI4_HOLD(mi); in nfs4rootvp()
2600 mi->mi_inactive_thread = zthread_create(NULL, 0, nfs4_inactive_thread, in nfs4rootvp()
2601 mi, 0, minclsyspri); in nfs4rootvp()
2602 ASSERT(mi->mi_inactive_thread != NULL); in nfs4rootvp()
2613 mi->mi_type = rtvp->v_type; in nfs4rootvp()
2615 mutex_enter(&mi->mi_lock); in nfs4rootvp()
2616 mi->mi_flags &= ~MI4_MOUNTING; in nfs4rootvp()
2617 mutex_exit(&mi->mi_lock); in nfs4rootvp()
2656 removed = nfs4_mi_zonelist_remove(mi); in nfs4rootvp()
2658 zone_rele_ref(&mi->mi_zone_ref, ZONE_REF_NFSV4); in nfs4rootvp()
2665 MI4_RELE(mi); in nfs4rootvp()
2680 mntinfo4_t *mi; in nfs4_unmount() local
2691 mi = VFTOMI4(vfsp); in nfs4_unmount()
2695 if (nfs_zone() != mi->mi_zone) { in nfs4_unmount()
2723 omax = mi->mi_max_threads; in nfs4_unmount()
2735 if (nfs4_ephemeral_umount(mi, flag, cr, in nfs4_unmount()
2738 mutex_enter(&mi->mi_async_lock); in nfs4_unmount()
2739 mi->mi_max_threads = omax; in nfs4_unmount()
2740 mutex_exit(&mi->mi_async_lock); in nfs4_unmount()
2752 mutex_enter(&mi->mi_async_lock); in nfs4_unmount()
2753 mi->mi_max_threads = omax; in nfs4_unmount()
2754 mutex_exit(&mi->mi_async_lock); in nfs4_unmount()
2763 nfs4_ephemeral_umount_activate(mi, &must_unlock, &eph_tree); in nfs4_unmount()
2780 nfs4_remove_mi_from_server(mi, NULL); in nfs4_unmount()
2781 removed = nfs4_mi_zonelist_remove(mi); in nfs4_unmount()
2783 zone_rele_ref(&mi->mi_zone_ref, ZONE_REF_NFSV4); in nfs4_unmount()
2794 mntinfo4_t *mi; in nfs4_root() local
2799 mi = VFTOMI4(vfsp); in nfs4_root()
2801 if (nfs_zone() != mi->mi_zone) in nfs4_root()
2804 svp = mi->mi_curr_serv; in nfs4_root()
2821 mfname = mi->mi_fname; in nfs4_root()
2823 vp = makenfs4node_by_fh(mi->mi_rootfh, NULL, &mfname, NULL, in nfs4_root()
2831 ASSERT(vp->v_type == VNON || vp->v_type == mi->mi_type); in nfs4_root()
2833 vp->v_type = mi->mi_type; in nfs4_root()
2916 mntinfo4_t *mi; in nfs4_sync() local
2918 mi = VFTOMI4(vfsp); in nfs4_sync()
2919 if (!(mi->mi_flags & MI4_SHUTDOWN)) { in nfs4_sync()
2920 mutex_enter(&mi->mi_lock); in nfs4_sync()
2921 mi->mi_flags |= MI4_SHUTDOWN; in nfs4_sync()
2922 mutex_exit(&mi->mi_lock); in nfs4_sync()
2964 mntinfo4_t *mi; in nfs4_mountroot() local
3060 mi = VTOMI4(rtvp); in nfs4_mountroot()
3066 nfs4setclientid(mi, cr, FALSE, &n4e); in nfs4_mountroot()
3131 mntinfo4_t *mi; in nfs4_freevfs() local
3134 mi = VFTOMI4(vfsp); in nfs4_freevfs()
3141 mi->mi_vfsp = NULL; in nfs4_freevfs()
3143 MI4_RELE(mi); in nfs4_freevfs()
3182 nfs4setclientid(mntinfo4_t *mi, cred_t *cr, bool_t recovery, nfs4_error_t *n4ep) in nfs4setclientid() argument
3185 struct servinfo4 *svp = mi->mi_curr_serv; in nfs4setclientid()
3201 (void) nfs_rw_enter_sig(&mi->mi_recovlock, RW_READER, 0); in nfs4setclientid()
3238 nfs4_add_mi_to_server(np, mi); in nfs4setclientid()
3240 nfs_rw_exit(&mi->mi_recovlock); in nfs4setclientid()
3253 nfs_rw_exit(&mi->mi_recovlock); in nfs4setclientid()
3255 n4ep->error = nfs4_start_op(mi, NULL, NULL, &recov_state); in nfs4setclientid()
3268 nfs4_end_op(mi, NULL, NULL, &recov_state, in nfs4setclientid()
3278 nfs4_add_mi_to_server(np, mi); in nfs4setclientid()
3282 nfs4_end_op(mi, NULL, NULL, &recov_state, recovery); in nfs4setclientid()
3295 nfs4setclientid_otw(mi, svp, cr, np, n4ep, &retry_inuse); in nfs4setclientid()
3315 nfs4setclientid_otw(mi, svp, lcr, np, n4ep, in nfs4setclientid()
3334 if (FAILOVER_MOUNT4(mi) && nfs4_try_failover(n4ep)) { in nfs4setclientid()
3335 (void) nfs4_start_recovery(n4ep, mi, NULL, in nfs4setclientid()
3378 nfs4_end_op(mi, NULL, NULL, &recov_state, recovery); in nfs4setclientid()
3409 nfs4setclientid_otw(mntinfo4_t *mi, struct servinfo4 *svp, cred_t *cr, in nfs4setclientid_otw() argument
3436 argop[1].nfs_argop4_u.opgetattr.mi = mi; in nfs4setclientid_otw()
3462 rfs4call(mi, &args, &res, cr, &doqueue, 0, ep); in nfs4setclientid_otw()
3498 mutex_enter(&mi->mi_msg_list_lock); in nfs4setclientid_otw()
3499 mi->mi_lease_period = np->s_lease_time; in nfs4setclientid_otw()
3500 mutex_exit(&mi->mi_msg_list_lock); in nfs4setclientid_otw()
3512 zcmn_err(mi->mi_zone->zone_id, CE_NOTE, in nfs4setclientid_otw()
3549 zcmn_err(mi->mi_zone->zone_id, CE_NOTE, in nfs4setclientid_otw()
3576 rfs4call(mi, &args, &res, cr, &doqueue, 0, ep); in nfs4setclientid_otw()
3601 zcmn_err(mi->mi_zone->zone_id, CE_NOTE, in nfs4setclientid_otw()
3622 nfs4_add_mi_to_server(np, mi); in nfs4setclientid_otw()
3645 nfs4_add_mi_to_server(nfs4_server_t *sp, mntinfo4_t *mi) in nfs4_add_mi_to_server() argument
3650 ASSERT(nfs_rw_lock_held(&mi->mi_recovlock, RW_READER) || in nfs4_add_mi_to_server()
3651 nfs_rw_lock_held(&mi->mi_recovlock, RW_WRITER)); in nfs4_add_mi_to_server()
3657 (void*)mi, (void*)sp)); in nfs4_add_mi_to_server()
3662 if (tmi == mi) { in nfs4_add_mi_to_server()
3675 VFS_HOLD(mi->mi_vfsp); in nfs4_add_mi_to_server()
3678 "hold vfs %p for mi: %p", (void*)mi->mi_vfsp, (void*)mi)); in nfs4_add_mi_to_server()
3682 sp->mntinfo4_list->mi_clientid_prev = mi; in nfs4_add_mi_to_server()
3683 mi->mi_clientid_next = sp->mntinfo4_list; in nfs4_add_mi_to_server()
3684 mi->mi_srv = sp; in nfs4_add_mi_to_server()
3685 sp->mntinfo4_list = mi; in nfs4_add_mi_to_server()
3686 mi->mi_srvsettime = gethrestime_sec(); in nfs4_add_mi_to_server()
3687 mi->mi_srvset_cnt++; in nfs4_add_mi_to_server()
3691 mi->mi_clientid = sp->clientid; in nfs4_add_mi_to_server()
3702 if (tmi != mi) { in nfs4_add_mi_to_server()
3717 nfs4_remove_mi_from_server_nolock(mntinfo4_t *mi, nfs4_server_t *sp) in nfs4_remove_mi_from_server_nolock() argument
3721 (void*)mi, (void*)sp)); in nfs4_remove_mi_from_server_nolock()
3725 ASSERT(mi->mi_open_files >= 0); in nfs4_remove_mi_from_server_nolock()
3731 if (mi->mi_open_files > 0) { in nfs4_remove_mi_from_server_nolock()
3736 mutex_enter(&mi->mi_lock); in nfs4_remove_mi_from_server_nolock()
3737 mi->mi_flags |= MI4_REMOVE_ON_LAST_CLOSE; in nfs4_remove_mi_from_server_nolock()
3738 mutex_exit(&mi->mi_lock); in nfs4_remove_mi_from_server_nolock()
3742 VFS_HOLD(mi->mi_vfsp); in nfs4_remove_mi_from_server_nolock()
3743 remove_mi(sp, mi); in nfs4_remove_mi_from_server_nolock()
3744 VFS_RELE(mi->mi_vfsp); in nfs4_remove_mi_from_server_nolock()
3758 remove_mi(nfs4_server_t *sp, mntinfo4_t *mi) in remove_mi() argument
3766 ASSERT(mi->mi_vfsp->vfs_count >= 2); in remove_mi()
3768 if (mi->mi_clientid_prev) { in remove_mi()
3769 mi->mi_clientid_prev->mi_clientid_next = mi->mi_clientid_next; in remove_mi()
3776 ASSERT(sp->mntinfo4_list == mi); in remove_mi()
3778 sp->mntinfo4_list = mi->mi_clientid_next; in remove_mi()
3780 if (mi->mi_clientid_next) in remove_mi()
3781 mi->mi_clientid_next->mi_clientid_prev = mi->mi_clientid_prev; in remove_mi()
3784 mi->mi_clientid_prev = mi->mi_clientid_next = NULL; in remove_mi()
3785 mi->mi_srv = NULL; in remove_mi()
3786 mi->mi_srvset_cnt++; in remove_mi()
3788 VFS_RELE(mi->mi_vfsp); in remove_mi()
3797 mntinfo4_t *mi; in remove_all_mi() local
3802 mi = sp->mntinfo4_list; in remove_all_mi()
3807 VFS_HOLD(mi->mi_vfsp); in remove_all_mi()
3808 remove_mi(sp, mi); in remove_all_mi()
3809 VFS_RELE(mi->mi_vfsp); in remove_all_mi()
3821 nfs4_remove_mi_from_server(mntinfo4_t *mi, nfs4_server_t *esp) in nfs4_remove_mi_from_server() argument
3826 nfs4_remove_mi_from_server_nolock(mi, esp); in nfs4_remove_mi_from_server()
3830 (void) nfs_rw_enter_sig(&mi->mi_recovlock, RW_READER, 0); in nfs4_remove_mi_from_server()
3831 if (sp = find_nfs4_server_all(mi, 1)) { in nfs4_remove_mi_from_server()
3832 nfs4_remove_mi_from_server_nolock(mi, sp); in nfs4_remove_mi_from_server()
3836 nfs_rw_exit(&mi->mi_recovlock); in nfs4_remove_mi_from_server()
3846 mntinfo4_t *mi; in nfs4_fs_active() local
3850 for (mi = sp->mntinfo4_list; mi != NULL; mi = mi->mi_clientid_next) { in nfs4_fs_active()
3851 if (!(mi->mi_vfsp->vfs_flag & VFS_UNMOUNTED)) in nfs4_fs_active()
3979 dumpnfs4slist(char *txt, mntinfo4_t *mi, clientid4 clientid, servinfo4_t *srv_p) in dumpnfs4slist() argument
3988 mi, (longlong_t)clientid, srv_p->sv_addr.len, in dumpnfs4slist()
4024 nfs4_move_mi(mntinfo4_t *mi, servinfo4_t *old, servinfo4_t *new) in nfs4_move_mi() argument
4030 ASSERT(nfs_zone() == mi->mi_zone); in nfs4_move_mi()
4035 dumpnfs4slist("nfs4_move_mi", mi, (clientid4)0, new); in nfs4_move_mi()
4080 (void*)mi, (void*)old, (void*)new, in nfs4_move_mi()
4085 nfs4_deleg_discard(mi, op); in nfs4_move_mi()
4087 num_open = mi->mi_open_files; in nfs4_move_mi()
4088 mi->mi_open_files = 0; in nfs4_move_mi()
4092 nfs4_remove_mi_from_server_nolock(mi, op); in nfs4_move_mi()
4093 mi->mi_open_files = num_open; in nfs4_move_mi()
4096 mi->mi_open_files, op->state_ref_count, np->state_ref_count)); in nfs4_move_mi()
4098 nfs4_add_mi_to_server(np, mi); in nfs4_move_mi()
4168 find_nfs4_server(mntinfo4_t *mi) in find_nfs4_server() argument
4170 ASSERT(nfs_rw_lock_held(&mi->mi_recovlock, RW_READER) || in find_nfs4_server()
4171 nfs_rw_lock_held(&mi->mi_recovlock, RW_WRITER)); in find_nfs4_server()
4173 return (lookup_nfs4_server(mi->mi_srv, 0)); in find_nfs4_server()
4184 find_nfs4_server_all(mntinfo4_t *mi, int any_state) in find_nfs4_server_all() argument
4186 ASSERT(nfs_rw_lock_held(&mi->mi_recovlock, RW_READER) || in find_nfs4_server_all()
4187 nfs_rw_lock_held(&mi->mi_recovlock, RW_WRITER)); in find_nfs4_server_all()
4189 return (lookup_nfs4_server(mi->mi_srv, any_state)); in find_nfs4_server_all()
4280 mntinfo4_t *mi; in nfs4_free_mount_thread() local
4282 mi = VFTOMI4(args->fm_vfsp); in nfs4_free_mount_thread()
4285 MI4_RELE(mi); in nfs4_free_mount_thread()
4297 mntinfo4_t *mi = VFTOMI4(vfsp); in nfs4_free_mount() local
4325 (void) nfs_rw_enter_sig(&mi->mi_recovlock, RW_READER, FALSE); in nfs4_free_mount()
4326 sp = find_nfs4_server(mi); in nfs4_free_mount()
4327 nfs_rw_exit(&mi->mi_recovlock); in nfs4_free_mount()
4348 mutex_enter(&mi->mi_lock); in nfs4_free_mount()
4349 while (mi->mi_in_recovery != 0) { in nfs4_free_mount()
4355 cv_wait(&mi->mi_cv_in_recov, &mi->mi_lock); in nfs4_free_mount()
4362 mutex_exit(&mi->mi_lock); in nfs4_free_mount()
4377 if (!nfs4_ephemeral_umount(mi, flag, cr, in nfs4_free_mount()
4379 nfs4_ephemeral_umount_activate(mi, &must_unlock, in nfs4_free_mount()
4395 mutex_enter(&mi->mi_async_lock); in nfs4_free_mount()
4396 mi->mi_max_threads = 0; in nfs4_free_mount()
4397 NFS4_WAKEALL_ASYNC_WORKERS(mi->mi_async_work_cv); in nfs4_free_mount()
4398 mutex_exit(&mi->mi_async_lock); in nfs4_free_mount()
4399 if (mi->mi_manager_thread) in nfs4_free_mount()
4404 nfs4_remove_mi_from_server(mi, NULL); in nfs4_free_mount()
4412 removed = nfs4_mi_zonelist_remove(mi); in nfs4_free_mount()
4414 zone_rele_ref(&mi->mi_zone_ref, ZONE_REF_NFSV4); in nfs4_free_mount()