afs: Implement VL server rotation
authorDavid Howells <dhowells@redhat.com>
Fri, 19 Oct 2018 23:57:57 +0000 (00:57 +0100)
committerDavid Howells <dhowells@redhat.com>
Tue, 23 Oct 2018 23:41:07 +0000 (00:41 +0100)
commit0a5143f2f89cc88d8a3eada8e8ccd86c1e988257
tree249b578b9fd7a79f7b52d4534a0e9ba4cc5b8cc9
parente7f680f45bd1deb4ca479c2348b395e1a4d44b17
afs: Implement VL server rotation

Track VL servers as independent entities rather than lumping all their
addresses together into one set and implement server-level rotation by:

 (1) Add the concept of a VL server list, where each server has its own
     separate address list.  This code is similar to the FS server list.

 (2) Use the DNS resolver to retrieve a set of servers and their associated
     addresses, ports, preference and weight ratings.

 (3) In the case of a legacy DNS resolver or an address list given directly
     through /proc/net/afs/cells, create a list containing just a dummy
     server record and attach all the addresses to that.

 (4) Implement a simple rotation policy, for the moment ignoring the
     priorities and weights assigned to the servers.

 (5) Show the address list through /proc/net/afs/<cell>/vlservers.  This
     also displays the source and status of the data as indicated by the
     upcall.

Signed-off-by: David Howells <dhowells@redhat.com>
fs/afs/Makefile
fs/afs/addr_list.c
fs/afs/cell.c
fs/afs/dynroot.c
fs/afs/internal.h
fs/afs/proc.c
fs/afs/server.c
fs/afs/vl_list.c [new file with mode: 0644]
fs/afs/vl_rotate.c [new file with mode: 0644]
fs/afs/vlclient.c
fs/afs/volume.c