Lines Matching full:server
56 * outstanding server count.
59 struct afs_server *server, bool fast) in afs_schedule_fs_probe() argument
66 atj = server->probed_at; in afs_schedule_fs_probe()
77 static void afs_finished_fs_probe(struct afs_net *net, struct afs_server *server, in afs_finished_fs_probe() argument
84 list_add_tail(&server->probe_link, &net->fs_probe_slow); in afs_finished_fs_probe()
86 server->rtt = UINT_MAX; in afs_finished_fs_probe()
87 clear_bit(AFS_SERVER_FL_RESPONDING, &server->flags); in afs_finished_fs_probe()
88 list_add_tail(&server->probe_link, &net->fs_probe_fast); in afs_finished_fs_probe()
93 afs_schedule_fs_probe(net, server, !responded); in afs_finished_fs_probe()
99 static void afs_done_one_fs_probe(struct afs_net *net, struct afs_server *server, in afs_done_one_fs_probe() argument
105 afs_finished_fs_probe(net, server, estate); in afs_done_one_fs_probe()
107 wake_up_all(&server->probe_wq); in afs_done_one_fs_probe()
115 struct afs_server *server, in afs_fs_probe_not_done() argument
122 spin_lock(&server->probe_lock); in afs_fs_probe_not_done()
130 spin_unlock(&server->probe_lock); in afs_fs_probe_not_done()
131 return afs_done_one_fs_probe(net, server, estate); in afs_fs_probe_not_done()
143 struct afs_server *server = call->server; in afs_fileserver_probe_result() local
148 _enter("%pU,%u", &server->uuid, index); in afs_fileserver_probe_result()
152 spin_lock(&server->probe_lock); in afs_fileserver_probe_result()
196 set_bit(AFS_SERVER_FL_IS_YFS, &server->flags); in afs_fileserver_probe_result()
197 server->service_id = call->service_id; in afs_fileserver_probe_result()
201 clear_bit(AFS_SERVER_FL_IS_YFS, &server->flags); in afs_fileserver_probe_result()
202 server->service_id = call->service_id; in afs_fileserver_probe_result()
206 set_bit(AFS_SERVER_FL_HAS_FS64, &server->flags); in afs_fileserver_probe_result()
208 clear_bit(AFS_SERVER_FL_HAS_FS64, &server->flags); in afs_fileserver_probe_result()
214 server->rtt = rtt_us; in afs_fileserver_probe_result()
221 set_bit(AFS_SERVER_FL_RESPONDING, &server->flags); in afs_fileserver_probe_result()
223 spin_unlock(&server->probe_lock); in afs_fileserver_probe_result()
225 trace_afs_fs_probe(server, false, estate, index, call->error, call->abort_code, rtt_us); in afs_fileserver_probe_result()
227 estate->probe_seq, &server->uuid, index, in afs_fileserver_probe_result()
231 return afs_done_one_fs_probe(call->net, server, estate); in afs_fileserver_probe_result()
238 int afs_fs_probe_fileserver(struct afs_net *net, struct afs_server *server, in afs_fs_probe_fileserver() argument
245 _enter("%pU", &server->uuid); in afs_fs_probe_fileserver()
252 estate->server_id = server->debug_id; in afs_fs_probe_fileserver()
255 write_lock(&server->fs_lock); in afs_fs_probe_fileserver()
257 old = rcu_dereference_protected(server->endpoint_state, in afs_fs_probe_fileserver()
258 lockdep_is_held(&server->fs_lock)); in afs_fs_probe_fileserver()
266 afs_set_peer_appdata(server, old_alist, new_alist); in afs_fs_probe_fileserver()
270 estate->probe_seq = ++server->probe_counter; in afs_fs_probe_fileserver()
274 server->addr_version = new_alist->version; in afs_fs_probe_fileserver()
275 rcu_assign_pointer(server->endpoint_state, estate); in afs_fs_probe_fileserver()
276 write_unlock(&server->fs_lock); in afs_fs_probe_fileserver()
285 server->probed_at = jiffies; in afs_fs_probe_fileserver()
300 trace_afs_fs_probe(server, true, estate, index, 0, 0, 0); in afs_fs_probe_fileserver()
301 if (!afs_fs_get_capabilities(net, server, estate, index, key)) in afs_fs_probe_fileserver()
302 afs_fs_probe_not_done(net, server, estate, index); in afs_fs_probe_fileserver()
336 add_wait_queue(&slist->servers[i].server->probe_wq, &states[i].probe_waiter); in afs_wait_for_fs_probes()
365 remove_wait_queue(&slist->servers[i].server->probe_wq, &states[i].probe_waiter); in afs_wait_for_fs_probes()
385 * Dispatch a probe to a server.
387 static void afs_dispatch_fs_probe(struct afs_net *net, struct afs_server *server) in afs_dispatch_fs_probe() argument
395 list_del_init(&server->probe_link); in afs_dispatch_fs_probe()
397 afs_get_server(server, afs_server_trace_get_probe); in afs_dispatch_fs_probe()
400 afs_fs_probe_fileserver(net, server, NULL, key); in afs_dispatch_fs_probe()
401 afs_put_server(net, server, afs_server_trace_put_probe); in afs_dispatch_fs_probe()
405 * Probe a server immediately without waiting for its due time to come
408 void afs_probe_fileserver(struct afs_net *net, struct afs_server *server) in afs_probe_fileserver() argument
411 if (!list_empty(&server->probe_link)) in afs_probe_fileserver()
412 return afs_dispatch_fs_probe(net, server); in afs_probe_fileserver()
422 struct afs_server *fast, *slow, *server; in afs_fs_probe_dispatcher() local
442 fast = slow = server = NULL; in afs_fs_probe_dispatcher()
467 server = fast ?: slow; in afs_fs_probe_dispatcher()
468 if (server) in afs_fs_probe_dispatcher()
469 _debug("probe %pU", &server->uuid); in afs_fs_probe_dispatcher()
471 if (server && (first_pass || !need_resched())) { in afs_fs_probe_dispatcher()
472 afs_dispatch_fs_probe(net, server); in afs_fs_probe_dispatcher()
479 if (server) { in afs_fs_probe_dispatcher()
496 int afs_wait_for_one_fs_probe(struct afs_server *server, struct afs_endpoint_state *estate, in afs_wait_for_one_fs_probe() argument
507 prepare_to_wait_event(&server->probe_wq, &wait, in afs_wait_for_one_fs_probe()
518 finish_wait(&server->probe_wq, &wait); in afs_wait_for_one_fs_probe()