Commit 2feeaf84 authored by David Howells's avatar David Howells

afs: Eliminate the address pointer from the address list cursor

Eliminate the address pointer from the address list cursor as it's
redundant (ac->addrs[ac->index] can be used to find the same address) and
address lists must be replaced rather than being rearranged, so is of
limited value.
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent 744bcd71
...@@ -371,7 +371,6 @@ bool afs_iterate_addresses(struct afs_addr_cursor *ac) ...@@ -371,7 +371,6 @@ bool afs_iterate_addresses(struct afs_addr_cursor *ac)
ac->begun = true; ac->begun = true;
ac->responded = false; ac->responded = false;
ac->addr = &ac->alist->addrs[ac->index];
return true; return true;
} }
...@@ -389,7 +388,6 @@ int afs_end_cursor(struct afs_addr_cursor *ac) ...@@ -389,7 +388,6 @@ int afs_end_cursor(struct afs_addr_cursor *ac)
afs_put_addrlist(alist); afs_put_addrlist(alist);
} }
ac->addr = NULL;
ac->alist = NULL; ac->alist = NULL;
ac->begun = false; ac->begun = false;
return ac->error; return ac->error;
......
...@@ -653,7 +653,6 @@ struct afs_interface { ...@@ -653,7 +653,6 @@ struct afs_interface {
*/ */
struct afs_addr_cursor { struct afs_addr_cursor {
struct afs_addr_list *alist; /* Current address list (pins ref) */ struct afs_addr_list *alist; /* Current address list (pins ref) */
struct sockaddr_rxrpc *addr;
u32 abort_code; u32 abort_code;
unsigned short start; /* Starting point in alist->addrs[] */ unsigned short start; /* Starting point in alist->addrs[] */
unsigned short index; /* Wrapping offset from start to current addr */ unsigned short index; /* Wrapping offset from start to current addr */
......
...@@ -359,7 +359,7 @@ static int afs_send_pages(struct afs_call *call, struct msghdr *msg) ...@@ -359,7 +359,7 @@ static int afs_send_pages(struct afs_call *call, struct msghdr *msg)
long afs_make_call(struct afs_addr_cursor *ac, struct afs_call *call, long afs_make_call(struct afs_addr_cursor *ac, struct afs_call *call,
gfp_t gfp, bool async) 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 rxrpc_call *rxcall;
struct msghdr msg; struct msghdr msg;
struct kvec iov[1]; struct kvec iov[1];
......
...@@ -367,7 +367,6 @@ static void afs_destroy_server(struct afs_net *net, struct afs_server *server) ...@@ -367,7 +367,6 @@ static void afs_destroy_server(struct afs_net *net, struct afs_server *server)
.alist = alist, .alist = alist,
.start = alist->index, .start = alist->index,
.index = 0, .index = 0,
.addr = &alist->addrs[alist->index],
.error = 0, .error = 0,
}; };
_enter("%p", server); _enter("%p", server);
...@@ -518,7 +517,6 @@ static bool afs_do_probe_fileserver(struct afs_fs_cursor *fc) ...@@ -518,7 +517,6 @@ static bool afs_do_probe_fileserver(struct afs_fs_cursor *fc)
_enter(""); _enter("");
fc->ac.addr = NULL;
fc->ac.start = READ_ONCE(fc->ac.alist->index); fc->ac.start = READ_ONCE(fc->ac.alist->index);
fc->ac.index = fc->ac.start; fc->ac.index = fc->ac.start;
fc->ac.error = 0; fc->ac.error = 0;
......
...@@ -209,7 +209,7 @@ bool afs_select_vlserver(struct afs_vl_cursor *vc) ...@@ -209,7 +209,7 @@ bool afs_select_vlserver(struct afs_vl_cursor *vc)
if (!afs_iterate_addresses(&vc->ac)) if (!afs_iterate_addresses(&vc->ac))
goto next_server; goto next_server;
_leave(" = t %pISpc", &vc->ac.addr->transport); _leave(" = t %pISpc", &vc->ac.alist->addrs[vc->ac.index].transport);
return true; return true;
next_server: next_server:
......
...@@ -88,16 +88,16 @@ static struct afs_vldb_entry *afs_vl_lookup_vldb(struct afs_cell *cell, ...@@ -88,16 +88,16 @@ static struct afs_vldb_entry *afs_vl_lookup_vldb(struct afs_cell *cell,
case VL_SERVICE: case VL_SERVICE:
clear_bit(vc.ac.index, &vc.ac.alist->yfs); clear_bit(vc.ac.index, &vc.ac.alist->yfs);
set_bit(vc.ac.index, &vc.ac.alist->probed); 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; break;
case YFS_VL_SERVICE: case YFS_VL_SERVICE:
set_bit(vc.ac.index, &vc.ac.alist->yfs); set_bit(vc.ac.index, &vc.ac.alist->yfs);
set_bit(vc.ac.index, &vc.ac.alist->probed); 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; break;
} }
} }
vldb = afs_vl_get_entry_by_name_u(&vc, volname, volnamesz); vldb = afs_vl_get_entry_by_name_u(&vc, volname, volnamesz);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment