mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
Merge commit '211cda4fdf33011cee39f8970c4625b207142d6b' of git://git.linux-nfs.org/projects/trondmy/linux-nfs.git into anna/linux-next
This pulls in NFS client bugfixes from the Linux 7.3-rc cycle that were never sent upstream. Signed-off-by: Anna Schumaker <anna.schumaker@hammerspace.com>
This commit is contained in:
commit
ef30b3efb7
|
|
@ -934,8 +934,7 @@ nfs_mark_return_if_closed_delegation(struct nfs_server *server,
|
|||
{
|
||||
struct inode *inode;
|
||||
|
||||
if (!list_empty_careful(&server->delegations_return) ||
|
||||
test_bit(NFS_DELEGATION_RETURN_IF_CLOSED, &delegation->flags))
|
||||
if (test_bit(NFS_DELEGATION_RETURN_IF_CLOSED, &delegation->flags))
|
||||
return;
|
||||
spin_lock(&delegation->lock);
|
||||
inode = delegation->inode;
|
||||
|
|
|
|||
|
|
@ -2491,6 +2491,8 @@ struct dentry *nfs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
|
|||
trace_nfs_mkdir_enter(dir, dentry);
|
||||
ret = NFS_PROTO(dir)->mkdir(dir, dentry, &attr);
|
||||
trace_nfs_mkdir_exit(dir, dentry, PTR_ERR_OR_ZERO(ret));
|
||||
if (IS_ERR(ret))
|
||||
d_drop(dentry);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nfs_mkdir);
|
||||
|
|
|
|||
|
|
@ -402,6 +402,7 @@ static void nfs_set_mount_transport_protocol(struct nfs_fs_context *ctx)
|
|||
ctx->mount_server.protocol = XPRT_TRANSPORT_UDP;
|
||||
break;
|
||||
case XPRT_TRANSPORT_TCP:
|
||||
case XPRT_TRANSPORT_TCP_TLS:
|
||||
case XPRT_TRANSPORT_RDMA:
|
||||
ctx->mount_server.protocol = XPRT_TRANSPORT_TCP;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1262,9 +1262,19 @@ rpcrdma_decode_msg(struct rpcrdma_xprt *r_xprt, struct rpcrdma_rep *rep,
|
|||
|
||||
/* Build the RPC reply's Payload stream in rqst->rq_rcv_buf */
|
||||
base = (char *)xdr_inline_decode(xdr, 0);
|
||||
rpclen = xdr_stream_remaining(xdr);
|
||||
rpclen = rep->rr_hdrbuf.len - xdr_stream_pos(xdr);
|
||||
if (writelist)
|
||||
rpclen &= ~3;
|
||||
if (unlikely(!rpclen))
|
||||
return -EIO;
|
||||
if (writelist && rpclen < rqst->rq_rcv_buf.head[0].iov_len) {
|
||||
rqst->rq_rcv_buf.head[0].iov_len = rpclen;
|
||||
rqst->rq_private_buf.head[0].iov_len = rpclen;
|
||||
}
|
||||
|
||||
r_xprt->rx_stats.fixup_copy_count +=
|
||||
rpcrdma_inline_fixup(rqst, base, rpclen, writelist);
|
||||
rpcrdma_inline_fixup(rqst, base, rpclen,
|
||||
xdr_pad_size(writelist));
|
||||
|
||||
r_xprt->rx_stats.total_rdma_reply += writelist;
|
||||
return rpclen + xdr_align_size(writelist);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user