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()
137 server->cell = cell; in afs_alloc_server()
159 if (afs_begin_vlserver_operation(&vc, server->cell, key)) { in afs_vl_lookup_addrs()
177 struct afs_server *afs_lookup_server(struct afs_cell *cell, struct key *key, in afs_lookup_server() argument
185 _enter("%p,%pU", cell->net, uuid); in afs_lookup_server()
187 down_read(&cell->fs_lock); in afs_lookup_server()
188 server = afs_find_server_by_uuid(cell, uuid); in afs_lookup_server()
190 up_read(&cell->fs_lock); in afs_lookup_server()
201 candidate = afs_alloc_server(cell, uuid); in afs_lookup_server()
207 down_write(&cell->fs_lock); in afs_lookup_server()
208 server = afs_install_server(cell, &candidate); in afs_lookup_server()
211 up_write(&cell->fs_lock); in afs_lookup_server()
219 up_write(&cell->fs_lock); in afs_lookup_server()
234 ret = afs_fs_probe_fileserver(cell->net, server, alist, key); in afs_lookup_server()
246 afs_dec_servers_outstanding(cell->net); in afs_lookup_server()
256 afs_put_server(cell->net, server, afs_server_trace_unuse_create_fail); in afs_lookup_server()
265 down_write(&cell->fs_lock); in afs_lookup_server()
277 afs_unuse_server(cell->net, server, afs_server_trace_unuse_create_fail); in afs_lookup_server()
280 up_write(&cell->fs_lock); in afs_lookup_server()
359 READ_ONCE(server->cell->state) >= AFS_CELL_REMOVING) in afs_unuse_server_notime()
377 READ_ONCE(server->cell->state) < AFS_CELL_REMOVING) { in afs_unuse_server()
398 afs_put_cell(server->cell, afs_cell_trace_put_server); in afs_server_rcu()
426 if (server->cell->net->live || in afs_has_server_expired()
427 server->cell->state >= AFS_CELL_REMOVING) { in afs_has_server_expired()
442 * Remove a server record from it's parent cell's database.
446 struct afs_cell *cell = server->cell; in afs_remove_server_from_cell() local
448 down_write(&cell->fs_lock); in afs_remove_server_from_cell()
451 up_write(&cell->fs_lock); in afs_remove_server_from_cell()
458 rb_erase(&server->uuid_rb, &cell->fs_servers); in afs_remove_server_from_cell()
459 up_write(&cell->fs_lock); in afs_remove_server_from_cell()
467 struct afs_net *net = server->cell->net; in afs_server_destroyer()
507 * Wake up all the servers in a cell so that they can purge themselves.
509 void afs_purge_servers(struct afs_cell *cell) in afs_purge_servers() argument
514 down_read(&cell->fs_lock); in afs_purge_servers()
515 for (rb = rb_first(&cell->fs_servers); rb; rb = rb_next(rb)) { in afs_purge_servers()
520 up_read(&cell->fs_lock); in afs_purge_servers()