Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+20 −22
Original line number Diff line number Diff line
@@ -330,27 +330,6 @@ bool afs_select_fileserver(struct afs_fs_cursor *fc)

	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 @@ bool afs_select_fileserver(struct afs_fs_cursor *fc)

	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 @@ bool afs_select_fileserver(struct afs_fs_cursor *fc)
	_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);