Merge tag 'nfs-for-5.1-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client bugfixes from Trond Myklebust: "Highlights include: Stable fixes: - Fix nfs4_lock_state refcounting in nfs4_alloc_{lock,unlock}data() - fix mount/umount race in nlmclnt. - NFSv4.1 don't free interrupted slot on open Bugfixes: - Don't let RPC_SOFTCONN tasks time out if the transport is connected - Fix a typo in nfs_init_timeout_values() - Fix layoutstats handling during read failovers - fix uninitialized variable warning" * tag 'nfs-for-5.1-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: SUNRPC: fix uninitialized variable warning pNFS/flexfiles: Fix layoutstats handling during read failovers NFS: Fix a typo in nfs_init_timeout_values() SUNRPC: Don't let RPC_SOFTCONN tasks time out if the transport is connected NFSv4.1 don't free interrupted slot on open NFS: fix mount/umount race in nlmclnt. NFS: Fix nfs4_lock_state refcounting in nfs4_alloc_{lock,unlock}data()
This commit is contained in:
@@ -2311,6 +2311,15 @@ out_exit:
|
||||
rpc_exit(task, status);
|
||||
}
|
||||
|
||||
static bool
|
||||
rpc_check_connected(const struct rpc_rqst *req)
|
||||
{
|
||||
/* No allocated request or transport? return true */
|
||||
if (!req || !req->rq_xprt)
|
||||
return true;
|
||||
return xprt_connected(req->rq_xprt);
|
||||
}
|
||||
|
||||
static void
|
||||
rpc_check_timeout(struct rpc_task *task)
|
||||
{
|
||||
@@ -2322,10 +2331,11 @@ rpc_check_timeout(struct rpc_task *task)
|
||||
dprintk("RPC: %5u call_timeout (major)\n", task->tk_pid);
|
||||
task->tk_timeouts++;
|
||||
|
||||
if (RPC_IS_SOFTCONN(task)) {
|
||||
if (RPC_IS_SOFTCONN(task) && !rpc_check_connected(task->tk_rqstp)) {
|
||||
rpc_exit(task, -ETIMEDOUT);
|
||||
return;
|
||||
}
|
||||
|
||||
if (RPC_IS_SOFT(task)) {
|
||||
if (clnt->cl_chatty) {
|
||||
printk(KERN_NOTICE "%s: server %s not responding, timed out\n",
|
||||
|
@@ -495,8 +495,8 @@ xs_read_stream_request(struct sock_xprt *transport, struct msghdr *msg,
|
||||
int flags, struct rpc_rqst *req)
|
||||
{
|
||||
struct xdr_buf *buf = &req->rq_private_buf;
|
||||
size_t want, read;
|
||||
ssize_t ret;
|
||||
size_t want, uninitialized_var(read);
|
||||
ssize_t uninitialized_var(ret);
|
||||
|
||||
xs_read_header(transport, buf);
|
||||
|
||||
|
Reference in New Issue
Block a user