diff options
Diffstat (limited to 'fs/afs/fs_probe.c')
-rw-r--r-- | fs/afs/fs_probe.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/fs/afs/fs_probe.c b/fs/afs/fs_probe.c index 3a9eaec06756..cfe62b154f68 100644 --- a/fs/afs/fs_probe.c +++ b/fs/afs/fs_probe.c @@ -1,12 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* AFS fileserver probing * * Copyright (C) 2018 Red Hat, Inc. All Rights Reserved. * Written by David Howells (dhowells@redhat.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public Licence - * as published by the Free Software Foundation; either version - * 2 of the Licence, or (at your option) any later version. */ #include <linux/sched.h> @@ -33,8 +29,8 @@ static bool afs_fs_probe_done(struct afs_server *server) void afs_fileserver_probe_result(struct afs_call *call) { struct afs_addr_list *alist = call->alist; - struct afs_server *server = call->reply[0]; - unsigned int server_index = (long)call->reply[1]; + struct afs_server *server = call->server; + unsigned int server_index = call->server_index; unsigned int index = call->addr_ix; unsigned int rtt = UINT_MAX; bool have_result = false; @@ -141,8 +137,8 @@ static int afs_do_probe_fileserver(struct afs_net *net, struct afs_addr_cursor ac = { .index = 0, }; + struct afs_call *call; bool in_progress = false; - int err; _enter("%pU", &server->uuid); @@ -156,12 +152,13 @@ static int afs_do_probe_fileserver(struct afs_net *net, server->probe.rtt = UINT_MAX; for (ac.index = 0; ac.index < ac.alist->nr_addrs; ac.index++) { - err = afs_fs_get_capabilities(net, server, &ac, key, server_index, - true); - if (err == -EINPROGRESS) + call = afs_fs_get_capabilities(net, server, &ac, key, server_index); + if (!IS_ERR(call)) { + afs_put_call(call); in_progress = true; - else - afs_prioritise_error(_e, err, ac.abort_code); + } else { + afs_prioritise_error(_e, PTR_ERR(call), ac.abort_code); + } } if (!in_progress) |