Lines Matching refs:server

18 static void afs_finished_vl_probe(struct afs_vlserver *server)  in afs_finished_vl_probe()  argument
20 if (!(server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED)) { in afs_finished_vl_probe()
21 server->rtt = UINT_MAX; in afs_finished_vl_probe()
22 clear_bit(AFS_VLSERVER_FL_RESPONDING, &server->flags); in afs_finished_vl_probe()
25 clear_bit_unlock(AFS_VLSERVER_FL_PROBING, &server->flags); in afs_finished_vl_probe()
26 wake_up_bit(&server->flags, AFS_VLSERVER_FL_PROBING); in afs_finished_vl_probe()
32 static void afs_done_one_vl_probe(struct afs_vlserver *server, bool wake_up) in afs_done_one_vl_probe() argument
34 if (atomic_dec_and_test(&server->probe_outstanding)) { in afs_done_one_vl_probe()
35 afs_finished_vl_probe(server); in afs_done_one_vl_probe()
40 wake_up_all(&server->probe_wq); in afs_done_one_vl_probe()
50 struct afs_vlserver *server = call->vlserver; in afs_vlserver_probe_result() local
57 _enter("%s,%u,%u,%d,%d", server->name, server_index, index, ret, call->abort_code); in afs_vlserver_probe_result()
59 spin_lock(&server->probe_lock); in afs_vlserver_probe_result()
63 server->probe.error = 0; in afs_vlserver_probe_result()
66 if (!(server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED)) { in afs_vlserver_probe_result()
67 server->probe.abort_code = call->abort_code; in afs_vlserver_probe_result()
68 server->probe.error = ret; in afs_vlserver_probe_result()
76 server->probe.flags |= AFS_VLSERVER_PROBE_LOCAL_FAILURE; in afs_vlserver_probe_result()
77 if (server->probe.error == 0) in afs_vlserver_probe_result()
78 server->probe.error = ret; in afs_vlserver_probe_result()
93 if (!(server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED) && in afs_vlserver_probe_result()
94 (server->probe.error == 0 || in afs_vlserver_probe_result()
95 server->probe.error == -ETIMEDOUT || in afs_vlserver_probe_result()
96 server->probe.error == -ETIME)) in afs_vlserver_probe_result()
97 server->probe.error = ret; in afs_vlserver_probe_result()
107 server->probe.flags |= AFS_VLSERVER_PROBE_IS_YFS; in afs_vlserver_probe_result()
108 set_bit(AFS_VLSERVER_FL_IS_YFS, &server->flags); in afs_vlserver_probe_result()
111 server->probe.flags |= AFS_VLSERVER_PROBE_NOT_YFS; in afs_vlserver_probe_result()
112 if (!(server->probe.flags & AFS_VLSERVER_PROBE_IS_YFS)) { in afs_vlserver_probe_result()
113 clear_bit(AFS_VLSERVER_FL_IS_YFS, &server->flags); in afs_vlserver_probe_result()
119 if (rtt_us < server->probe.rtt) { in afs_vlserver_probe_result()
120 server->probe.rtt = rtt_us; in afs_vlserver_probe_result()
121 server->rtt = rtt_us; in afs_vlserver_probe_result()
126 server->probe.flags |= AFS_VLSERVER_PROBE_RESPONDED; in afs_vlserver_probe_result()
127 set_bit(AFS_VLSERVER_FL_PROBED, &server->flags); in afs_vlserver_probe_result()
128 set_bit(AFS_VLSERVER_FL_RESPONDING, &server->flags); in afs_vlserver_probe_result()
131 spin_unlock(&server->probe_lock); in afs_vlserver_probe_result()
136 afs_done_one_vl_probe(server, have_result); in afs_vlserver_probe_result()
144 struct afs_vlserver *server, in afs_do_probe_vlserver() argument
155 _enter("%s", server->name); in afs_do_probe_vlserver()
157 read_lock(&server->lock); in afs_do_probe_vlserver()
158 ac.alist = rcu_dereference_protected(server->addresses, in afs_do_probe_vlserver()
159 lockdep_is_held(&server->lock)); in afs_do_probe_vlserver()
160 read_unlock(&server->lock); in afs_do_probe_vlserver()
162 atomic_set(&server->probe_outstanding, ac.alist->nr_addrs); in afs_do_probe_vlserver()
163 memset(&server->probe, 0, sizeof(server->probe)); in afs_do_probe_vlserver()
164 server->probe.rtt = UINT_MAX; in afs_do_probe_vlserver()
167 call = afs_vl_get_capabilities(net, &ac, key, server, in afs_do_probe_vlserver()
174 afs_done_one_vl_probe(server, false); in afs_do_probe_vlserver()
187 struct afs_vlserver *server; in afs_send_vl_probes() local
195 server = vllist->servers[i].server; in afs_send_vl_probes()
196 if (test_bit(AFS_VLSERVER_FL_PROBED, &server->flags)) in afs_send_vl_probes()
199 if (!test_and_set_bit_lock(AFS_VLSERVER_FL_PROBING, &server->flags) && in afs_send_vl_probes()
200 afs_do_probe_vlserver(net, server, key, i, &e)) in afs_send_vl_probes()
214 struct afs_vlserver *server; in afs_wait_for_vl_probes() local
224 server = vllist->servers[i].server; in afs_wait_for_vl_probes()
225 if (!test_bit(AFS_VLSERVER_FL_PROBING, &server->flags)) in afs_wait_for_vl_probes()
227 if (server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED) in afs_wait_for_vl_probes()
240 server = vllist->servers[i].server; in afs_wait_for_vl_probes()
242 add_wait_queue(&server->probe_wq, &waits[i]); in afs_wait_for_vl_probes()
252 server = vllist->servers[i].server; in afs_wait_for_vl_probes()
253 if (server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED) in afs_wait_for_vl_probes()
255 if (test_bit(AFS_VLSERVER_FL_PROBING, &server->flags)) in afs_wait_for_vl_probes()
270 server = vllist->servers[i].server; in afs_wait_for_vl_probes()
271 rtt_s = READ_ONCE(server->rtt); in afs_wait_for_vl_probes()
272 if (test_bit(AFS_VLSERVER_FL_RESPONDING, &server->flags) && in afs_wait_for_vl_probes()
278 remove_wait_queue(&server->probe_wq, &waits[i]); in afs_wait_for_vl_probes()