ac->begun = true;
ac->responded = false;
- ac->addr = &ac->alist->addrs[ac->index];
return true;
}
afs_put_addrlist(alist);
}
- ac->addr = NULL;
ac->alist = NULL;
ac->begun = false;
return ac->error;
*/
struct afs_addr_cursor {
struct afs_addr_list *alist; /* Current address list (pins ref) */
- struct sockaddr_rxrpc *addr;
u32 abort_code;
unsigned short start; /* Starting point in alist->addrs[] */
unsigned short index; /* Wrapping offset from start to current addr */
long afs_make_call(struct afs_addr_cursor *ac, struct afs_call *call,
gfp_t gfp, bool async)
{
- struct sockaddr_rxrpc *srx = ac->addr;
+ struct sockaddr_rxrpc *srx = &ac->alist->addrs[ac->index];
struct rxrpc_call *rxcall;
struct msghdr msg;
struct kvec iov[1];
.alist = alist,
.start = alist->index,
.index = 0,
- .addr = &alist->addrs[alist->index],
.error = 0,
};
_enter("%p", server);
_enter("");
- fc->ac.addr = NULL;
fc->ac.start = READ_ONCE(fc->ac.alist->index);
fc->ac.index = fc->ac.start;
fc->ac.error = 0;
if (!afs_iterate_addresses(&vc->ac))
goto next_server;
- _leave(" = t %pISpc", &vc->ac.addr->transport);
+ _leave(" = t %pISpc", &vc->ac.alist->addrs[vc->ac.index].transport);
return true;
next_server:
case VL_SERVICE:
clear_bit(vc.ac.index, &vc.ac.alist->yfs);
set_bit(vc.ac.index, &vc.ac.alist->probed);
- vc.ac.addr->srx_service = ret;
+ vc.ac.alist->addrs[vc.ac.index].srx_service = ret;
break;
case YFS_VL_SERVICE:
set_bit(vc.ac.index, &vc.ac.alist->yfs);
set_bit(vc.ac.index, &vc.ac.alist->probed);
- vc.ac.addr->srx_service = ret;
+ vc.ac.alist->addrs[vc.ac.index].srx_service = ret;
break;
}
}
-
+
vldb = afs_vl_get_entry_by_name_u(&vc, volname, volnamesz);
}