aboutsummaryrefslogtreecommitdiffstats
path: root/fs/afs/vlclient.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2019-05-16 13:21:59 +0100
committerDavid Howells <dhowells@redhat.com>2019-05-16 16:25:20 +0100
commit94f699c9cdb11b8f53cb70624b69aeae16f26db2 (patch)
treef528d331b014f7914518024fb536108ab905cce2 /fs/afs/vlclient.c
parentrxrpc: Provide kernel interface to set max lifespan on a call (diff)
downloadlinux-dev-94f699c9cdb11b8f53cb70624b69aeae16f26db2.tar.xz
linux-dev-94f699c9cdb11b8f53cb70624b69aeae16f26db2.zip
afs: Fix the maximum lifespan of VL and probe calls
If an older AFS server doesn't support an operation, it may accept the call and then sit on it forever, happily responding to pings that make kafs think that the call is still alive. Fix this by setting the maximum lifespan of Volume Location service calls in particular and probe calls in general so that they don't run on endlessly if they're not supported. Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to '')
-rw-r--r--fs/afs/vlclient.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/afs/vlclient.c b/fs/afs/vlclient.c
index dd9ba4e96fb3..7c53768a360b 100644
--- a/fs/afs/vlclient.c
+++ b/fs/afs/vlclient.c
@@ -157,6 +157,7 @@ struct afs_vldb_entry *afs_vl_get_entry_by_name_u(struct afs_vl_cursor *vc,
call->key = vc->key;
call->reply[0] = entry;
call->ret_reply0 = true;
+ call->max_lifespan = AFS_VL_MAX_LIFESPAN;
/* Marshall the parameters */
bp = call->request;
@@ -289,6 +290,7 @@ struct afs_addr_list *afs_vl_get_addrs_u(struct afs_vl_cursor *vc,
call->key = vc->key;
call->reply[0] = NULL;
call->ret_reply0 = true;
+ call->max_lifespan = AFS_VL_MAX_LIFESPAN;
/* Marshall the parameters */
bp = call->request;
@@ -403,6 +405,7 @@ struct afs_call *afs_vl_get_capabilities(struct afs_net *net,
call->upgrade = true;
call->want_reply_time = true;
call->async = true;
+ call->max_lifespan = AFS_PROBE_MAX_LIFESPAN;
/* marshall the parameters */
bp = call->request;
@@ -646,6 +649,7 @@ struct afs_addr_list *afs_yfsvl_get_endpoints(struct afs_vl_cursor *vc,
call->key = vc->key;
call->reply[0] = NULL;
call->ret_reply0 = true;
+ call->max_lifespan = AFS_VL_MAX_LIFESPAN;
/* Marshall the parameters */
bp = call->request;