Lines Matching full:cell
35 * cell->fs_lock.
37 static struct afs_server *afs_find_server_by_uuid(struct afs_cell *cell, const uuid_t *uuid) in afs_find_server_by_uuid() argument
45 p = cell->fs_servers.rb_node; in afs_find_server_by_uuid()
66 * Install a server record in the cell tree. The caller must hold an exclusive
67 * lock on cell->fs_lock.
69 static struct afs_server *afs_install_server(struct afs_cell *cell, in afs_install_server() argument
73 struct afs_net *net = cell->net; in afs_install_server()
80 pp = &cell->fs_servers.rb_node; in afs_install_server()
98 rb_insert_color(&server->uuid_rb, &cell->fs_servers); in afs_install_server()
103 afs_get_cell(cell, afs_cell_trace_get_server); in afs_install_server()
113 static struct afs_server *afs_alloc_server(struct afs_cell *cell, const uuid_t *uuid) in afs_alloc_server() argument
116 struct afs_net *net = cell->net; in afs_alloc_server()
138 server->cell = cell; in afs_alloc_server()
160 if (afs_begin_vlserver_operation(&vc, server->cell, key)) { in afs_vl_lookup_addrs()
178 struct afs_server *afs_lookup_server(struct afs_cell *cell, struct key *key, in afs_lookup_server() argument
186 _enter("%p,%pU", cell->net, uuid); in afs_lookup_server()
188 down_read(&cell->fs_lock); in afs_lookup_server()
189 server = afs_find_server_by_uuid(cell, uuid); in afs_lookup_server()
191 up_read(&cell->fs_lock); in afs_lookup_server()
202 candidate = afs_alloc_server(cell, uuid); in afs_lookup_server()
208 down_write(&cell->fs_lock); in afs_lookup_server()
209 server = afs_install_server(cell, &candidate); in afs_lookup_server()
212 up_write(&cell->fs_lock); in afs_lookup_server()
220 up_write(&cell->fs_lock); in afs_lookup_server()
235 ret = afs_fs_probe_fileserver(cell->net, server, alist, key); in afs_lookup_server()
247 afs_dec_servers_outstanding(cell->net); in afs_lookup_server()
257 afs_put_server(cell->net, server, afs_server_trace_unuse_create_fail); in afs_lookup_server()
266 down_write(&cell->fs_lock); in afs_lookup_server()
278 afs_unuse_server(cell->net, server, afs_server_trace_unuse_create_fail); in afs_lookup_server()
281 up_write(&cell->fs_lock); in afs_lookup_server()
361 READ_ONCE(server->cell->state) >= AFS_CELL_REMOVING) in afs_unuse_server_notime()
379 READ_ONCE(server->cell->state) < AFS_CELL_REMOVING) { in afs_unuse_server()
400 afs_put_cell(server->cell, afs_cell_trace_put_server); in afs_server_rcu()
429 if (server->cell->net->live || in afs_has_server_expired()
430 server->cell->state >= AFS_CELL_REMOVING) { in afs_has_server_expired()
445 * Remove a server record from it's parent cell's database.
449 struct afs_cell *cell = server->cell; in afs_remove_server_from_cell() local
451 down_write(&cell->fs_lock); in afs_remove_server_from_cell()
454 up_write(&cell->fs_lock); in afs_remove_server_from_cell()
461 rb_erase(&server->uuid_rb, &cell->fs_servers); in afs_remove_server_from_cell()
462 up_write(&cell->fs_lock); in afs_remove_server_from_cell()
470 struct afs_net *net = server->cell->net; in afs_server_destroyer()
510 * Wake up all the servers in a cell so that they can purge themselves.
512 void afs_purge_servers(struct afs_cell *cell) in afs_purge_servers() argument
517 down_read(&cell->fs_lock); in afs_purge_servers()
518 for (rb = rb_first(&cell->fs_servers); rb; rb = rb_next(rb)) { in afs_purge_servers()
523 up_read(&cell->fs_lock); in afs_purge_servers()