diff options
| author | Mark Brown <broonie@kernel.org> | 2026-10-13 12:07:39 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-13 12:07:39 +0100 |
| commit | b97de6d72566c8fc294ededcefde47e20d834566 (patch) | |
| tree | 862b7db6c3e89dcb01b3f2b39ca1633be32dffb7 | |
| parent | fceffb475782cb757e7c70074134f48167142be6 (diff) | |
| parent | 18a80121193c6d19519e218434c9acf90e8d0e5c (diff) | |
| download | linux-next-b97de6d72566c8fc294ededcefde47e20d834566.tar.gz linux-next-b97de6d72566c8fc294ededcefde47e20d834566.zip | |
Merge branch 'linux-next' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6.git
| -rw-r--r-- | fs/nfs/delegation.c | 3 | ||||
| -rw-r--r-- | fs/nfs/dir.c | 2 | ||||
| -rw-r--r-- | fs/nfs/fs_context.c | 1 | ||||
| -rw-r--r-- | fs/xfs/scrub/stats.c | 3 | ||||
| -rw-r--r-- | fs/xfs/scrub/tempfile.c | 3 | ||||
| -rw-r--r-- | net/sunrpc/xprtrdma/rpc_rdma.c | 14 |
6 files changed, 18 insertions, 8 deletions
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index ab3e441464a6..ad774316f716 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c @@ -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; diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 49394123bd09..a26c459ffb04 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -2490,6 +2490,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); diff --git a/fs/nfs/fs_context.c b/fs/nfs/fs_context.c index 1967de7d1dff..a7393ff05494 100644 --- a/fs/nfs/fs_context.c +++ b/fs/nfs/fs_context.c @@ -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; } diff --git a/fs/xfs/scrub/stats.c b/fs/xfs/scrub/stats.c index 3339cae4b39d..03f58d23c473 100644 --- a/fs/xfs/scrub/stats.c +++ b/fs/xfs/scrub/stats.c @@ -143,7 +143,6 @@ STATIC size_t xchk_stats_estimate_bufsize( struct xchk_stats *cs) { - struct xchk_scrub_stats *css = &cs->cs_stats[0]; unsigned int i; size_t field_width; size_t ret = 0; @@ -157,7 +156,7 @@ xchk_stats_estimate_bufsize( offsetof(struct xchk_scrub_stats, checktime_us)) / sizeof(uint64_t)); - for (i = 0; i < XFS_SCRUB_TYPE_NR; i++, css++) { + for (i = 0; i < XFS_SCRUB_TYPE_NR; i++) { if (!name_map[i]) continue; diff --git a/fs/xfs/scrub/tempfile.c b/fs/xfs/scrub/tempfile.c index 59a9213a3c7d..6340afcc22cf 100644 --- a/fs/xfs/scrub/tempfile.c +++ b/fs/xfs/scrub/tempfile.c @@ -490,7 +490,6 @@ xrep_tempfile_copyin( struct xfs_buf *bp; xfs_fileoff_t flush_mask; xfs_fileoff_t end = off + len; - loff_t pos = XFS_FSB_TO_B(mp, off); int error = 0; ASSERT(S_ISREG(VFS_I(sc->tempip)->i_mode)); @@ -498,7 +497,7 @@ xrep_tempfile_copyin( /* Flush buffers to disk every 512K */ flush_mask = XFS_B_TO_FSBT(mp, (1U << 19)) - 1; - for (; off < end; off++, pos += mp->m_sb.sb_blocksize) { + for (; off < end; off++) { struct xfs_bmbt_irec map; int nmaps = 1; diff --git a/net/sunrpc/xprtrdma/rpc_rdma.c b/net/sunrpc/xprtrdma/rpc_rdma.c index 1285f04cdac1..ba8bdca8a49f 100644 --- a/net/sunrpc/xprtrdma/rpc_rdma.c +++ b/net/sunrpc/xprtrdma/rpc_rdma.c @@ -1243,9 +1243,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 & 3); + rpcrdma_inline_fixup(rqst, base, rpclen, + xdr_pad_size(writelist)); r_xprt->rx_stats.total_rdma_reply += writelist; return rpclen + xdr_align_size(writelist); |
