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;
57 _enter("%s,%u,%u,%d,%d", server->name, server_index, index, ret, call->abort_code);
59 spin_lock(&server->probe_lock);
63 server->probe.error = 0;
66 if (!(server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED)) {
67 server->probe.abort_code = call->abort_code;
68 server->probe.error = ret;
76 server->probe.flags |= AFS_VLSERVER_PROBE_LOCAL_FAILURE;
77 if (server->probe.error == 0)
78 server->probe.error = ret;
93 if (!(server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED) &&
94 (server->probe.error == 0 ||
95 server->probe.error == -ETIMEDOUT ||
96 server->probe.error == -ETIME))
97 server->probe.error = ret;
107 server->probe.flags |= AFS_VLSERVER_PROBE_IS_YFS;
108 set_bit(AFS_VLSERVER_FL_IS_YFS, &server->flags);
111 server->probe.flags |= AFS_VLSERVER_PROBE_NOT_YFS;
112 if (!(server->probe.flags & AFS_VLSERVER_PROBE_IS_YFS)) {
113 clear_bit(AFS_VLSERVER_FL_IS_YFS, &server->flags);
119 if (rtt_us < server->probe.rtt) {
120 server->probe.rtt = rtt_us;
121 server->rtt = rtt_us;
126 server->probe.flags |= AFS_VLSERVER_PROBE_RESPONDED;
127 set_bit(AFS_VLSERVER_FL_PROBED, &server->flags);
128 set_bit(AFS_VLSERVER_FL_RESPONDING, &server->flags);
131 spin_unlock(&server->probe_lock);
136 afs_done_one_vl_probe(server, have_result);
144 struct afs_vlserver *server,
155 _enter("%s", server->name);
157 read_lock(&server->lock);
158 ac.alist = rcu_dereference_protected(server->addresses,
159 lockdep_is_held(&server->lock));
160 read_unlock(&server->lock);
162 atomic_set(&server->probe_outstanding, ac.alist->nr_addrs);
163 memset(&server->probe, 0, sizeof(server->probe));
164 server->probe.rtt = UINT_MAX;
167 call = afs_vl_get_capabilities(net, &ac, key, server,
174 afs_done_one_vl_probe(server, false);
187 struct afs_vlserver *server;
195 server = vllist->servers[i].server;
196 if (test_bit(AFS_VLSERVER_FL_PROBED, &server->flags))
199 if (!test_and_set_bit_lock(AFS_VLSERVER_FL_PROBING, &server->flags) &&
200 afs_do_probe_vlserver(net, server, key, i, &e))
208 * Wait for the first as-yet untried server to respond.
214 struct afs_vlserver *server;
224 server = vllist->servers[i].server;
225 if (!test_bit(AFS_VLSERVER_FL_PROBING, &server->flags))
227 if (server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED)
240 server = vllist->servers[i].server;
242 add_wait_queue(&server->probe_wq, &waits[i]);
252 server = vllist->servers[i].server;
253 if (server->probe.flags & AFS_VLSERVER_PROBE_RESPONDED)
255 if (test_bit(AFS_VLSERVER_FL_PROBING, &server->flags))
270 server = vllist->servers[i].server;
271 rtt_s = READ_ONCE(server->rtt);
272 if (test_bit(AFS_VLSERVER_FL_RESPONDING, &server->flags) &&
278 remove_wait_queue(&server->probe_wq, &waits[i]);