Lines Matching refs:server

217 static void pnfs_init_server(struct nfs_server *server)  in pnfs_init_server()  argument
219 rpc_init_wait_queue(&server->roc_rpcwaitq, "pNFS ROC"); in pnfs_init_server()
231 static void pnfs_init_server(struct nfs_server *server) in pnfs_init_server() argument
625 static void nfs_destroy_server(struct nfs_server *server) in nfs_destroy_server() argument
627 if (server->nlm_host) in nfs_destroy_server()
628 nlmclnt_done(server->nlm_host); in nfs_destroy_server()
634 static int nfs_start_lockd(struct nfs_server *server) in nfs_start_lockd() argument
637 struct nfs_client *clp = server->nfs_client; in nfs_start_lockd()
643 .noresvport = server->flags & NFS_MOUNT_NORESVPORT ? in nfs_start_lockd()
650 if ((server->flags & NFS_MOUNT_LOCAL_FLOCK) && in nfs_start_lockd()
651 (server->flags & NFS_MOUNT_LOCAL_FCNTL)) in nfs_start_lockd()
666 server->nlm_host = host; in nfs_start_lockd()
667 server->destroy = nfs_destroy_server; in nfs_start_lockd()
674 int nfs_init_server_rpcclient(struct nfs_server *server, in nfs_init_server_rpcclient() argument
678 struct nfs_client *clp = server->nfs_client; in nfs_init_server_rpcclient()
680 server->client = rpc_clone_client_set_auth(clp->cl_rpcclient, in nfs_init_server_rpcclient()
682 if (IS_ERR(server->client)) { in nfs_init_server_rpcclient()
684 return PTR_ERR(server->client); in nfs_init_server_rpcclient()
687 memcpy(&server->client->cl_timeout_default, in nfs_init_server_rpcclient()
689 sizeof(server->client->cl_timeout_default)); in nfs_init_server_rpcclient()
690 server->client->cl_timeout = &server->client->cl_timeout_default; in nfs_init_server_rpcclient()
691 server->client->cl_softrtry = 0; in nfs_init_server_rpcclient()
692 if (server->flags & NFS_MOUNT_SOFT) in nfs_init_server_rpcclient()
693 server->client->cl_softrtry = 1; in nfs_init_server_rpcclient()
741 static int nfs_init_server(struct nfs_server *server, in nfs_init_server() argument
771 server->nfs_client = clp; in nfs_init_server()
774 server->flags = data->flags; in nfs_init_server()
775 server->options = data->options; in nfs_init_server()
776 server->caps |= NFS_CAP_HARDLINKS|NFS_CAP_SYMLINKS|NFS_CAP_FILEID| in nfs_init_server()
781 server->rsize = nfs_block_size(data->rsize, NULL); in nfs_init_server()
783 server->wsize = nfs_block_size(data->wsize, NULL); in nfs_init_server()
785 server->acregmin = data->acregmin * HZ; in nfs_init_server()
786 server->acregmax = data->acregmax * HZ; in nfs_init_server()
787 server->acdirmin = data->acdirmin * HZ; in nfs_init_server()
788 server->acdirmax = data->acdirmax * HZ; in nfs_init_server()
791 error = nfs_start_lockd(server); in nfs_init_server()
795 server->port = data->nfs_server.port; in nfs_init_server()
796 server->auth_info = data->auth_info; in nfs_init_server()
798 error = nfs_init_server_rpcclient(server, &timeparms, in nfs_init_server()
805 memcpy(&server->mountd_address, &data->mount_server.address, in nfs_init_server()
807 server->mountd_addrlen = data->mount_server.addrlen; in nfs_init_server()
809 server->mountd_version = data->mount_server.version; in nfs_init_server()
810 server->mountd_port = data->mount_server.port; in nfs_init_server()
811 server->mountd_protocol = data->mount_server.protocol; in nfs_init_server()
813 server->namelen = data->namlen; in nfs_init_server()
818 server->nfs_client = NULL; in nfs_init_server()
827 static void nfs_server_set_fsinfo(struct nfs_server *server, in nfs_server_set_fsinfo() argument
834 if (server->rsize == 0) in nfs_server_set_fsinfo()
835 server->rsize = nfs_block_size(fsinfo->rtpref, NULL); in nfs_server_set_fsinfo()
836 if (server->wsize == 0) in nfs_server_set_fsinfo()
837 server->wsize = nfs_block_size(fsinfo->wtpref, NULL); in nfs_server_set_fsinfo()
839 if (fsinfo->rtmax >= 512 && server->rsize > fsinfo->rtmax) in nfs_server_set_fsinfo()
840 server->rsize = nfs_block_size(fsinfo->rtmax, NULL); in nfs_server_set_fsinfo()
841 if (fsinfo->wtmax >= 512 && server->wsize > fsinfo->wtmax) in nfs_server_set_fsinfo()
842 server->wsize = nfs_block_size(fsinfo->wtmax, NULL); in nfs_server_set_fsinfo()
844 max_rpc_payload = nfs_block_size(rpc_max_payload(server->client), NULL); in nfs_server_set_fsinfo()
845 if (server->rsize > max_rpc_payload) in nfs_server_set_fsinfo()
846 server->rsize = max_rpc_payload; in nfs_server_set_fsinfo()
847 if (server->rsize > NFS_MAX_FILE_IO_SIZE) in nfs_server_set_fsinfo()
848 server->rsize = NFS_MAX_FILE_IO_SIZE; in nfs_server_set_fsinfo()
849 server->rpages = (server->rsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; in nfs_server_set_fsinfo()
851 server->backing_dev_info.name = "nfs"; in nfs_server_set_fsinfo()
852 server->backing_dev_info.ra_pages = server->rpages * NFS_MAX_READAHEAD; in nfs_server_set_fsinfo()
854 if (server->wsize > max_rpc_payload) in nfs_server_set_fsinfo()
855 server->wsize = max_rpc_payload; in nfs_server_set_fsinfo()
856 if (server->wsize > NFS_MAX_FILE_IO_SIZE) in nfs_server_set_fsinfo()
857 server->wsize = NFS_MAX_FILE_IO_SIZE; in nfs_server_set_fsinfo()
858 server->wpages = (server->wsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; in nfs_server_set_fsinfo()
860 server->wtmult = nfs_block_bits(fsinfo->wtmult, NULL); in nfs_server_set_fsinfo()
862 server->dtsize = nfs_block_size(fsinfo->dtpref, NULL); in nfs_server_set_fsinfo()
863 if (server->dtsize > PAGE_CACHE_SIZE * NFS_MAX_READDIR_PAGES) in nfs_server_set_fsinfo()
864 server->dtsize = PAGE_CACHE_SIZE * NFS_MAX_READDIR_PAGES; in nfs_server_set_fsinfo()
865 if (server->dtsize > server->rsize) in nfs_server_set_fsinfo()
866 server->dtsize = server->rsize; in nfs_server_set_fsinfo()
868 if (server->flags & NFS_MOUNT_NOAC) { in nfs_server_set_fsinfo()
869 server->acregmin = server->acregmax = 0; in nfs_server_set_fsinfo()
870 server->acdirmin = server->acdirmax = 0; in nfs_server_set_fsinfo()
873 server->maxfilesize = fsinfo->maxfilesize; in nfs_server_set_fsinfo()
875 server->time_delta = fsinfo->time_delta; in nfs_server_set_fsinfo()
878 rpc_setbufsize(server->client, server->wsize + 100, server->rsize + 100); in nfs_server_set_fsinfo()
884 int nfs_probe_fsinfo(struct nfs_server *server, struct nfs_fh *mntfh, struct nfs_fattr *fattr) in nfs_probe_fsinfo() argument
887 struct nfs_client *clp = server->nfs_client; in nfs_probe_fsinfo()
893 error = clp->rpc_ops->set_capabilities(server, mntfh); in nfs_probe_fsinfo()
900 error = clp->rpc_ops->fsinfo(server, mntfh, &fsinfo); in nfs_probe_fsinfo()
904 nfs_server_set_fsinfo(server, mntfh, &fsinfo); in nfs_probe_fsinfo()
907 if (server->namelen == 0) { in nfs_probe_fsinfo()
913 if (clp->rpc_ops->pathconf(server, mntfh, &pathinfo) >= 0) in nfs_probe_fsinfo()
914 server->namelen = pathinfo.max_namelen; in nfs_probe_fsinfo()
944 void nfs_server_insert_lists(struct nfs_server *server) in nfs_server_insert_lists() argument
946 struct nfs_client *clp = server->nfs_client; in nfs_server_insert_lists()
950 list_add_tail_rcu(&server->client_link, &clp->cl_superblocks); in nfs_server_insert_lists()
951 list_add_tail(&server->master_link, &nn->nfs_volume_list); in nfs_server_insert_lists()
958 void nfs_server_remove_lists(struct nfs_server *server) in nfs_server_remove_lists() argument
960 struct nfs_client *clp = server->nfs_client; in nfs_server_remove_lists()
967 list_del_rcu(&server->client_link); in nfs_server_remove_lists()
970 list_del(&server->master_link); in nfs_server_remove_lists()
982 struct nfs_server *server; in nfs_alloc_server() local
984 server = kzalloc(sizeof(struct nfs_server), GFP_KERNEL); in nfs_alloc_server()
985 if (!server) in nfs_alloc_server()
988 server->client = server->client_acl = ERR_PTR(-EINVAL); in nfs_alloc_server()
991 INIT_LIST_HEAD(&server->client_link); in nfs_alloc_server()
992 INIT_LIST_HEAD(&server->master_link); in nfs_alloc_server()
993 INIT_LIST_HEAD(&server->delegations); in nfs_alloc_server()
994 INIT_LIST_HEAD(&server->layouts); in nfs_alloc_server()
995 INIT_LIST_HEAD(&server->state_owners_lru); in nfs_alloc_server()
997 atomic_set(&server->active, 0); in nfs_alloc_server()
999 server->io_stats = nfs_alloc_iostats(); in nfs_alloc_server()
1000 if (!server->io_stats) { in nfs_alloc_server()
1001 kfree(server); in nfs_alloc_server()
1005 if (bdi_init(&server->backing_dev_info)) { in nfs_alloc_server()
1006 nfs_free_iostats(server->io_stats); in nfs_alloc_server()
1007 kfree(server); in nfs_alloc_server()
1011 ida_init(&server->openowner_id); in nfs_alloc_server()
1012 ida_init(&server->lockowner_id); in nfs_alloc_server()
1013 pnfs_init_server(server); in nfs_alloc_server()
1015 return server; in nfs_alloc_server()
1022 void nfs_free_server(struct nfs_server *server) in nfs_free_server() argument
1026 nfs_server_remove_lists(server); in nfs_free_server()
1028 if (server->destroy != NULL) in nfs_free_server()
1029 server->destroy(server); in nfs_free_server()
1031 if (!IS_ERR(server->client_acl)) in nfs_free_server()
1032 rpc_shutdown_client(server->client_acl); in nfs_free_server()
1033 if (!IS_ERR(server->client)) in nfs_free_server()
1034 rpc_shutdown_client(server->client); in nfs_free_server()
1036 nfs_put_client(server->nfs_client); in nfs_free_server()
1038 ida_destroy(&server->lockowner_id); in nfs_free_server()
1039 ida_destroy(&server->openowner_id); in nfs_free_server()
1040 nfs_free_iostats(server->io_stats); in nfs_free_server()
1041 bdi_destroy(&server->backing_dev_info); in nfs_free_server()
1042 kfree(server); in nfs_free_server()
1055 struct nfs_server *server; in nfs_create_server() local
1059 server = nfs_alloc_server(); in nfs_create_server()
1060 if (!server) in nfs_create_server()
1069 error = nfs_init_server(server, mount_info->parsed, nfs_mod); in nfs_create_server()
1074 error = nfs_probe_fsinfo(server, mount_info->mntfh, fattr); in nfs_create_server()
1077 if (server->nfs_client->rpc_ops->version == 3) { in nfs_create_server()
1078 if (server->namelen == 0 || server->namelen > NFS3_MAXNAMLEN) in nfs_create_server()
1079 server->namelen = NFS3_MAXNAMLEN; in nfs_create_server()
1081 server->caps |= NFS_CAP_READDIRPLUS; in nfs_create_server()
1083 if (server->namelen == 0 || server->namelen > NFS2_MAXNAMLEN) in nfs_create_server()
1084 server->namelen = NFS2_MAXNAMLEN; in nfs_create_server()
1088 error = nfs_mod->rpc_ops->getattr(server, mount_info->mntfh, fattr, NULL); in nfs_create_server()
1094 memcpy(&server->fsid, &fattr->fsid, sizeof(server->fsid)); in nfs_create_server()
1097 (unsigned long long) server->fsid.major, in nfs_create_server()
1098 (unsigned long long) server->fsid.minor); in nfs_create_server()
1100 nfs_server_insert_lists(server); in nfs_create_server()
1101 server->mount_time = jiffies; in nfs_create_server()
1103 return server; in nfs_create_server()
1107 nfs_free_server(server); in nfs_create_server()
1120 struct nfs_server *server; in nfs_clone_server() local
1128 server = nfs_alloc_server(); in nfs_clone_server()
1129 if (!server) in nfs_clone_server()
1138 server->nfs_client = source->nfs_client; in nfs_clone_server()
1139 server->destroy = source->destroy; in nfs_clone_server()
1140 atomic_inc(&server->nfs_client->cl_count); in nfs_clone_server()
1141 nfs_server_copy_userdata(server, source); in nfs_clone_server()
1143 server->fsid = fattr->fsid; in nfs_clone_server()
1145 error = nfs_init_server_rpcclient(server, in nfs_clone_server()
1152 error = nfs_probe_fsinfo(server, fh, fattr_fsinfo); in nfs_clone_server()
1156 if (server->namelen == 0 || server->namelen > NFS4_MAXNAMLEN) in nfs_clone_server()
1157 server->namelen = NFS4_MAXNAMLEN; in nfs_clone_server()
1160 (unsigned long long) server->fsid.major, in nfs_clone_server()
1161 (unsigned long long) server->fsid.minor); in nfs_clone_server()
1163 error = nfs_start_lockd(server); in nfs_clone_server()
1167 nfs_server_insert_lists(server); in nfs_clone_server()
1168 server->mount_time = jiffies; in nfs_clone_server()
1171 dprintk("<-- nfs_clone_server() = %p\n", server); in nfs_clone_server()
1172 return server; in nfs_clone_server()
1176 nfs_free_server(server); in nfs_clone_server()
1365 struct nfs_server *server; in nfs_volume_list_show() local
1376 server = list_entry(v, struct nfs_server, master_link); in nfs_volume_list_show()
1377 clp = server->nfs_client; in nfs_volume_list_show()
1380 MAJOR(server->s_dev), MINOR(server->s_dev)); in nfs_volume_list_show()
1383 (unsigned long long) server->fsid.major, in nfs_volume_list_show()
1384 (unsigned long long) server->fsid.minor); in nfs_volume_list_show()
1393 nfs_server_fscache_state(server)); in nfs_volume_list_show()