Lines Matching refs:vllist
49 struct afs_vlserver_list *vllist; in afs_alloc_vlserver_list() local
51 vllist = kzalloc(struct_size(vllist, servers, nr_servers), GFP_KERNEL); in afs_alloc_vlserver_list()
52 if (vllist) { in afs_alloc_vlserver_list()
53 refcount_set(&vllist->ref, 1); in afs_alloc_vlserver_list()
54 rwlock_init(&vllist->lock); in afs_alloc_vlserver_list()
57 return vllist; in afs_alloc_vlserver_list()
60 void afs_put_vlserverlist(struct afs_net *net, struct afs_vlserver_list *vllist) in afs_put_vlserverlist() argument
62 if (vllist) { in afs_put_vlserverlist()
63 if (refcount_dec_and_test(&vllist->ref)) { in afs_put_vlserverlist()
66 for (i = 0; i < vllist->nr_servers; i++) { in afs_put_vlserverlist()
67 afs_put_vlserver(net, vllist->servers[i].server); in afs_put_vlserverlist()
69 kfree_rcu(vllist, rcu); in afs_put_vlserverlist()
156 struct afs_vlserver_list *vllist, *previous; in afs_extract_vlserver_list() local
176 vllist = afs_alloc_vlserver_list(nr_servers); in afs_extract_vlserver_list()
177 if (!vllist) in afs_extract_vlserver_list()
180 vllist->source = (hdr->source < NR__dns_record_source) ? in afs_extract_vlserver_list()
182 vllist->status = (hdr->status < NR__dns_lookup_status) ? in afs_extract_vlserver_list()
256 if (vllist->nr_servers >= nr_servers) { in afs_extract_vlserver_list()
257 _debug("skip %u >= %u", vllist->nr_servers, nr_servers); in afs_extract_vlserver_list()
286 for (j = 0; j < vllist->nr_servers; j++) { in afs_extract_vlserver_list()
287 if (bs.priority < vllist->servers[j].priority) in afs_extract_vlserver_list()
289 if (bs.priority == vllist->servers[j].priority && in afs_extract_vlserver_list()
290 bs.weight > vllist->servers[j].weight) in afs_extract_vlserver_list()
294 if (j < vllist->nr_servers) { in afs_extract_vlserver_list()
295 memmove(vllist->servers + j + 1, in afs_extract_vlserver_list()
296 vllist->servers + j, in afs_extract_vlserver_list()
297 (vllist->nr_servers - j) * sizeof(struct afs_vlserver_entry)); in afs_extract_vlserver_list()
302 vllist->servers[j].priority = bs.priority; in afs_extract_vlserver_list()
303 vllist->servers[j].weight = bs.weight; in afs_extract_vlserver_list()
304 vllist->servers[j].server = server; in afs_extract_vlserver_list()
305 vllist->nr_servers++; in afs_extract_vlserver_list()
314 _leave(" = ok [%u]", vllist->nr_servers); in afs_extract_vlserver_list()
315 return vllist; in afs_extract_vlserver_list()
320 afs_put_vlserverlist(cell->net, vllist); in afs_extract_vlserver_list()