Lines Matching refs:server

18 static void afs_finished_vl_probe(struct afs_vlserver *server)
20 if (!(server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED)) {
21 server->rtt = UINT_MAX;
22 clear_bit(AFS_VLSERVER_FL_RESPONDING, &server->flags);
25 clear_bit_unlock(AFS_VLSERVER_FL_PROBING, &server->flags);
26 wake_up_bit(&server->flags, AFS_VLSERVER_FL_PROBING);
32 static void afs_done_one_vl_probe(struct afs_vlserver *server, bool wake_up)
34 if (atomic_dec_and_test(&server->probe_outstanding)) {
35 afs_finished_vl_probe(server);
40 wake_up_all(&server->probe_wq);
50 struct afs_vlserver *server = call->vlserver;
58 _enter("%s,%u,%u,%d,%d", server->name, server_index, index, ret, call->abort_code);
60 spin_lock(&server->probe_lock);
64 server->probe.error = 0;
67 if (!(server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED)) {
68 server->probe.abort_code = call->abort_code;
69 server->probe.error = ret;
77 server->probe.flags |= AFS_VLSERVER_PROBE_LOCAL_FAILURE;
78 if (server->probe.error == 0)
79 server->probe.error = ret;
94 if (!(server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED) &&
95 (server->probe.error == 0 ||
96 server->probe.error == -ETIMEDOUT ||
97 server->probe.error == -ETIME))
98 server->probe.error = ret;
108 server->probe.flags |= AFS_VLSERVER_PROBE_IS_YFS;
109 set_bit(AFS_VLSERVER_FL_IS_YFS, &server->flags);
110 server->service_id = call->service_id;
112 server->probe.flags |= AFS_VLSERVER_PROBE_NOT_YFS;
113 if (!(server->probe.flags & AFS_VLSERVER_PROBE_IS_YFS)) {
114 clear_bit(AFS_VLSERVER_FL_IS_YFS, &server->flags);
115 server->service_id = call->service_id;
120 if (rtt_us < server->probe.rtt) {
121 server->probe.rtt = rtt_us;
122 server->rtt = rtt_us;
127 server->probe.flags |= AFS_VLSERVER_PROBE_RESPONDED;
128 set_bit(AFS_VLSERVER_FL_PROBED, &server->flags);
129 set_bit(AFS_VLSERVER_FL_RESPONDING, &server->flags);
132 spin_unlock(&server->probe_lock);
134 trace_afs_vl_probe(server, false, alist, index, call->error, call->abort_code, rtt_us);
139 afs_done_one_vl_probe(server, have_result);
147 struct afs_vlserver *server,
159 _enter("%s", server->name);
161 read_lock(&server->lock);
162 alist = rcu_dereference_protected(server->addresses,
163 lockdep_is_held(&server->lock));
165 read_unlock(&server->lock);
167 atomic_set(&server->probe_outstanding, alist->nr_addrs);
168 memset(&server->probe, 0, sizeof(server->probe));
169 server->probe.rtt = UINT_MAX;
184 trace_afs_vl_probe(server, true, alist, index, 0, 0, 0);
185 call = afs_vl_get_capabilities(net, alist, index, key, server,
193 afs_done_one_vl_probe(server, false);
207 struct afs_vlserver *server;
213 server = vllist->servers[i].server;
214 if (test_bit(AFS_VLSERVER_FL_PROBED, &server->flags))
217 if (!test_and_set_bit_lock(AFS_VLSERVER_FL_PROBING, &server->flags) &&
218 afs_do_probe_vlserver(net, server, key, i, &e))
226 * Wait for the first as-yet untried server to respond.
232 struct afs_vlserver *server;
242 server = vllist->servers[i].server;
243 if (!test_bit(AFS_VLSERVER_FL_PROBING, &server->flags))
245 if (server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED)
258 server = vllist->servers[i].server;
260 add_wait_queue(&server->probe_wq, &waits[i]);
270 server = vllist->servers[i].server;
271 if (server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED)
273 if (test_bit(AFS_VLSERVER_FL_PROBING, &server->flags))
288 server = vllist->servers[i].server;
289 rtt_s = READ_ONCE(server->rtt);
290 if (test_bit(AFS_VLSERVER_FL_RESPONDING, &server->flags) &&
296 remove_wait_queue(&server->probe_wq, &waits[i]);