afs: Fix cell DNS lookup
authorDavid Howells <dhowells@redhat.com>
Tue, 7 May 2019 14:06:36 +0000 (15:06 +0100)
committerDavid Howells <dhowells@redhat.com>
Thu, 16 May 2019 11:58:23 +0000 (12:58 +0100)
commitd5c32c89b208e39a39cd8639aa21c012ce0daf4d
tree856d5540f898c041c51f8868e53381f37d2ff0b7
parenta49294eac27c7159cd8b89a96c3b1a857e37b683
afs: Fix cell DNS lookup

Currently, once configured, AFS cells are looked up in the DNS at regular
intervals - which is a waste of resources if those cells aren't being
used.  It also leads to a problem where cells preloaded, but not
configured, before the network is brought up end up effectively statically
configured with no VL servers and are unable to get any.

Fix this by not doing the DNS lookup until the first time a cell is
touched.  It is waited for if we don't have any cached records yet,
otherwise the DNS lookup to maintain the record is done in the background.

This has the downside that the first time you touch a cell, you now have to
wait for the upcall to do the required DNS lookups rather than them already
being cached.

Further, the record is not replaced if the old record has at least one
server in it and the new record doesn't have any.

Fixes: 0a5143f2f89c ("afs: Implement VL server rotation")
Signed-off-by: David Howells <dhowells@redhat.com>
fs/afs/cell.c
fs/afs/internal.h
fs/afs/vl_rotate.c