Lines Matching refs:nmp

110 nfs4_init_clientid(struct nfsmount *nmp)
139 vsfs = vfs_statfs(nmp->nm_mountp);
140 saddr = nmp->nm_saddr;
201 nmp->nm_longid = ncip;
211 nfs4_setclientid(struct nfsmount *nmp)
227 cred = IS_VALID_CRED(nmp->nm_mcred) ? nmp->nm_mcred : vfs_context_ucred(vfs_context_kernel());
233 if (!nmp->nm_longid)
234 error = nfs4_init_clientid(nmp);
238 nfsm_chain_build_alloc_init(error, &nmreq, 14 * NFSX_UNSIGNED + nmp->nm_longid->nci_idlen);
243 nfsm_chain_add_64(error, &nmreq, nmp->nm_mounttime);
244 nfsm_chain_add_32(error, &nmreq, nmp->nm_longid->nci_idlen);
245 nfsm_chain_add_opaque(error, &nmreq, nmp->nm_longid->nci_id, nmp->nm_longid->nci_idlen);
248 if (!NMFLAG(nmp, NOCALLBACK) && nmp->nm_cbid && nfs4_cb_port &&
249 !sock_getsockname(nmp->nm_nso->nso_so, (struct sockaddr*)&ss, sizeof(ss))) {
258 /* assemble r_addr = universal address (nmp->nm_nso->nso_so source IP addr + port) */
275 nfsm_chain_add_32(error, &nmreq, nmp->nm_cbid); /* callback_ident */
286 error = nfs_request2(NULL, nmp->nm_mountp, &nmreq, NFSPROC4_COMPOUND, thd, cred, NULL, R_SETUP, &nmrep, &xid, &status);
295 nfsm_chain_get_64(error, &nmrep, nmp->nm_clientid);
306 nfsm_chain_add_64(error, &nmreq, nmp->nm_clientid);
311 error = nfs_request2(NULL, nmp->nm_mountp, &nmreq, NFSPROC4_COMPOUND, thd, cred, NULL, R_SETUP, &nmrep, &xid, &status);
317 lck_mtx_lock(&nmp->nm_lock);
319 nmp->nm_state |= NFSSTA_CLIENTID;
320 lck_mtx_unlock(&nmp->nm_lock);
322 nfsmout_if(error || !nmp->nm_dnp);
331 nfsm_chain_add_fh(error, &nmreq, nmp->nm_vers, nmp->nm_dnp->n_fhp, nmp->nm_dnp->n_fhsize);
340 error = nfs_request2(NULL, nmp->nm_mountp, &nmreq, NFSPROC4_COMPOUND, thd, cred, NULL, R_SETUP, &nmrep, &xid, &status);
343 lck_mtx_lock(&nmp->nm_lock);
347 error = nfs4_parsefattr(&nmrep, &nmp->nm_fsattr, NULL, NULL, NULL, NULL);
348 lck_mtx_unlock(&nmp->nm_lock);
364 nfs4_renew(struct nfsmount *nmp, int rpcflag)
371 cred = IS_VALID_CRED(nmp->nm_mcred) ? nmp->nm_mcred : vfs_context_ucred(vfs_context_kernel());
383 nfsm_chain_add_64(error, &nmreq, nmp->nm_clientid);
387 error = nfs_request2(NULL, nmp->nm_mountp, &nmreq, NFSPROC4_COMPOUND,
406 struct nfsmount *nmp = param0;
410 lck_mtx_lock(&nmp->nm_lock);
411 clientid = nmp->nm_clientid;
412 if ((nmp->nm_state & NFSSTA_RECOVER) || !(nmp->nm_sockflags & NMSOCK_READY)) {
413 lck_mtx_unlock(&nmp->nm_lock);
416 lck_mtx_unlock(&nmp->nm_lock);
418 error = nfs4_renew(nmp, R_RECOVER);
421 nfs_need_reconnect(nmp);
424 lck_mtx_lock(&nmp->nm_lock);
426 (nmp->nm_clientid == clientid) && !(nmp->nm_state & NFSSTA_RECOVER)) {
428 nfs_need_recover(nmp, error);
431 interval = nmp->nm_fsattr.nfsa_lease / (error ? 4 : 2);
432 if ((interval < 1) || (nmp->nm_state & NFSSTA_RECOVER))
434 lck_mtx_unlock(&nmp->nm_lock);
435 nfs_interval_timer_start(nmp->nm_renew_timer, interval * 1000);
451 nfs4_secinfo_rpc(struct nfsmount *nmp, struct nfsreq_secinfo_args *siap, kauth_cred_t cred, uint32_t *sec, int *seccountp)
462 if (!nmp)
464 nfsvers = nmp->nm_vers;
546 nfsm_chain_add_name(error, &nmreq, name, namelen, nmp);
550 error = nfs_request2(np, nmp->nm_mountp, &nmreq, NFSPROC4_COMPOUND,
640 struct nfsmount *nmp,
674 nfsm_chain_add_name(error, &nmreq, name, strlen(name), nmp);
683 error = nfs_request_async(dnp, nmp->nm_mountp, &nmreq, NFSPROC4_COMPOUND,
787 nfs_vattr_set_bitmap(struct nfsmount *nmp, uint32_t *bitmap, struct vnode_attr *vap)
794 if (VATTR_IS_ACTIVE(vap, va_acl) && (nmp->nm_fsattr.nfsa_flags & NFS_FSFLAG_ACL))
801 if (VATTR_IS_ACTIVE(vap, va_mode) && !NMFLAG(nmp, ACLONLY))
823 bitmap[i] &= nmp->nm_fsattr.nfsa_supp_attr[i];
2176 nfsm_chain_add_fattr4_f(struct nfsm_chain *nmc, struct vnode_attr *vap, struct nfsmount *nmp)
2189 nfs_vattr_set_bitmap(nmp, bitmap, vap);
2238 nfsm_chain_add_name(error, nmc, s, len, nmp);
2278 nfsm_chain_add_name(error, nmc, s, len, nmp);
2304 nfsm_chain_add_name(error, nmc, s, len, nmp);
2351 * Note: nmp must be locked!
2354 nfs_need_recover(struct nfsmount *nmp, int error)
2356 int wake = !(nmp->nm_state & NFSSTA_RECOVER);
2358 nmp->nm_state |= NFSSTA_RECOVER;
2362 nmp->nm_state |= NFSSTA_RECOVER_EXPIRED;
2364 nfs_mount_sock_thread_wake(nmp);
2378 struct nfsmount *nmp = NFSTONMP(np);
2408 lck_mtx_lock(&nmp->nm_lock);
2410 TAILQ_REMOVE(&nmp->nm_dreturnq, np, n_dreturn);
2413 lck_mtx_unlock(&nmp->nm_lock);
2417 lck_mtx_lock(&nmp->nm_lock);
2419 TAILQ_REMOVE(&nmp->nm_delegations, np, n_dlink);
2422 lck_mtx_unlock(&nmp->nm_lock);
2423 nfs4_delegreturn_rpc(nmp, np->n_fhp, np->n_fhsize, &np->n_dstateid,
2437 nfs_recover(struct nfsmount *nmp)
2451 lck_mtx_lock(&nmp->nm_lock);
2457 if ((error = nfs_sigintr(nmp, NULL, NULL, 1)))
2459 if (!(nmp->nm_sockflags & NMSOCK_READY))
2461 if (nmp->nm_state & NFSSTA_FORCE)
2463 if (nmp->nm_sockflags & NMSOCK_UNMOUNT)
2467 if (nmp->nm_stateinuse)
2468 msleep(&nmp->nm_stateinuse, &nmp->nm_lock, (PZERO-1), "nfsrecoverstartwait", &ts);
2469 } while (nmp->nm_stateinuse);
2472 printf("nfs recovery reconnecting for %s, 0x%x\n", vfs_statfs(nmp->nm_mountp)->f_mntfromname, nmp->nm_stategenid);
2474 printf("nfs recovery aborted for %s, 0x%x\n", vfs_statfs(nmp->nm_mountp)->f_mntfromname, nmp->nm_stategenid);
2475 lck_mtx_unlock(&nmp->nm_lock);
2480 if (now.tv_sec == nmp->nm_recover_start) {
2481 printf("nfs recovery throttled for %s, 0x%x\n", vfs_statfs(nmp->nm_mountp)->f_mntfromname, nmp->nm_stategenid);
2482 lck_mtx_unlock(&nmp->nm_lock);
2486 nmp->nm_recover_start = now.tv_sec;
2487 if (++nmp->nm_stategenid == 0)
2488 ++nmp->nm_stategenid;
2489 printf("nfs recovery started for %s, 0x%x\n", vfs_statfs(nmp->nm_mountp)->f_mntfromname, nmp->nm_stategenid);
2490 lck_mtx_unlock(&nmp->nm_lock);
2493 TAILQ_FOREACH(noop, &nmp->nm_open_owners, noo_link) {
2500 if (nmp->nm_vers < NFS_VER4)
2558 if (!(nmp->nm_sockflags & NMSOCK_READY))
2572 nfs_need_reconnect(nmp);
2575 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nmp->nm_stategenid, error);
2618 error = nmp->nm_funcs->nf_setlock_rpc(nofp->nof_np, nofp, nflp, 1, R_RECOVER, thd, noop->noo_cred);
2628 nfs_need_reconnect(nmp);
2631 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nmp->nm_stategenid, error);
2652 if (!(nmp->nm_sockflags & NMSOCK_READY)) {
2656 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nmp->nm_stategenid, error);
2672 lck_mtx_lock(&nmp->nm_lock);
2673 if ((nmp->nm_vers >= NFS_VER4) && (nmp->nm_state & NFSSTA_RECOVER_EXPIRED)) {
2675 TAILQ_FOREACH_SAFE(np, &nmp->nm_delegations, n_dlink, nextnp) {
2676 lck_mtx_unlock(&nmp->nm_lock);
2678 lck_mtx_lock(&nmp->nm_lock);
2683 nmp->nm_state &= ~(NFSSTA_RECOVER|NFSSTA_RECOVER_EXPIRED);
2684 wakeup(&nmp->nm_state);
2686 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nmp->nm_stategenid);
2687 lck_mtx_unlock(&nmp->nm_lock);
2690 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nmp->nm_stategenid, error);