diff options
author | David Howells <dhowells@redhat.com> | 2018-02-06 06:26:30 +0000 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2018-02-06 14:43:37 +0000 |
commit | 16280a15be751b9994e94c5dc944e93fa4293199 (patch) | |
tree | 389dbe6bfc16da30f4f43f6e36be0ba123fac6fb /fs/afs/rotate.c | |
parent | 63dc4e4aa5ab61868199960979fe1feecdabd01e (diff) | |
download | linux-stable-16280a15be751b9994e94c5dc944e93fa4293199.tar.gz linux-stable-16280a15be751b9994e94c5dc944e93fa4293199.tar.bz2 linux-stable-16280a15be751b9994e94c5dc944e93fa4293199.zip |
afs: Rearrange afs_select_fileserver() a little
Rearrange afs_select_fileserver() a little to put the use_server chunk
before the next_server chunk so that with the removal of a couple of gotos
the main path through the function is all one sequence.
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'fs/afs/rotate.c')
-rw-r--r-- | fs/afs/rotate.c | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/fs/afs/rotate.c b/fs/afs/rotate.c index cfe0931e7844..ad1328d85526 100644 --- a/fs/afs/rotate.c +++ b/fs/afs/rotate.c @@ -330,27 +330,6 @@ start: if (!afs_start_fs_iteration(fc, vnode)) goto failed; - goto use_server; - -next_server: - _debug("next"); - afs_end_cursor(&fc->ac); - afs_put_cb_interest(afs_v2net(vnode), fc->cbi); - fc->cbi = NULL; - fc->index++; - if (fc->index >= fc->server_list->nr_servers) - fc->index = 0; - if (fc->index != fc->start) - goto use_server; - - /* That's all the servers poked to no good effect. Try again if some - * of them were busy. - */ - if (fc->flags & AFS_FS_CURSOR_VBUSY) - goto restart_from_beginning; - - fc->ac.error = -EDESTADDRREQ; - goto failed; use_server: _debug("use"); @@ -401,7 +380,6 @@ use_server: fc->ac.start = READ_ONCE(alist->index); fc->ac.index = fc->ac.start; - goto iterate_address; iterate_address: ASSERT(fc->ac.alist); @@ -415,6 +393,26 @@ iterate_address: _leave(" = t"); return true; +next_server: + _debug("next"); + afs_end_cursor(&fc->ac); + afs_put_cb_interest(afs_v2net(vnode), fc->cbi); + fc->cbi = NULL; + fc->index++; + if (fc->index >= fc->server_list->nr_servers) + fc->index = 0; + if (fc->index != fc->start) + goto use_server; + + /* That's all the servers poked to no good effect. Try again if some + * of them were busy. + */ + if (fc->flags & AFS_FS_CURSOR_VBUSY) + goto restart_from_beginning; + + fc->ac.error = -EDESTADDRREQ; + goto failed; + failed: fc->flags |= AFS_FS_CURSOR_STOP; afs_end_cursor(&fc->ac); |