Lines Matching refs:slist
12 void afs_put_serverlist(struct afs_net *net, struct afs_server_list *slist) in afs_put_serverlist() argument
16 if (slist && refcount_dec_and_test(&slist->usage)) { in afs_put_serverlist()
17 for (i = 0; i < slist->nr_servers; i++) in afs_put_serverlist()
18 afs_unuse_server(net, slist->servers[i].server, in afs_put_serverlist()
20 kfree_rcu(slist, rcu); in afs_put_serverlist()
31 struct afs_server_list *slist; in afs_alloc_server_list() local
54 slist = kzalloc(struct_size(slist, servers, nr_servers), GFP_KERNEL); in afs_alloc_server_list()
55 if (!slist) in afs_alloc_server_list()
60 slist->ro_replicating = AFS_RO_REPLICATING_USE_OLD; in afs_alloc_server_list()
62 slist->ro_replicating = AFS_RO_REPLICATING_USE_NEW; in afs_alloc_server_list()
67 refcount_set(&slist->usage, 1); in afs_alloc_server_list()
68 rwlock_init(&slist->lock); in afs_alloc_server_list()
93 for (j = 0; j < slist->nr_servers; j++) in afs_alloc_server_list()
94 if (memcmp(&slist->servers[j].server->uuid, in afs_alloc_server_list()
98 if (j < slist->nr_servers) { in afs_alloc_server_list()
99 if (slist->servers[j].server == server) { in afs_alloc_server_list()
105 memmove(slist->servers + j + 1, in afs_alloc_server_list()
106 slist->servers + j, in afs_alloc_server_list()
107 (slist->nr_servers - j) * sizeof(struct afs_server_entry)); in afs_alloc_server_list()
110 slist->servers[j].server = server; in afs_alloc_server_list()
111 slist->servers[j].volume = volume; in afs_alloc_server_list()
112 slist->servers[j].flags = se_flags; in afs_alloc_server_list()
113 slist->servers[j].cb_expires_at = AFS_NO_CB_PROMISE; in afs_alloc_server_list()
114 slist->nr_servers++; in afs_alloc_server_list()
117 if (slist->nr_servers == 0) { in afs_alloc_server_list()
122 return slist; in afs_alloc_server_list()
125 afs_put_serverlist(volume->cell->net, slist); in afs_alloc_server_list()
157 void afs_attach_volume_to_servers(struct afs_volume *volume, struct afs_server_list *slist) in afs_attach_volume_to_servers() argument
166 for (i = 0; i < slist->nr_servers; i++) { in afs_attach_volume_to_servers()
167 se = &slist->servers[i]; in afs_attach_volume_to_servers()
178 slist->attached = true; in afs_attach_volume_to_servers()
235 void afs_detach_volume_from_servers(struct afs_volume *volume, struct afs_server_list *slist) in afs_detach_volume_from_servers() argument
239 if (!slist->attached) in afs_detach_volume_from_servers()
244 for (i = 0; i < slist->nr_servers; i++) in afs_detach_volume_from_servers()
245 list_del(&slist->servers[i].slink); in afs_detach_volume_from_servers()
247 slist->attached = false; in afs_detach_volume_from_servers()