Lines Matching refs:ac
310 bool afs_iterate_addresses(struct afs_addr_cursor *ac) in afs_iterate_addresses() argument
312 _enter("%hu+%hd", ac->start, (short)ac->index); in afs_iterate_addresses()
314 if (!ac->alist) in afs_iterate_addresses()
317 if (ac->begun) { in afs_iterate_addresses()
318 ac->index++; in afs_iterate_addresses()
319 if (ac->index == ac->alist->nr_addrs) in afs_iterate_addresses()
320 ac->index = 0; in afs_iterate_addresses()
322 if (ac->index == ac->start) { in afs_iterate_addresses()
323 ac->error = -EDESTADDRREQ; in afs_iterate_addresses()
328 ac->begun = true; in afs_iterate_addresses()
329 ac->responded = false; in afs_iterate_addresses()
330 ac->addr = &ac->alist->addrs[ac->index]; in afs_iterate_addresses()
337 int afs_end_cursor(struct afs_addr_cursor *ac) in afs_end_cursor() argument
341 alist = ac->alist; in afs_end_cursor()
343 if (ac->responded && ac->index != ac->start) in afs_end_cursor()
344 WRITE_ONCE(alist->index, ac->index); in afs_end_cursor()
348 ac->addr = NULL; in afs_end_cursor()
349 ac->alist = NULL; in afs_end_cursor()
350 ac->begun = false; in afs_end_cursor()
351 return ac->error; in afs_end_cursor()
357 int afs_set_vl_cursor(struct afs_addr_cursor *ac, struct afs_cell *cell) in afs_set_vl_cursor() argument
385 ac->alist = alist; in afs_set_vl_cursor()
386 ac->addr = NULL; in afs_set_vl_cursor()
387 ac->start = READ_ONCE(alist->index); in afs_set_vl_cursor()
388 ac->index = ac->start; in afs_set_vl_cursor()
389 ac->error = 0; in afs_set_vl_cursor()
390 ac->begun = false; in afs_set_vl_cursor()