From: Mike Snitzer <snitzer@kernel.org>
To: Keith Busch <kbusch@meta.com>
Cc: linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org, axboe@kernel.dk, dw@davidwei.uk,
brauner@kernel.org, Keith Busch <kbusch@kernel.org>,
Chuck Lever <chuck.lever@oracle.com>,
linux-nfs@vger.kernel.org
Subject: Re: [PATCH 7/7] iov_iter: remove iov_iter_is_aligned
Date: Fri, 1 Aug 2025 22:02:49 -0400 [thread overview]
Message-ID: <aI1xySNUdQ2B0dbJ@kernel.org> (raw)
In-Reply-To: <20250801234736.1913170-8-kbusch@meta.com>
On Fri, Aug 01, 2025 at 04:47:36PM -0700, Keith Busch wrote:
> From: Keith Busch <kbusch@kernel.org>
>
> No more callers.
>
> Signed-off-by: Keith Busch <kbusch@kernel.org>
You had me up until this last patch.
I'm actually making use of iov_iter_is_aligned() in a series of
changes for both NFS and NFSD. Chuck has included some of the
NFSD changes in his nfsd-testing branch, see:
https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git/commit/?h=nfsd-testing&id=5d78ac1e674b45f9c9e3769b48efb27c44f4e4d3
And the balance of my work that is pending review/inclusion is:
https://lore.kernel.org/linux-nfs/20250731230633.89983-1-snitzer@kernel.org/
https://lore.kernel.org/linux-nfs/20250801171049.94235-1-snitzer@kernel.org/
I only need iov_iter_aligned_bvec, but recall I want to relax its
checking with this patch:
https://lore.kernel.org/linux-nfs/20250708160619.64800-5-snitzer@kernel.org/
Should I just add iov_iter_aligned_bvec() to fs/nfs_common/ so that
both NFS and NFSD can use it?
Thanks,
Mike
> ---
> include/linux/uio.h | 2 -
> lib/iov_iter.c | 95 ---------------------------------------------
> 2 files changed, 97 deletions(-)
>
> diff --git a/include/linux/uio.h b/include/linux/uio.h
> index 2e86c653186c6..5b127043a1519 100644
> --- a/include/linux/uio.h
> +++ b/include/linux/uio.h
> @@ -286,8 +286,6 @@ size_t _copy_mc_to_iter(const void *addr, size_t bytes, struct iov_iter *i);
> #endif
>
> size_t iov_iter_zero(size_t bytes, struct iov_iter *);
> -bool iov_iter_is_aligned(const struct iov_iter *i, unsigned addr_mask,
> - unsigned len_mask);
> unsigned long iov_iter_alignment(const struct iov_iter *i);
> unsigned long iov_iter_gap_alignment(const struct iov_iter *i);
> void iov_iter_init(struct iov_iter *i, unsigned int direction, const struct iovec *iov,
> diff --git a/lib/iov_iter.c b/lib/iov_iter.c
> index f9193f952f499..2fe66a6b8789e 100644
> --- a/lib/iov_iter.c
> +++ b/lib/iov_iter.c
> @@ -784,101 +784,6 @@ void iov_iter_discard(struct iov_iter *i, unsigned int direction, size_t count)
> }
> EXPORT_SYMBOL(iov_iter_discard);
>
> -static bool iov_iter_aligned_iovec(const struct iov_iter *i, unsigned addr_mask,
> - unsigned len_mask)
> -{
> - const struct iovec *iov = iter_iov(i);
> - size_t size = i->count;
> - size_t skip = i->iov_offset;
> -
> - do {
> - size_t len = iov->iov_len - skip;
> -
> - if (len > size)
> - len = size;
> - if (len & len_mask)
> - return false;
> - if ((unsigned long)(iov->iov_base + skip) & addr_mask)
> - return false;
> -
> - iov++;
> - size -= len;
> - skip = 0;
> - } while (size);
> -
> - return true;
> -}
> -
> -static bool iov_iter_aligned_bvec(const struct iov_iter *i, unsigned addr_mask,
> - unsigned len_mask)
> -{
> - const struct bio_vec *bvec = i->bvec;
> - unsigned skip = i->iov_offset;
> - size_t size = i->count;
> -
> - do {
> - size_t len = bvec->bv_len - skip;
> -
> - if (len > size)
> - len = size;
> - if (len & len_mask)
> - return false;
> - if ((unsigned long)(bvec->bv_offset + skip) & addr_mask)
> - return false;
> -
> - bvec++;
> - size -= len;
> - skip = 0;
> - } while (size);
> -
> - return true;
> -}
> -
> -/**
> - * iov_iter_is_aligned() - Check if the addresses and lengths of each segments
> - * are aligned to the parameters.
> - *
> - * @i: &struct iov_iter to restore
> - * @addr_mask: bit mask to check against the iov element's addresses
> - * @len_mask: bit mask to check against the iov element's lengths
> - *
> - * Return: false if any addresses or lengths intersect with the provided masks
> - */
> -bool iov_iter_is_aligned(const struct iov_iter *i, unsigned addr_mask,
> - unsigned len_mask)
> -{
> - if (likely(iter_is_ubuf(i))) {
> - if (i->count & len_mask)
> - return false;
> - if ((unsigned long)(i->ubuf + i->iov_offset) & addr_mask)
> - return false;
> - return true;
> - }
> -
> - if (likely(iter_is_iovec(i) || iov_iter_is_kvec(i)))
> - return iov_iter_aligned_iovec(i, addr_mask, len_mask);
> -
> - if (iov_iter_is_bvec(i))
> - return iov_iter_aligned_bvec(i, addr_mask, len_mask);
> -
> - /* With both xarray and folioq types, we're dealing with whole folios. */
> - if (iov_iter_is_xarray(i)) {
> - if (i->count & len_mask)
> - return false;
> - if ((i->xarray_start + i->iov_offset) & addr_mask)
> - return false;
> - }
> - if (iov_iter_is_folioq(i)) {
> - if (i->count & len_mask)
> - return false;
> - if (i->iov_offset & addr_mask)
> - return false;
> - }
> -
> - return true;
> -}
> -EXPORT_SYMBOL_GPL(iov_iter_is_aligned);
> -
> static unsigned long iov_iter_alignment_iovec(const struct iov_iter *i)
> {
> const struct iovec *iov = iter_iov(i);
> --
> 2.47.3
>
next prev parent reply other threads:[~2025-08-02 2:02 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-01 23:47 [PATCH 0/7] direct-io: even more flexible io vectors Keith Busch
2025-08-01 23:47 ` [PATCH 1/7] block: check for valid bio while splitting Keith Busch
2025-08-04 6:54 ` Hannes Reinecke
2025-08-01 23:47 ` [PATCH 2/7] block: align the bio after building it Keith Busch
2025-08-04 6:54 ` Hannes Reinecke
2025-08-04 14:08 ` Keith Busch
2025-08-04 16:47 ` Keith Busch
2025-08-05 6:54 ` Hannes Reinecke
2025-08-01 23:47 ` [PATCH 3/7] block: simplify direct io validity check Keith Busch
2025-08-04 6:55 ` Hannes Reinecke
2025-08-04 17:11 ` Keith Busch
2025-08-05 6:57 ` Hannes Reinecke
2025-08-01 23:47 ` [PATCH 4/7] iomap: " Keith Busch
2025-08-04 6:57 ` Hannes Reinecke
2025-08-01 23:47 ` [PATCH 5/7] block: remove bdev_iter_is_aligned Keith Busch
2025-08-04 6:57 ` Hannes Reinecke
2025-08-01 23:47 ` [PATCH 6/7] blk-integrity: use simpler alignment check Keith Busch
2025-08-04 6:58 ` Hannes Reinecke
2025-08-01 23:47 ` [PATCH 7/7] iov_iter: remove iov_iter_is_aligned Keith Busch
2025-08-02 2:02 ` Mike Snitzer [this message]
2025-08-04 14:16 ` Keith Busch
2025-08-04 15:25 ` Mike Snitzer
2025-08-04 15:27 ` Mike Snitzer
2025-08-04 22:26 ` Mike Snitzer
2025-08-04 22:57 ` Keith Busch
2025-08-05 0:24 ` Mike Snitzer
2025-08-02 15:37 ` [PATCH 0/7] direct-io: even more flexible io vectors Jens Axboe
2025-08-04 17:06 ` Keith Busch
2025-08-04 23:45 ` Keith Busch
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=aI1xySNUdQ2B0dbJ@kernel.org \
--to=snitzer@kernel.org \
--cc=axboe@kernel.dk \
--cc=brauner@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=dw@davidwei.uk \
--cc=kbusch@kernel.org \
--cc=kbusch@meta.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.