Commit 16280a15 authored by David Howells's avatar David Howells

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: default avatarDavid Howells <dhowells@redhat.com>
parent 63dc4e4a
...@@ -330,27 +330,6 @@ bool afs_select_fileserver(struct afs_fs_cursor *fc) ...@@ -330,27 +330,6 @@ bool afs_select_fileserver(struct afs_fs_cursor *fc)
if (!afs_start_fs_iteration(fc, vnode)) if (!afs_start_fs_iteration(fc, vnode))
goto failed; 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: use_server:
_debug("use"); _debug("use");
...@@ -401,7 +380,6 @@ bool afs_select_fileserver(struct afs_fs_cursor *fc) ...@@ -401,7 +380,6 @@ bool afs_select_fileserver(struct afs_fs_cursor *fc)
fc->ac.start = READ_ONCE(alist->index); fc->ac.start = READ_ONCE(alist->index);
fc->ac.index = fc->ac.start; fc->ac.index = fc->ac.start;
goto iterate_address;
iterate_address: iterate_address:
ASSERT(fc->ac.alist); ASSERT(fc->ac.alist);
...@@ -415,6 +393,26 @@ bool afs_select_fileserver(struct afs_fs_cursor *fc) ...@@ -415,6 +393,26 @@ bool afs_select_fileserver(struct afs_fs_cursor *fc)
_leave(" = t"); _leave(" = t");
return true; 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: failed:
fc->flags |= AFS_FS_CURSOR_STOP; fc->flags |= AFS_FS_CURSOR_STOP;
afs_end_cursor(&fc->ac); afs_end_cursor(&fc->ac);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment