Lines Matching refs:alist

28 void afs_put_addrlist(struct afs_addr_list *alist)  in afs_put_addrlist()  argument
30 if (alist && refcount_dec_and_test(&alist->usage)) in afs_put_addrlist()
31 call_rcu(&alist->rcu, (rcu_callback_t)kfree); in afs_put_addrlist()
41 struct afs_addr_list *alist; in afs_alloc_addrlist() local
46 alist = kzalloc(struct_size(alist, addrs, nr), GFP_KERNEL); in afs_alloc_addrlist()
47 if (!alist) in afs_alloc_addrlist()
50 refcount_set(&alist->usage, 1); in afs_alloc_addrlist()
53 struct sockaddr_rxrpc *srx = &alist->addrs[i]; in afs_alloc_addrlist()
62 return alist; in afs_alloc_addrlist()
73 struct afs_addr_list *alist; in afs_parse_text_addrs() local
115 alist = afs_alloc_addrlist(nr, service, port); in afs_parse_text_addrs()
116 if (!alist) in afs_parse_text_addrs()
122 struct sockaddr_rxrpc *srx = &alist->addrs[alist->nr_addrs]; in afs_parse_text_addrs()
182 alist->nr_addrs++; in afs_parse_text_addrs()
183 } while (p < end && alist->nr_addrs < AFS_MAX_ADDRESSES); in afs_parse_text_addrs()
185 _leave(" = [nr %u]", alist->nr_addrs); in afs_parse_text_addrs()
186 return alist; in afs_parse_text_addrs()
189 kfree(alist); in afs_parse_text_addrs()
211 struct afs_addr_list *alist; in afs_dns_query() local
222 alist = afs_parse_text_addrs(vllist, strlen(vllist), ',', in afs_dns_query()
224 if (IS_ERR(alist)) { in afs_dns_query()
226 if (alist != ERR_PTR(-ENOMEM)) in afs_dns_query()
228 return alist; in afs_dns_query()
232 return alist; in afs_dns_query()
238 void afs_merge_fs_addr4(struct afs_addr_list *alist, __be32 xdr, u16 port) in afs_merge_fs_addr4() argument
244 for (i = 0; i < alist->nr_ipv4; i++) { in afs_merge_fs_addr4()
245 a = &alist->addrs[i].transport.sin6; in afs_merge_fs_addr4()
256 if (i < alist->nr_addrs) in afs_merge_fs_addr4()
257 memmove(alist->addrs + i + 1, in afs_merge_fs_addr4()
258 alist->addrs + i, in afs_merge_fs_addr4()
259 sizeof(alist->addrs[0]) * (alist->nr_addrs - i)); in afs_merge_fs_addr4()
261 a = &alist->addrs[i].transport.sin6; in afs_merge_fs_addr4()
267 alist->nr_ipv4++; in afs_merge_fs_addr4()
268 alist->nr_addrs++; in afs_merge_fs_addr4()
274 void afs_merge_fs_addr6(struct afs_addr_list *alist, __be32 *xdr, u16 port) in afs_merge_fs_addr6() argument
280 for (i = alist->nr_ipv4; i < alist->nr_addrs; i++) { in afs_merge_fs_addr6()
281 a = &alist->addrs[i].transport.sin6; in afs_merge_fs_addr6()
293 if (i < alist->nr_addrs) in afs_merge_fs_addr6()
294 memmove(alist->addrs + i + 1, in afs_merge_fs_addr6()
295 alist->addrs + i, in afs_merge_fs_addr6()
296 sizeof(alist->addrs[0]) * (alist->nr_addrs - i)); in afs_merge_fs_addr6()
298 a = &alist->addrs[i].transport.sin6; in afs_merge_fs_addr6()
304 alist->nr_addrs++; in afs_merge_fs_addr6()
314 if (!ac->alist) in afs_iterate_addresses()
319 if (ac->index == ac->alist->nr_addrs) in afs_iterate_addresses()
330 ac->addr = &ac->alist->addrs[ac->index]; in afs_iterate_addresses()
339 struct afs_addr_list *alist; in afs_end_cursor() local
341 alist = ac->alist; in afs_end_cursor()
342 if (alist) { in afs_end_cursor()
344 WRITE_ONCE(alist->index, ac->index); in afs_end_cursor()
345 afs_put_addrlist(alist); in afs_end_cursor()
349 ac->alist = NULL; in afs_end_cursor()
359 struct afs_addr_list *alist; in afs_set_vl_cursor() local
374 alist = rcu_dereference_protected(cell->vl_addrs, in afs_set_vl_cursor()
376 if (alist->nr_addrs > 0) in afs_set_vl_cursor()
377 afs_get_addrlist(alist); in afs_set_vl_cursor()
379 alist = NULL; in afs_set_vl_cursor()
382 if (!alist) in afs_set_vl_cursor()
385 ac->alist = alist; in afs_set_vl_cursor()
387 ac->start = READ_ONCE(alist->index); in afs_set_vl_cursor()