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()
39 read_seqbegin_or_lock(&net->fs_addr_lock, &seq); in afs_find_server()
43 hlist_for_each_entry_rcu(server, &net->fs_addresses6, addr6_link) { in afs_find_server()
59 hlist_for_each_entry_rcu(server, &net->fs_addresses4, addr4_link) { in afs_find_server()
79 } while (need_seqretry(&net->fs_addr_lock, seq)); in afs_find_server()
81 done_seqretry(&net->fs_addr_lock, seq); in afs_find_server()
90 struct afs_server *afs_find_server_by_uuid(struct afs_net *net, const uuid_t *uuid) in afs_find_server_by_uuid() argument
104 afs_unuse_server(net, server, afs_server_trace_put_uuid_rsq); in afs_find_server_by_uuid()
107 read_seqbegin_or_lock(&net->fs_lock, &seq); in afs_find_server_by_uuid()
109 p = net->fs_servers.rb_node; in afs_find_server_by_uuid()
125 } while (need_seqretry(&net->fs_lock, seq)); in afs_find_server_by_uuid()
127 done_seqretry(&net->fs_lock, seq); in afs_find_server_by_uuid()
143 struct afs_net *net = cell->net; in afs_install_server() local
149 write_seqlock(&net->fs_lock); in afs_install_server()
152 pp = &net->fs_servers.rb_node; in afs_install_server()
173 lockdep_is_held(&net->fs_lock.lock)); in afs_install_server()
187 rb_insert_color(&server->uuid_rb, &net->fs_servers); in afs_install_server()
188 hlist_add_head_rcu(&server->proc_link, &net->fs_proc); in afs_install_server()
191 write_seqlock(&net->fs_addr_lock); in afs_install_server()
193 lockdep_is_held(&net->fs_addr_lock.lock)); in afs_install_server()
204 hlist_add_head_rcu(&server->addr4_link, &net->fs_addresses4); in afs_install_server()
206 hlist_add_head_rcu(&server->addr6_link, &net->fs_addresses6); in afs_install_server()
208 write_sequnlock(&net->fs_addr_lock); in afs_install_server()
212 write_sequnlock(&net->fs_lock); in afs_install_server()
224 struct afs_net *net = cell->net; in afs_alloc_server() local
246 afs_inc_servers_outstanding(net); in afs_alloc_server()
290 _enter("%p,%pU", cell->net, uuid); in afs_lookup_server()
292 server = afs_find_server_by_uuid(cell->net, uuid); in afs_lookup_server()
318 afs_fs_probe_fileserver(cell->net, server, key, true); in afs_lookup_server()
328 static void afs_set_server_timer(struct afs_net *net, time64_t delay) in afs_set_server_timer() argument
330 if (net->live) { in afs_set_server_timer()
331 afs_inc_servers_outstanding(net); in afs_set_server_timer()
332 if (timer_reduce(&net->fs_timer, jiffies + delay * HZ)) in afs_set_server_timer()
333 afs_dec_servers_outstanding(net); in afs_set_server_timer()
343 struct afs_net *net = container_of(timer, struct afs_net, fs_timer); in afs_servers_timer() local
346 if (!queue_work(afs_wq, &net->fs_manager)) in afs_servers_timer()
347 afs_dec_servers_outstanding(net); in afs_servers_timer()
398 void afs_put_server(struct afs_net *net, struct afs_server *server, in afs_put_server() argument
410 __afs_put_server(net, server); in afs_put_server()
417 void afs_unuse_server_notime(struct afs_net *net, struct afs_server *server, in afs_unuse_server_notime() argument
424 afs_set_server_timer(net, afs_server_gc_delay); in afs_unuse_server_notime()
425 afs_put_server(net, server, reason); in afs_unuse_server_notime()
432 void afs_unuse_server(struct afs_net *net, struct afs_server *server, in afs_unuse_server() argument
437 afs_unuse_server_notime(net, server, reason); in afs_unuse_server()
451 static void __afs_put_server(struct afs_net *net, struct afs_server *server) in __afs_put_server() argument
454 afs_dec_servers_outstanding(net); in __afs_put_server()
457 static void afs_give_up_callbacks(struct afs_net *net, struct afs_server *server) in afs_give_up_callbacks() argument
466 afs_fs_give_up_all_callbacks(net, server, &ac, NULL); in afs_give_up_callbacks()
472 static void afs_destroy_server(struct afs_net *net, struct afs_server *server) in afs_destroy_server() argument
475 afs_give_up_callbacks(net, server); in afs_destroy_server()
478 afs_put_server(net, server, afs_server_trace_destroy); in afs_destroy_server()
484 static void afs_gc_servers(struct afs_net *net, struct afs_server *gc_list) in afs_gc_servers() argument
492 write_seqlock(&net->fs_lock); in afs_gc_servers()
499 server->uuid_next, lockdep_is_held(&net->fs_lock.lock)); in afs_gc_servers()
504 rb_erase(&server->uuid_rb, &net->fs_servers); in afs_gc_servers()
508 &net->fs_servers); in afs_gc_servers()
525 write_sequnlock(&net->fs_lock); in afs_gc_servers()
528 afs_destroy_server(net, server); in afs_gc_servers()
541 struct afs_net *net = container_of(work, struct afs_net, fs_manager); in afs_manage_servers() local
545 bool purging = !net->live; in afs_manage_servers()
552 read_seqlock_excl(&net->fs_lock); in afs_manage_servers()
554 for (cursor = rb_first(&net->fs_servers); cursor; cursor = rb_next(cursor)) { in afs_manage_servers()
583 read_sequnlock_excl(&net->fs_lock); in afs_manage_servers()
593 if (queue_work(afs_wq, &net->fs_manager)) in afs_manage_servers()
594 afs_inc_servers_outstanding(net); in afs_manage_servers()
596 afs_set_server_timer(net, next_manage - now); in afs_manage_servers()
600 afs_gc_servers(net, gc_list); in afs_manage_servers()
602 afs_dec_servers_outstanding(net); in afs_manage_servers()
603 _leave(" [%d]", atomic_read(&net->servers_outstanding)); in afs_manage_servers()
606 static void afs_queue_server_manager(struct afs_net *net) in afs_queue_server_manager() argument
608 afs_inc_servers_outstanding(net); in afs_queue_server_manager()
609 if (!queue_work(afs_wq, &net->fs_manager)) in afs_queue_server_manager()
610 afs_dec_servers_outstanding(net); in afs_queue_server_manager()
616 void afs_purge_servers(struct afs_net *net) in afs_purge_servers() argument
620 if (del_timer_sync(&net->fs_timer)) in afs_purge_servers()
621 afs_dec_servers_outstanding(net); in afs_purge_servers()
623 afs_queue_server_manager(net); in afs_purge_servers()
626 atomic_dec(&net->servers_outstanding); in afs_purge_servers()
627 wait_var_event(&net->servers_outstanding, in afs_purge_servers()
628 !atomic_read(&net->servers_outstanding)); in afs_purge_servers()