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:
Anna Schumaker 2026-10-21 14:20:51 -04:00
commit ef30b3efb7
4 changed files with 16 additions and 4 deletions

View File

@ -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;

View File

@ -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);

View File

@ -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;
}

View File

@ -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);