Lines Matching refs:vllist
53 struct afs_vlserver_list *vllist; in afs_alloc_vlserver_list() local
55 vllist = kzalloc(struct_size(vllist, servers, nr_servers), GFP_KERNEL); in afs_alloc_vlserver_list()
56 if (vllist) { in afs_alloc_vlserver_list()
57 atomic_set(&vllist->usage, 1); in afs_alloc_vlserver_list()
58 rwlock_init(&vllist->lock); in afs_alloc_vlserver_list()
61 return vllist; in afs_alloc_vlserver_list()
64 void afs_put_vlserverlist(struct afs_net *net, struct afs_vlserver_list *vllist) in afs_put_vlserverlist() argument
66 if (vllist) { in afs_put_vlserverlist()
67 unsigned int u = atomic_dec_return(&vllist->usage); in afs_put_vlserverlist()
73 for (i = 0; i < vllist->nr_servers; i++) { in afs_put_vlserverlist()
74 afs_put_vlserver(net, vllist->servers[i].server); in afs_put_vlserverlist()
76 kfree_rcu(vllist, rcu); in afs_put_vlserverlist()
163 struct afs_vlserver_list *vllist, *previous; in afs_extract_vlserver_list() local
183 vllist = afs_alloc_vlserver_list(nr_servers); in afs_extract_vlserver_list()
184 if (!vllist) in afs_extract_vlserver_list()
187 vllist->source = (hdr->source < NR__dns_record_source) ? in afs_extract_vlserver_list()
189 vllist->status = (hdr->status < NR__dns_lookup_status) ? in afs_extract_vlserver_list()
263 if (vllist->nr_servers >= nr_servers) { in afs_extract_vlserver_list()
264 _debug("skip %u >= %u", vllist->nr_servers, nr_servers); in afs_extract_vlserver_list()
293 for (j = 0; j < vllist->nr_servers; j++) { in afs_extract_vlserver_list()
294 if (bs.priority < vllist->servers[j].priority) in afs_extract_vlserver_list()
296 if (bs.priority == vllist->servers[j].priority && in afs_extract_vlserver_list()
297 bs.weight > vllist->servers[j].weight) in afs_extract_vlserver_list()
301 if (j < vllist->nr_servers) { in afs_extract_vlserver_list()
302 memmove(vllist->servers + j + 1, in afs_extract_vlserver_list()
303 vllist->servers + j, in afs_extract_vlserver_list()
304 (vllist->nr_servers - j) * sizeof(struct afs_vlserver_entry)); in afs_extract_vlserver_list()
309 vllist->servers[j].priority = bs.priority; in afs_extract_vlserver_list()
310 vllist->servers[j].weight = bs.weight; in afs_extract_vlserver_list()
311 vllist->servers[j].server = server; in afs_extract_vlserver_list()
312 vllist->nr_servers++; in afs_extract_vlserver_list()
321 _leave(" = ok [%u]", vllist->nr_servers); in afs_extract_vlserver_list()
322 return vllist; in afs_extract_vlserver_list()
327 afs_put_vlserverlist(cell->net, vllist); in afs_extract_vlserver_list()