Lines Matching refs:alist

19 void afs_put_addrlist(struct afs_addr_list *alist)  in afs_put_addrlist()  argument
21 if (alist && refcount_dec_and_test(&alist->usage)) in afs_put_addrlist()
22 kfree_rcu(alist, rcu); in afs_put_addrlist()
32 struct afs_addr_list *alist; in afs_alloc_addrlist() local
40 alist = kzalloc(struct_size(alist, addrs, nr), GFP_KERNEL); in afs_alloc_addrlist()
41 if (!alist) in afs_alloc_addrlist()
44 refcount_set(&alist->usage, 1); in afs_alloc_addrlist()
45 alist->max_addrs = nr; in afs_alloc_addrlist()
48 struct sockaddr_rxrpc *srx = &alist->addrs[i]; in afs_alloc_addrlist()
57 return alist; in afs_alloc_addrlist()
70 struct afs_addr_list *alist; in afs_parse_text_addrs() local
129 alist = afs_alloc_addrlist(nr, service, AFS_VL_PORT); in afs_parse_text_addrs()
130 if (!alist) in afs_parse_text_addrs()
200 afs_merge_fs_addr4(alist, x[0], xport); in afs_parse_text_addrs()
202 afs_merge_fs_addr6(alist, x, xport); in afs_parse_text_addrs()
206 rcu_assign_pointer(vllist->servers[0].server->addresses, alist); in afs_parse_text_addrs()
207 _leave(" = [nr %u]", alist->nr_addrs); in afs_parse_text_addrs()
219 afs_put_addrlist(alist); in afs_parse_text_addrs()
274 void afs_merge_fs_addr4(struct afs_addr_list *alist, __be32 xdr, u16 port) in afs_merge_fs_addr4() argument
280 if (alist->nr_addrs >= alist->max_addrs) in afs_merge_fs_addr4()
283 for (i = 0; i < alist->nr_ipv4; i++) { in afs_merge_fs_addr4()
284 struct sockaddr_in *a = &alist->addrs[i].transport.sin; in afs_merge_fs_addr4()
296 if (i < alist->nr_addrs) in afs_merge_fs_addr4()
297 memmove(alist->addrs + i + 1, in afs_merge_fs_addr4()
298 alist->addrs + i, in afs_merge_fs_addr4()
299 sizeof(alist->addrs[0]) * (alist->nr_addrs - i)); in afs_merge_fs_addr4()
301 srx = &alist->addrs[i]; in afs_merge_fs_addr4()
308 alist->nr_ipv4++; in afs_merge_fs_addr4()
309 alist->nr_addrs++; in afs_merge_fs_addr4()
315 void afs_merge_fs_addr6(struct afs_addr_list *alist, __be32 *xdr, u16 port) in afs_merge_fs_addr6() argument
320 if (alist->nr_addrs >= alist->max_addrs) in afs_merge_fs_addr6()
323 for (i = alist->nr_ipv4; i < alist->nr_addrs; i++) { in afs_merge_fs_addr6()
324 struct sockaddr_in6 *a = &alist->addrs[i].transport.sin6; in afs_merge_fs_addr6()
336 if (i < alist->nr_addrs) in afs_merge_fs_addr6()
337 memmove(alist->addrs + i + 1, in afs_merge_fs_addr6()
338 alist->addrs + i, in afs_merge_fs_addr6()
339 sizeof(alist->addrs[0]) * (alist->nr_addrs - i)); in afs_merge_fs_addr6()
341 srx = &alist->addrs[i]; in afs_merge_fs_addr6()
348 alist->nr_addrs++; in afs_merge_fs_addr6()
359 if (!ac->alist) in afs_iterate_addresses()
362 set = ac->alist->responded; in afs_iterate_addresses()
363 failed = ac->alist->failed; in afs_iterate_addresses()
373 index = READ_ONCE(ac->alist->preferred); in afs_iterate_addresses()
391 struct afs_addr_list *alist; in afs_end_cursor() local
393 alist = ac->alist; in afs_end_cursor()
394 if (alist) { in afs_end_cursor()
396 ac->index != alist->preferred && in afs_end_cursor()
397 test_bit(ac->alist->preferred, &ac->tried)) in afs_end_cursor()
398 WRITE_ONCE(alist->preferred, ac->index); in afs_end_cursor()
399 afs_put_addrlist(alist); in afs_end_cursor()
400 ac->alist = NULL; in afs_end_cursor()