afs: Fix server rotation's handling of fileserver probe failure

The server rotation algorithm just gives up if it fails to probe a
fileserver.  Fix this by rotating to the next fileserver instead.

Fixes: d2ddc776a4 ("afs: Overhaul volume and server record caching and fileserver rotation")
Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
David Howells 2018-05-10 14:22:38 +01:00
parent d4a96bec7a
commit ec5a3b4b50
1 changed files with 10 additions and 2 deletions

View File

@ -369,8 +369,16 @@ use_server:
if (!test_bit(AFS_SERVER_FL_PROBED, &server->flags)) { if (!test_bit(AFS_SERVER_FL_PROBED, &server->flags)) {
fc->ac.alist = afs_get_addrlist(alist); fc->ac.alist = afs_get_addrlist(alist);
if (!afs_probe_fileserver(fc)) if (!afs_probe_fileserver(fc)) {
goto failed; switch (fc->ac.error) {
case -ENOMEM:
case -ERESTARTSYS:
case -EINTR:
goto failed;
default:
goto next_server;
}
}
} }
if (!fc->ac.alist) if (!fc->ac.alist)