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: David Howells <dhowells@redhat.com>
This commit is contained in:
parent
744bcd713a
commit
2feeaf8433
@ -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)
|
|||||||
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 {
|
|||||||
*/
|
*/
|
||||||
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)
|
|||||||
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)
|
|||||||
.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)
|
|||||||
|
|
||||||
_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 @@ iterate_address:
|
|||||||
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,
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user