Lines Matching refs:net
24 struct afs_server *afs_find_server(struct afs_net *net, in afs_find_server() argument
36 afs_unuse_server_notime(net, server, afs_server_trace_put_find_rsq); in afs_find_server()
38 read_seqbegin_or_lock(&net->fs_addr_lock, &seq); in afs_find_server()
42 hlist_for_each_entry_rcu(server, &net->fs_addresses6, addr6_link) { in afs_find_server()
58 hlist_for_each_entry_rcu(server, &net->fs_addresses4, addr4_link) { in afs_find_server()
78 } while (need_seqretry(&net->fs_addr_lock, seq)); in afs_find_server()
80 done_seqretry(&net->fs_addr_lock, seq); in afs_find_server()
89 struct afs_server *afs_find_server_by_uuid(struct afs_net *net, const uuid_t *uuid) in afs_find_server_by_uuid() argument
103 afs_unuse_server(net, server, afs_server_trace_put_uuid_rsq); in afs_find_server_by_uuid()
106 read_seqbegin_or_lock(&net->fs_lock, &seq); in afs_find_server_by_uuid()
108 p = net->fs_servers.rb_node; in afs_find_server_by_uuid()
124 } while (need_seqretry(&net->fs_lock, seq)); in afs_find_server_by_uuid()
126 done_seqretry(&net->fs_lock, seq); in afs_find_server_by_uuid()
142 struct afs_net *net = cell->net; in afs_install_server() local
148 write_seqlock(&net->fs_lock); in afs_install_server()
151 pp = &net->fs_servers.rb_node; in afs_install_server()
172 lockdep_is_held(&net->fs_lock.lock)); in afs_install_server()
186 rb_insert_color(&server->uuid_rb, &net->fs_servers); in afs_install_server()
187 hlist_add_head_rcu(&server->proc_link, &net->fs_proc); in afs_install_server()
190 write_seqlock(&net->fs_addr_lock); in afs_install_server()
192 lockdep_is_held(&net->fs_addr_lock.lock)); in afs_install_server()
203 hlist_add_head_rcu(&server->addr4_link, &net->fs_addresses4); in afs_install_server()
205 hlist_add_head_rcu(&server->addr6_link, &net->fs_addresses6); in afs_install_server()
207 write_sequnlock(&net->fs_addr_lock); in afs_install_server()
211 write_sequnlock(&net->fs_lock); in afs_install_server()
223 struct afs_net *net = cell->net; in afs_alloc_server() local
244 afs_inc_servers_outstanding(net); in afs_alloc_server()
288 _enter("%p,%pU", cell->net, uuid); in afs_lookup_server()
290 server = afs_find_server_by_uuid(cell->net, uuid); in afs_lookup_server()
316 afs_fs_probe_fileserver(cell->net, server, key, true); in afs_lookup_server()
326 static void afs_set_server_timer(struct afs_net *net, time64_t delay) in afs_set_server_timer() argument
328 if (net->live) { in afs_set_server_timer()
329 afs_inc_servers_outstanding(net); in afs_set_server_timer()
330 if (timer_reduce(&net->fs_timer, jiffies + delay * HZ)) in afs_set_server_timer()
331 afs_dec_servers_outstanding(net); in afs_set_server_timer()
341 struct afs_net *net = container_of(timer, struct afs_net, fs_timer); in afs_servers_timer() local
344 if (!queue_work(afs_wq, &net->fs_manager)) in afs_servers_timer()
345 afs_dec_servers_outstanding(net); in afs_servers_timer()
392 void afs_put_server(struct afs_net *net, struct afs_server *server, in afs_put_server() argument
403 __afs_put_server(net, server); in afs_put_server()
410 void afs_unuse_server_notime(struct afs_net *net, struct afs_server *server, in afs_unuse_server_notime() argument
417 afs_set_server_timer(net, afs_server_gc_delay); in afs_unuse_server_notime()
418 afs_put_server(net, server, reason); in afs_unuse_server_notime()
425 void afs_unuse_server(struct afs_net *net, struct afs_server *server, in afs_unuse_server() argument
430 afs_unuse_server_notime(net, server, reason); in afs_unuse_server()
444 static void __afs_put_server(struct afs_net *net, struct afs_server *server) in __afs_put_server() argument
447 afs_dec_servers_outstanding(net); in __afs_put_server()
450 static void afs_give_up_callbacks(struct afs_net *net, struct afs_server *server) in afs_give_up_callbacks() argument
459 afs_fs_give_up_all_callbacks(net, server, &ac, NULL); in afs_give_up_callbacks()
465 static void afs_destroy_server(struct afs_net *net, struct afs_server *server) in afs_destroy_server() argument
468 afs_give_up_callbacks(net, server); in afs_destroy_server()
470 afs_put_server(net, server, afs_server_trace_destroy); in afs_destroy_server()
476 static void afs_gc_servers(struct afs_net *net, struct afs_server *gc_list) in afs_gc_servers() argument
484 write_seqlock(&net->fs_lock); in afs_gc_servers()
491 server->uuid_next, lockdep_is_held(&net->fs_lock.lock)); in afs_gc_servers()
496 rb_erase(&server->uuid_rb, &net->fs_servers); in afs_gc_servers()
500 &net->fs_servers); in afs_gc_servers()
517 write_sequnlock(&net->fs_lock); in afs_gc_servers()
520 afs_destroy_server(net, server); in afs_gc_servers()
533 struct afs_net *net = container_of(work, struct afs_net, fs_manager); in afs_manage_servers() local
537 bool purging = !net->live; in afs_manage_servers()
544 read_seqlock_excl(&net->fs_lock); in afs_manage_servers()
546 for (cursor = rb_first(&net->fs_servers); cursor; cursor = rb_next(cursor)) { in afs_manage_servers()
575 read_sequnlock_excl(&net->fs_lock); in afs_manage_servers()
585 if (queue_work(afs_wq, &net->fs_manager)) in afs_manage_servers()
586 afs_inc_servers_outstanding(net); in afs_manage_servers()
588 afs_set_server_timer(net, next_manage - now); in afs_manage_servers()
592 afs_gc_servers(net, gc_list); in afs_manage_servers()
594 afs_dec_servers_outstanding(net); in afs_manage_servers()
595 _leave(" [%d]", atomic_read(&net->servers_outstanding)); in afs_manage_servers()
598 static void afs_queue_server_manager(struct afs_net *net) in afs_queue_server_manager() argument
600 afs_inc_servers_outstanding(net); in afs_queue_server_manager()
601 if (!queue_work(afs_wq, &net->fs_manager)) in afs_queue_server_manager()
602 afs_dec_servers_outstanding(net); in afs_queue_server_manager()
608 void afs_purge_servers(struct afs_net *net) in afs_purge_servers() argument
612 if (del_timer_sync(&net->fs_timer)) in afs_purge_servers()
613 afs_dec_servers_outstanding(net); in afs_purge_servers()
615 afs_queue_server_manager(net); in afs_purge_servers()
618 atomic_dec(&net->servers_outstanding); in afs_purge_servers()
619 wait_var_event(&net->servers_outstanding, in afs_purge_servers()
620 !atomic_read(&net->servers_outstanding)); in afs_purge_servers()