From: Mike Snitzer <snitzer@kernel.org>
To: Chuck Lever <cel@kernel.org>
Cc: NeilBrown <neil@brown.name>, Jeff Layton <jlayton@kernel.org>,
Olga Kornievskaia <okorniev@redhat.com>,
Dai Ngo <dai.ngo@oracle.com>, Tom Talpey <tom@talpey.com>,
linux-nfs@vger.kernel.org, Chuck Lever <chuck.lever@oracle.com>
Subject: Re: [PATCH v9 08/12] NFSD: Simplify nfsd_iov_iter_aligned_bvec()
Date: Mon, 3 Nov 2025 16:13:33 -0500 [thread overview]
Message-ID: <aQka_Qgdwnv2mRTx@kernel.org> (raw)
In-Reply-To: <20251103165351.10261-9-cel@kernel.org>
On Mon, Nov 03, 2025 at 11:53:47AM -0500, Chuck Lever wrote:
> From: Chuck Lever <chuck.lever@oracle.com>
>
> Pages in the RPC receive buffer are contiguous. Practically
> speaking, this means that, after the first bvec, the bv_offset
> field is always zero.
>
> The loop in nfsd_iov_iter_aligned_bvec() also sets "skip" to zero
> after the first bvec is checked. Thus, for bvecs following the first
> one, bv_offset = 0 and skip = 0, and the check becomes:
>
> (0 + 0) & addr_mask = 0
>
> This always passes regardless of the alignment mask.
>
> Since all bvecs after the first one start at bv_offset zero (page-
> aligned), they are inherently aligned for DIO. Therefore, only the
> first bvec needs to be checked for DIO alignment.
>
> Note that for RDMA transports, the incoming payload always starts on
> page alignment, since svcrdma sets up the RDMA Read sink buffers
> that way. For RDMA, this loop visits every bvec in each payload, and
> never finds an unaligned bvec.
>
> Reviewed-by: Jeff Layton <jlayton@kernel.org>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Very welcome improvement!
Reviewed-by: Mike Snitzer <snitzer@kernel.org>
next prev parent reply other threads:[~2025-11-03 21:13 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-03 16:53 [PATCH v9 00/12] NFSD: Implement NFSD_IO_DIRECT for NFS WRITE Chuck Lever
2025-11-03 16:53 ` [PATCH v9 01/12] NFSD: Make FILE_SYNC WRITEs comply with spec Chuck Lever
2025-11-03 22:14 ` NeilBrown
2025-11-03 16:53 ` [PATCH v9 02/12] NFSD: Enable return of an updated stable_how to NFS clients Chuck Lever
2025-11-03 16:53 ` [PATCH v9 03/12] NFSD: Implement NFSD_IO_DIRECT for NFS WRITE Chuck Lever
2025-11-03 16:53 ` [PATCH v9 04/12] NFSD: Remove specific error handling Chuck Lever
2025-11-03 21:17 ` Mike Snitzer
2025-11-03 16:53 ` [PATCH v9 05/12] NFSD: Remove alignment size checking Chuck Lever
2025-11-03 21:16 ` Mike Snitzer
2025-11-03 22:30 ` NeilBrown
2025-11-04 11:52 ` Christoph Hellwig
2025-11-04 14:14 ` Chuck Lever
2025-11-04 15:54 ` Mike Snitzer
2025-11-05 12:52 ` Christoph Hellwig
2025-11-05 14:38 ` Chuck Lever
2025-11-05 14:48 ` Mike Snitzer
2025-11-05 14:55 ` Christoph Hellwig
2025-11-03 16:53 ` [PATCH v9 06/12] NFSD: Clean up struct nfsd_write_dio Chuck Lever
2025-11-03 22:36 ` NeilBrown
2025-11-03 16:53 ` [PATCH v9 07/12] NFSD: Introduce struct nfsd_write_dio_seg Chuck Lever
2025-11-03 22:45 ` NeilBrown
2025-11-03 22:48 ` Chuck Lever
2025-11-03 16:53 ` [PATCH v9 08/12] NFSD: Simplify nfsd_iov_iter_aligned_bvec() Chuck Lever
2025-11-03 21:13 ` Mike Snitzer [this message]
2025-11-03 22:48 ` NeilBrown
2025-11-03 16:53 ` [PATCH v9 09/12] NFSD: Combine direct I/O feasibility check with iterator setup Chuck Lever
2025-11-03 21:19 ` Mike Snitzer
2025-11-03 22:55 ` NeilBrown
2025-11-03 16:53 ` [PATCH v9 10/12] NFSD: Handle kiocb->ki_flags correctly Chuck Lever
2025-11-03 21:14 ` Mike Snitzer
2025-11-03 23:03 ` NeilBrown
2025-11-04 11:55 ` Christoph Hellwig
2025-11-03 16:53 ` [PATCH v9 11/12] NFSD: Refactor nfsd_vfs_write Chuck Lever
2025-11-03 21:15 ` Mike Snitzer
2025-11-03 23:05 ` NeilBrown
2025-11-03 16:53 ` [PATCH v9 12/12] NFSD: add Documentation/filesystems/nfs/nfsd-io-modes.rst Chuck Lever
2025-11-03 21:25 ` Mike Snitzer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aQka_Qgdwnv2mRTx@kernel.org \
--to=snitzer@kernel.org \
--cc=cel@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=dai.ngo@oracle.com \
--cc=jlayton@kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=neil@brown.name \
--cc=okorniev@redhat.com \
--cc=tom@talpey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).