Lines Matching refs:nmp
193 static int nfs_fileupdate(struct nfsmount *nmp, char *filename,
204 error = nfs_lookup(nmp, filename, &fhandle, &fattr, NULL);
233 struct nfsmount *nmp = NULL;
239 nmp = (struct nfsmount *)(node->originMount->data);
240 nfs_mux_take(nmp);
263 for (prev = NULL, curr = nmp->nm_head;
283 nmp->nm_head = np->n_next;
296 nfs_mux_release(nmp);
300 static int vfs_nfs_stat_internal(struct nfsmount *nmp, struct nfsnode *nfs_node)
308 ret = nfs_request(nmp, NFSPROC_GETATTR, &attr_call,
490 struct nfsmount *nmp = NULL;
544 nmp = (struct nfsmount *)malloc(SIZEOF_nfsmount(buflen));
545 if (!nmp)
551 (void)memset_s(nmp, SIZEOF_nfsmount(buflen), 0, SIZEOF_nfsmount(buflen));
555 nmp->nm_buflen = (uint16_t)buflen;
557 nmp->nm_so = -1;
563 error = pthread_mutex_init(&nmp->nm_mux, &attr);
579 nmp->nm_timeo = nprmt.timeo;
580 nmp->nm_retry = nprmt.retry;
581 nmp->nm_wsize = nprmt.wsize;
582 nmp->nm_rsize = nprmt.rsize;
583 nmp->nm_readdirsize = nprmt.readdirsize;
584 nmp->nm_fhsize = NFSX_V3FHMAX;
586 (void)strncpy_s(nmp->nm_path, sizeof(nmp->nm_path), argp->path, pathlen);
587 (void)memcpy_s(&nmp->nm_nam, sizeof(struct sockaddr), &argp->addr, argp->addrlen);
591 nmp->nm_sotype = argp->sotype;
593 if (nmp->nm_sotype == SOCK_DGRAM || nmp->nm_sotype == SOCK_STREAM)
613 rpc->rc_path = nmp->nm_path;
614 rpc->rc_name = &nmp->nm_nam;
615 rpc->rc_sotype = nmp->nm_sotype;
616 rpc->rc_retry = nmp->nm_retry;
619 nmp->nm_rpcclnt = rpc;
621 error = rpcclnt_connect(nmp->nm_rpcclnt);
629 nmp->nm_mounted = true;
630 nmp->nm_so = nmp->nm_rpcclnt->rc_so;
631 nmp->nm_head = NULL;
632 nmp->nm_dir = NULL;
633 nmp->nm_fhsize = nmp->nm_rpcclnt->rc_fhsize;
634 (void)memcpy_s(&nmp->nm_fh, sizeof(nfsfh_t), &nmp->nm_rpcclnt->rc_fh, sizeof(nfsfh_t));
638 getattr.fs.fsroot.length = txdr_unsigned(nmp->nm_fhsize);
639 (void)memcpy_s(&getattr.fs.fsroot.handle, sizeof(nfsfh_t), &nmp->nm_fh, sizeof(nfsfh_t));
641 error = nfs_request(nmp, NFSPROC_GETATTR,
643 (sizeof(getattr.fs.fsroot.length) + nmp->nm_fhsize),
653 (void)memcpy_s(&nmp->nm_fattr, sizeof(struct nfs_fattr), &resok.attr, sizeof(struct nfs_fattr));
657 *handle = (void *)nmp;
663 if (nmp)
667 if (nmp->nm_rpcclnt)
669 rpcclnt_disconnect(nmp->nm_rpcclnt);
670 free(nmp->nm_rpcclnt);
671 nmp->nm_rpcclnt = NULL;
676 (void)pthread_mutex_destroy(&nmp->nm_mux);
678 free(nmp);
679 nmp = NULL;
800 struct nfsmount *nmp = NULL;
816 ret = nfs_bind(NULL, data, (void **)(&nmp), NULL);
817 if (ret != OK || nmp == NULL)
826 root->n_fhsize = nmp->nm_fhsize;
827 (void)memcpy_s(&(root->n_fhandle), root->n_fhsize, &(nmp->nm_fh), nmp->nm_fhsize);
830 mnt->data = nmp;
831 root->n_next = nmp->nm_head;
832 nmp->nm_head = root;
834 ret = vfs_nfs_stat_internal(nmp, root);
839 nmp->nm_permission = mnt->vnodeBeCovered->mode & 0777;
840 nmp->nm_gid = mnt->vnodeBeCovered->gid;
841 nmp->nm_uid = mnt->vnodeBeCovered->uid;
842 vp->mode = type_to_mode(vp->type, nmp->nm_permission);
843 vp->gid = nmp->nm_gid;
844 vp->uid = nmp->nm_uid;
852 struct nfsmount *nmp;
857 nmp = (struct nfsmount *)(parent->originMount->data);
858 nfs_mux_take(nmp);
865 ret = nfs_lookup(nmp, filename, &fhandle, &obj_attributes, NULL);
868 nfs_mux_release(nmp);
883 nfs_node->n_next = nmp->nm_head;
884 nmp->nm_head = nfs_node;
895 (*vpp)->mode = type_to_mode((*vpp)->type, nmp->nm_permission);
896 (*vpp)->gid = nmp->nm_gid;
897 (*vpp)->uid = nmp->nm_uid;
898 nfs_mux_release(nmp);
905 struct nfsmount *nmp = (struct nfsmount *)(node->originMount->data);
906 nfs_mux_take(nmp);
923 nfs_mux_release(nmp);
932 struct nfsmount *nmp = (struct nfsmount *)(node->originMount->data);
936 nfs_mux_take(nmp);
938 ret = nfs_checkmount(nmp);
956 nfs_dir->nfs_next = nmp->nm_dir;
957 nmp->nm_dir = nfs_dir;
962 nfs_mux_release(nmp);
968 struct nfsmount *nmp;
989 nmp = (struct nfsmount *)(node->originMount->data);
993 nfs_mux_take(nmp);
994 error = nfs_checkmount(nmp);
1022 ptr = (uint32_t *)&nmp->nm_msgbuffer.readdir.readdir;
1047 *ptr = txdr_unsigned((uint32_t)nmp->nm_readdirsize);
1053 error = nfs_request(nmp, NFSPROC_READDIR,
1054 (void *)&nmp->nm_msgbuffer.readdir, reqlen,
1055 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
1073 ptr = (uint32_t *)&((struct rpc_reply_readdir *)nmp->nm_iobuffer)->readdir;
1251 error = nfs_lookup(nmp, dir->fd_dir[i].d_name, &fhandle, &obj_attributes, NULL);
1291 nfs_mux_release(nmp);
1301 nfs_mux_release(nmp);
1321 struct nfsmount *nmp = (struct nfsmount *)(to_parent->originMount->data);
1323 nfs_mux_take(nmp);
1324 error = nfs_checkmount(nmp);
1334 ptr = (uint32_t *)&nmp->nm_msgbuffer.renamef.rename;
1379 error = nfs_request(nmp, NFSPROC_RENAME,
1380 (void *)&nmp->nm_msgbuffer.renamef, reqlen,
1381 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
1402 nfs_mux_release(nmp);
1408 struct nfsmount *nmp = (struct nfsmount *)(parent->originMount->data);
1425 nfs_mux_take(nmp);
1426 error = nfs_checkmount(nmp);
1437 ptr = (uint32_t *)&nmp->nm_msgbuffer.mkdir.mkdir;
1505 error = nfs_request(nmp, NFSPROC_MKDIR,
1506 (void *)&nmp->nm_msgbuffer.mkdir, reqlen,
1507 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
1516 error = nfs_lookup(nmp, dirname, &fhandle, &obj_attributes, NULL);
1534 target_node->n_next = nmp->nm_head;
1535 nmp->nm_head = target_node;
1545 (*vpp)->mode = type_to_mode((*vpp)->type, nmp->nm_permission);
1546 (*vpp)->gid = nmp->nm_gid;
1547 (*vpp)->uid = nmp->nm_uid;
1550 nfs_mux_release(nmp);
1556 struct nfsmount *nmp;
1571 nmp = (struct nfsmount *)(node->originMount->data);
1572 DEBUGASSERT(nmp != NULL);
1576 nfs_mux_take(nmp);
1578 error = nfs_checkmount(nmp);
1592 if (nfs_fileupdate(nmp, np->n_name, &parent_fhandle, np) == OK)
1617 bufsize = (buflen < nmp->nm_wsize) ? buflen : nmp->nm_wsize;
1635 if (writesize > nmp->nm_wsize)
1637 writesize = nmp->nm_wsize;
1645 if (bufsize > nmp->nm_buflen)
1647 writesize -= (bufsize - nmp->nm_buflen);
1664 nmp->nm_iobuffer)->write;
1703 error = nfs_request(nmp, NFSPROC_WRITE,
1704 (void *)nmp->nm_iobuffer, reqlen,
1705 (void *)&nmp->nm_msgbuffer.write,
1714 ptr = (uint32_t *)&nmp->nm_msgbuffer.write.write;
1764 nfs_mux_release(nmp);
1769 nfs_mux_release(nmp);
1775 struct nfsmount *nmp;
1789 nmp = (struct nfsmount *)(node->originMount->data);
1790 DEBUGASSERT(nmp != NULL);
1794 nfs_mux_take(nmp);
1796 error = nfs_checkmount(nmp);
1828 bufsize = (buflen < nmp->nm_wsize) ? buflen : nmp->nm_wsize;
1846 if (writesize > nmp->nm_wsize)
1848 writesize = nmp->nm_wsize;
1856 if (bufsize > nmp->nm_buflen)
1858 writesize -= (bufsize - nmp->nm_buflen);
1875 nmp->nm_iobuffer)->write;
1914 error = nfs_request(nmp, NFSPROC_WRITE,
1915 (void *)nmp->nm_iobuffer, reqlen,
1916 (void *)&nmp->nm_msgbuffer.write,
1925 ptr = (uint32_t *)&nmp->nm_msgbuffer.write.write;
1968 nfs_mux_release(nmp);
1973 nfs_mux_release(nmp);
1981 struct nfsmount *nmp = (struct nfsmount *)(node->originMount->data);
1987 nfs_mux_take(nmp);
1989 error = nfs_checkmount(nmp);
2039 nfs_mux_release(nmp);
2043 nfs_mux_release(nmp);
2059 struct nfsmount *nmp = (struct nfsmount *)(node->originMount->data);
2061 DEBUGASSERT(nmp != NULL);
2065 nfs_mux_take(nmp);
2067 error = nfs_checkmount(nmp);
2079 error = nfs_fileupdate(nmp, np->n_name, &parent_fhandle, np);
2109 if (readsize > nmp->nm_rsize)
2111 readsize = nmp->nm_rsize;
2117 if (tmp > nmp->nm_buflen)
2119 readsize -= (tmp - nmp->nm_buflen);
2124 ptr = (uint32_t *)&nmp->nm_msgbuffer.read.read;
2150 error = nfs_request(nmp, NFSPROC_READ,
2151 (void *)&nmp->nm_msgbuffer.read, reqlen,
2152 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
2163 read_response = (struct rpc_reply_read *)nmp->nm_iobuffer;
2189 nfs_mux_release(nmp);
2193 nfs_mux_release(nmp);
2210 struct nfsmount *nmp = (struct nfsmount *)(node->originMount->data);
2212 DEBUGASSERT(nmp != NULL);
2216 nfs_mux_take(nmp);
2218 error = nfs_checkmount(nmp);
2230 error = nfs_fileupdate(nmp, np->n_name, &parent_fhandle, np);
2254 if (readsize > nmp->nm_rsize)
2256 readsize = nmp->nm_rsize;
2262 if (tmp > nmp->nm_buflen)
2264 readsize -= (tmp - nmp->nm_buflen);
2269 ptr = (uint32_t *)&nmp->nm_msgbuffer.read.read;
2295 error = nfs_request(nmp, NFSPROC_READ,
2296 (void *)&nmp->nm_msgbuffer.read, reqlen,
2297 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
2308 read_response = (struct rpc_reply_read *)nmp->nm_iobuffer;
2334 nfs_mux_release(nmp);
2338 nfs_mux_release(nmp);
2350 struct nfsmount *nmp = (struct nfsmount *)(parent->originMount->data);
2352 nfs_mux_take(nmp);
2353 error = nfs_checkmount(nmp);
2359 ptr = (uint32_t *)&nmp->nm_msgbuffer.create.create;
2441 error = nfs_request(nmp, NFSPROC_CREATE,
2442 (void *)&nmp->nm_msgbuffer.create, reqlen,
2443 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
2458 nmp->nm_iobuffer)->create;
2503 np->n_next = nmp->nm_head;
2504 nmp->nm_head = np;
2519 (*vpp)->mode = type_to_mode((*vpp)->type, nmp->nm_permission);
2520 (*vpp)->gid = nmp->nm_gid;
2521 (*vpp)->uid = nmp->nm_uid;
2523 nfs_mux_release(nmp);
2531 nfs_mux_release(nmp);
2537 struct nfsmount *nmp = (struct nfsmount *)(parent->originMount->data);
2545 nfs_mux_take(nmp);
2546 error = nfs_checkmount(nmp);
2565 ptr = (uint32_t *)&nmp->nm_msgbuffer.removef.remove;
2590 error = nfs_request(nmp, NFSPROC_REMOVE,
2591 (void *)&nmp->nm_msgbuffer.removef, reqlen,
2592 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
2595 nfs_mux_release(nmp);
2601 struct nfsmount *nmp = (struct nfsmount *)(parent->originMount->data);
2608 nfs_mux_take(nmp);
2609 error = nfs_checkmount(nmp);
2627 ptr = (uint32_t *)&nmp->nm_msgbuffer.rmdir.rmdir;
2652 error = nfs_request(nmp, NFSPROC_RMDIR,
2653 (void *)&nmp->nm_msgbuffer.rmdir, reqlen,
2654 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
2657 nfs_mux_release(nmp);
2664 struct nfsmount *nmp = (struct nfsmount *)(node->originMount->data);
2666 nfs_mux_take(nmp);
2676 nfs_mux_release(nmp);
2688 struct nfsmount *nmp = (struct nfsmount *)(node->originMount->data);
2698 DEBUGASSERT(nmp != NULL);
2701 nfs_mux_take(nmp);
2714 for (prev = (struct nfsdir_s *)NULL, curr = nmp->nm_dir;
2734 nmp->nm_dir= nfs_dir->nfs_next;
2745 nfs_mux_release(nmp);
2764 int nfs_fsinfo(struct nfsmount *nmp)
2773 fsinfo.fs.fsroot.length = txdr_unsigned(nmp->nm_fhsize);
2774 fsinfo.fs.fsroot.handle = nmp->nm_fh;
2779 error = nfs_request(nmp, NFSPROC_FSINFO,
2798 if (pref < nmp->nm_wsize)
2800 nmp->nm_wsize = (pref + NFS_FABLKSIZE - 1) & ~(NFS_FABLKSIZE - 1);
2804 if (max < nmp->nm_wsize)
2806 nmp->nm_wsize = max & ~(NFS_FABLKSIZE - 1);
2807 if (nmp->nm_wsize == 0)
2809 nmp->nm_wsize = max;
2814 if (pref < nmp->nm_rsize)
2816 nmp->nm_rsize = (pref + NFS_FABLKSIZE - 1) & ~(NFS_FABLKSIZE - 1);
2820 if (max < nmp->nm_rsize)
2822 nmp->nm_rsize = max & ~(NFS_FABLKSIZE - 1);
2823 if (nmp->nm_rsize == 0)
2825 nmp->nm_rsize = max;
2830 if (pref < nmp->nm_readdirsize)
2832 nmp->nm_readdirsize = (pref + NFS_DIRBLKSIZ - 1) & ~(NFS_DIRBLKSIZ - 1);
2835 if (max < nmp->nm_readdirsize)
2837 nmp->nm_readdirsize = max & ~(NFS_DIRBLKSIZ - 1);
2838 if (nmp->nm_readdirsize == 0)
2840 nmp->nm_readdirsize = max;
2849 struct nfsmount *nmp;
2858 nmp = (struct nfsmount *)mountpt->data;
2862 nfs_mux_take(nmp);
2863 error = nfs_checkmount(nmp);
2874 error = nfs_fsinfo(nmp);
2881 fsstat = &nmp->nm_msgbuffer.fsstat;
2882 fsstat->fs.fsroot.length = txdr_unsigned(nmp->nm_fhsize);
2883 (void)memcpy_s(&fsstat->fs.fsroot.handle, sizeof(nfsfh_t), &nmp->nm_fh, sizeof(nfsfh_t));
2886 error = nfs_request(nmp, NFSPROC_FSSTAT,
2888 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
2894 sfp = (struct rpc_reply_fsstat *)nmp->nm_iobuffer;
2919 nfs_mux_release(nmp);
2928 struct nfsmount *nmp = (struct nfsmount *)(node->originMount->data);
2929 nfs_mux_take(nmp);
2945 nfs_mux_release(nmp);
2955 struct nfsmount *nmp = NULL;
2958 nmp = (struct nfsmount *)(node->originMount->data);
2959 nfs_mux_take(nmp);
2964 ptr = (uint32_t *)&nmp->nm_msgbuffer.setattr.setattr;
2992 error = nfs_request(nmp, NFSPROC_SETATTR,
2993 (void *)&nmp->nm_msgbuffer.setattr, reqlen,
2994 (void *)nmp->nm_iobuffer, nmp->nm_buflen);
2997 nfs_mux_release(nmp);
3005 nfs_mux_release(nmp);
3012 struct nfsmount *nmp = (struct nfsmount *)mnt->data;
3015 DEBUGASSERT(nmp);
3019 nfs_mux_take(nmp);
3028 if (nmp->nm_head == NULL)
3034 if (nmp->nm_head->n_next != NULL || nmp->nm_dir != NULL)
3036 nfs_debug_error("There are open files: %p or directories: %p\n", nmp->nm_head, nmp->nm_dir);
3048 error = rpcclnt_umount(nmp->nm_rpcclnt);
3057 rpcclnt_disconnect(nmp->nm_rpcclnt);
3061 nfs_mux_release(nmp);
3062 (void)pthread_mutex_destroy(&nmp->nm_mux);
3063 free(nmp->nm_rpcclnt);
3064 nmp->nm_rpcclnt = NULL;
3065 free(nmp);
3066 nmp = NULL;
3071 nfs_mux_release(nmp);
3088 struct nfsmount *nmp = (struct nfsmount *)(node->originMount->data);
3091 nfs_mux_take(nmp);
3096 ret = nfs_request(nmp, NFSPROC_GETATTR, &attr_call,
3109 ret = nfs_fileupdate(nmp, nfs_node->n_name, &parent_fhandle, nfs_node);
3111 nfs_mux_release(nmp);
3125 nfs_mux_release(nmp);