diff options
author | David Howells <dhowells@redhat.com> | 2018-10-19 19:57:59 -0400 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2018-10-23 19:41:09 -0400 |
commit | 3bf0fb6f33dd545693da5e65f5b1b9b9f0bfc35e (patch) | |
tree | df215e6a6ad11b6ac8158461144667e168591d28 /fs/afs/volume.c | |
parent | 18ac61853cc4e44eb30e125fc8344a3b25c7b6fe (diff) |
afs: Probe multiple fileservers simultaneously
Send probes to all the unprobed fileservers in a fileserver list on all
addresses simultaneously in an attempt to find out the fastest route whilst
not getting stuck for 20s on any server or address that we don't get a
reply from.
This alleviates the problem whereby attempting to access a new server can
take a long time because the rotation algorithm ends up rotating through
all servers and addresses until it finds one that responds.
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'fs/afs/volume.c')
-rw-r--r-- | fs/afs/volume.c | 16 |
1 files changed, 0 insertions, 16 deletions
diff --git a/fs/afs/volume.c b/fs/afs/volume.c index 7527c081726e..00975ed3640f 100644 --- a/fs/afs/volume.c +++ b/fs/afs/volume.c | |||
@@ -82,22 +82,6 @@ static struct afs_vldb_entry *afs_vl_lookup_vldb(struct afs_cell *cell, | |||
82 | return ERR_PTR(-ERESTARTSYS); | 82 | return ERR_PTR(-ERESTARTSYS); |
83 | 83 | ||
84 | while (afs_select_vlserver(&vc)) { | 84 | while (afs_select_vlserver(&vc)) { |
85 | if (!test_bit(vc.ac.index, &vc.ac.alist->probed)) { | ||
86 | ret = afs_vl_get_capabilities(cell->net, &vc.ac, key); | ||
87 | switch (ret) { | ||
88 | case VL_SERVICE: | ||
89 | clear_bit(vc.ac.index, &vc.ac.alist->yfs); | ||
90 | set_bit(vc.ac.index, &vc.ac.alist->probed); | ||
91 | vc.ac.alist->addrs[vc.ac.index].srx_service = ret; | ||
92 | break; | ||
93 | case YFS_VL_SERVICE: | ||
94 | set_bit(vc.ac.index, &vc.ac.alist->yfs); | ||
95 | set_bit(vc.ac.index, &vc.ac.alist->probed); | ||
96 | vc.ac.alist->addrs[vc.ac.index].srx_service = ret; | ||
97 | break; | ||
98 | } | ||
99 | } | ||
100 | |||
101 | vldb = afs_vl_get_entry_by_name_u(&vc, volname, volnamesz); | 85 | vldb = afs_vl_get_entry_by_name_u(&vc, volname, volnamesz); |
102 | } | 86 | } |
103 | 87 | ||