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
245 afs_inc_servers_outstanding(net); in afs_alloc_server()
289 _enter("%p,%pU", cell->net, uuid); in afs_lookup_server()
291 server = afs_find_server_by_uuid(cell->net, uuid); in afs_lookup_server()
317 afs_fs_probe_fileserver(cell->net, server, key, true); in afs_lookup_server()
327 static void afs_set_server_timer(struct afs_net *net, time64_t delay) in afs_set_server_timer() argument
329 if (net->live) { in afs_set_server_timer()
330 afs_inc_servers_outstanding(net); in afs_set_server_timer()
331 if (timer_reduce(&net->fs_timer, jiffies + delay * HZ)) in afs_set_server_timer()
332 afs_dec_servers_outstanding(net); in afs_set_server_timer()
342 struct afs_net *net = container_of(timer, struct afs_net, fs_timer); in afs_servers_timer() local
345 if (!queue_work(afs_wq, &net->fs_manager)) in afs_servers_timer()
346 afs_dec_servers_outstanding(net); in afs_servers_timer()
393 void afs_put_server(struct afs_net *net, struct afs_server *server, in afs_put_server() argument
404 __afs_put_server(net, server); in afs_put_server()
411 void afs_unuse_server_notime(struct afs_net *net, struct afs_server *server, in afs_unuse_server_notime() argument
418 afs_set_server_timer(net, afs_server_gc_delay); in afs_unuse_server_notime()
419 afs_put_server(net, server, reason); in afs_unuse_server_notime()
426 void afs_unuse_server(struct afs_net *net, struct afs_server *server, in afs_unuse_server() argument
431 afs_unuse_server_notime(net, server, reason); in afs_unuse_server()
445 static void __afs_put_server(struct afs_net *net, struct afs_server *server) in __afs_put_server() argument
448 afs_dec_servers_outstanding(net); in __afs_put_server()
451 static void afs_give_up_callbacks(struct afs_net *net, struct afs_server *server) in afs_give_up_callbacks() argument
460 afs_fs_give_up_all_callbacks(net, server, &ac, NULL); in afs_give_up_callbacks()
466 static void afs_destroy_server(struct afs_net *net, struct afs_server *server) in afs_destroy_server() argument
469 afs_give_up_callbacks(net, server); in afs_destroy_server()
472 afs_put_server(net, server, afs_server_trace_destroy); in afs_destroy_server()
478 static void afs_gc_servers(struct afs_net *net, struct afs_server *gc_list) in afs_gc_servers() argument
486 write_seqlock(&net->fs_lock); in afs_gc_servers()
493 server->uuid_next, lockdep_is_held(&net->fs_lock.lock)); in afs_gc_servers()
498 rb_erase(&server->uuid_rb, &net->fs_servers); in afs_gc_servers()
502 &net->fs_servers); in afs_gc_servers()
519 write_sequnlock(&net->fs_lock); in afs_gc_servers()
522 afs_destroy_server(net, server); in afs_gc_servers()
535 struct afs_net *net = container_of(work, struct afs_net, fs_manager); in afs_manage_servers() local
539 bool purging = !net->live; in afs_manage_servers()
546 read_seqlock_excl(&net->fs_lock); in afs_manage_servers()
548 for (cursor = rb_first(&net->fs_servers); cursor; cursor = rb_next(cursor)) { in afs_manage_servers()
577 read_sequnlock_excl(&net->fs_lock); in afs_manage_servers()
587 if (queue_work(afs_wq, &net->fs_manager)) in afs_manage_servers()
588 afs_inc_servers_outstanding(net); in afs_manage_servers()
590 afs_set_server_timer(net, next_manage - now); in afs_manage_servers()
594 afs_gc_servers(net, gc_list); in afs_manage_servers()
596 afs_dec_servers_outstanding(net); in afs_manage_servers()
597 _leave(" [%d]", atomic_read(&net->servers_outstanding)); in afs_manage_servers()
600 static void afs_queue_server_manager(struct afs_net *net) in afs_queue_server_manager() argument
602 afs_inc_servers_outstanding(net); in afs_queue_server_manager()
603 if (!queue_work(afs_wq, &net->fs_manager)) in afs_queue_server_manager()
604 afs_dec_servers_outstanding(net); in afs_queue_server_manager()
610 void afs_purge_servers(struct afs_net *net) in afs_purge_servers() argument
614 if (del_timer_sync(&net->fs_timer)) in afs_purge_servers()
615 afs_dec_servers_outstanding(net); in afs_purge_servers()
617 afs_queue_server_manager(net); in afs_purge_servers()
620 atomic_dec(&net->servers_outstanding); in afs_purge_servers()
621 wait_var_event(&net->servers_outstanding, in afs_purge_servers()
622 !atomic_read(&net->servers_outstanding)); in afs_purge_servers()