From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 855AEC83F1B for ; Thu, 10 Jul 2025 14:48:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 184246B0098; Thu, 10 Jul 2025 10:48:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 15B426B0099; Thu, 10 Jul 2025 10:48:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0714A6B009A; Thu, 10 Jul 2025 10:48:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id EA7126B0098 for ; Thu, 10 Jul 2025 10:48:09 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id C0C3C12940A for ; Thu, 10 Jul 2025 14:48:09 +0000 (UTC) X-FDA: 83648635098.20.965EDBE Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf16.hostedemail.com (Postfix) with ESMTP id 26665180011 for ; Thu, 10 Jul 2025 14:48:07 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Y9ZyXl10; spf=pass (imf16.hostedemail.com: domain of kbusch@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=kbusch@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752158888; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=CV2W5Bn9PR+vqDzpX0U0/re2L/gvJ2Ep+YLIVr51KTM=; b=RSnqU0IyACbtBDpmWrq4jC0/+LjYAZU+U6Ak1We7ueVj3crglawje14+bqtJTy8yo3uXsi xXP/L6RrrgwRKplv86HvFCk5bd26U3+XdVLi8Skk4KnZsD+TzkcG6PieueSb3qX2HT+VeS qUc24PXAIMwAlhkkgiSdUVz0O3g2jCg= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Y9ZyXl10; spf=pass (imf16.hostedemail.com: domain of kbusch@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=kbusch@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752158888; a=rsa-sha256; cv=none; b=UVbrWp81q7ew0v5KIEYZASCROuoes5bohtvdX0uMXLaXULuJq37j70UwtBtDA7kqRt+fGa DgjCLBeePrDsNpTDpYMfThZIKgEoao+64mwoyrwsNXVQb0ECOBCmV1oUW6I9oh4Px64JkI OaiorZNVzC+kKlaYbJnuypR5Jdnwa2M= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 0995F44081; Thu, 10 Jul 2025 14:48:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45502C4CEFA; Thu, 10 Jul 2025 14:48:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1752158886; bh=4kdArUE2zfQGk+lYSDnCbURs1/85EHuS+gaZaaPVFyM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Y9ZyXl10A4r+M0H4qFc4/M6cTSX2GJJ1FrfV2z4C/vSLmZx49CQ+h574D2B9VVf/C a/DnGGrnHaCP4Y7MFsK4zD6j6kBqSlJS/SFCX7WXV/l8tivldnwh9NIGGRPoz2IK6A NB1+2BNuqg142QCO7lGUJViYtUn9B4RrpOn15CEZmX/1wpCKND2pXOjODO00qBm01I uGnQEnZDbicAQCfjfkmGxsIqqIpfPvFNsF4WWSo9gmEDfHg5UjxuxBym3FdILZ3E6E ziJWjeyfEpePDtKnobCd0azqPiYFKtDQ8c1z/2RWBh2MYv/x0rOF+7z+R3IW8ooztd a4CPpCEDjoZQQ== Date: Thu, 10 Jul 2025 08:48:04 -0600 From: Keith Busch To: Jeff Layton Cc: Mike Snitzer , Chuck Lever , NeilBrown , Olga Kornievskaia , Dai Ngo , Tom Talpey , Trond Myklebust , Anna Schumaker , linux-nfs@vger.kernel.org, linus-fsdevel@vger.kernel.org, linux-mm@kvack.org, hch@infradead.org Subject: Re: [RFC PATCH v2 4/8] lib/iov_iter: remove piecewise bvec length checking in iov_iter_aligned_bvec Message-ID: References: <20250708160619.64800-1-snitzer@kernel.org> <20250708160619.64800-5-snitzer@kernel.org> <5819d6c5bb194613a14d2dcf05605e701683ba49.camel@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5819d6c5bb194613a14d2dcf05605e701683ba49.camel@kernel.org> X-Rspamd-Queue-Id: 26665180011 X-Stat-Signature: toz49qxqae3b5d1g9ybdzfmrfb41uzwp X-Rspam-User: X-Rspamd-Server: rspam07 X-HE-Tag: 1752158887-472280 X-HE-Meta: U2FsdGVkX18/lBIqiWsYPatinaoocfBSQq1+ptzvs6DTcwxzog10eqD/8H0dLAK6cX6J0K4yOjB+x2CuoDbeiHavQH3lLdZlokxBy//pKdCgKkA3ifUMZ+FTVW+bHNi8oUeVZkeUPOXr5CtBRgdfC+9Dy0goHy6XexnPMBb/ZUgbd94MS/rdFwPLsqJYIjB4mR5IM1WdIIv7rYkRLY2jY9PWGoNt6w2BOMPPW+rv8EnHPb1UigUm1Tcr2PK13SPv5bpBM37PVoqEbZp5v9M8aXTh5UHFnyOfRpB/5NtXo7rZHL9enF7Br/jCLLxzLk0jJo2aNkLNZ664bzNkPJ3L619VnVAIjWg3tZEBYF2YhpIELF+CKuyWvXL+B8+2DVKB1mnQ6dfap14Ypb8EVH9YN8Oyic18uQcXIeMp1N4BwYSmy0JUwQyg5vMBuHcyL4Rcl84n4DYy/pKA5M29Rrwn0p+vqBUu777yFdCoXuw+WEMhOAV5xCYVj/tvAHk1WXCgfAxJIfRn4yWk11RUruFo/eCd1XbXlKK8Y0bLj/1shzI2paT71SplnnqUwJ+pvWcJY4R70zqtJj1onPZMswzYmAIV8oJPx7UAsdUV/DevZcEuwIgTIamCBfqUqB4ksDttGIWdY9McG9gAPjMgNyJiH5f48JOln6+DnstQ8UiC4AYDFRn2pY9cBZ91K3M/54l2P9GyRuY9bgWnvJ6PuBUbDwX/1iz05EifexhSXg7qUep6yz0xCmnwZqJfyG/eI+Gv3kdokUFP6cS5T0GAD6Obq2KLeJR+t7ydUy0uG65pr/sv4sDkj39HNMkJOfxET3HoFKgkhSQTIS/35GF22X1NnuUkJQrbfkeafHBaZ7ORAPrKGFvnUqHHkD/UdWrKFLpNcQsoWmeREy4NBgL4/9qvOBBebVTeCEQ6xB9VNvWn9+GnqeZlUJWbpzUe0KTNLzvdXMvhqG2jUDzMnBxF4bQ EJLAgBFL liwfx X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Jul 10, 2025 at 09:52:53AM -0400, Jeff Layton wrote: > On Tue, 2025-07-08 at 12:06 -0400, Mike Snitzer wrote: > > iov_iter_aligned_bvec() is strictly checking alignment of each element > > of the bvec to arrive at whether the bvec is aligned relative to > > dma_alignment and on-disk alignment. Checking each element > > individually results in disallowing a bvec that in aggregate is > > perfectly aligned relative to the provided @len_mask. > > > > Relax the on-disk alignment checking such that it is done on the full > > extent described by the bvec but still do piecewise checking of the > > dma_alignment for each bvec's bv_offset. > > > > This allows for NFS's WRITE payload to be issued using O_DIRECT as > > long as the bvec created with xdr_buf_to_bvec() is composed of pages > > that respect the underlying device's dma_alignment (@addr_mask) and > > the overall contiguous on-disk extent is aligned relative to the > > logical_block_size (@len_mask). > > > > Signed-off-by: Mike Snitzer > > --- > > lib/iov_iter.c | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/lib/iov_iter.c b/lib/iov_iter.c > > index bdb37d572e97..b2ae482b8a1d 100644 > > --- a/lib/iov_iter.c > > +++ b/lib/iov_iter.c > > @@ -819,13 +819,14 @@ static bool iov_iter_aligned_bvec(const struct iov_iter *i, unsigned addr_mask, > > unsigned skip = i->iov_offset; > > size_t size = i->count; > > > > + if (size & len_mask) > > + return false; > > + > > do { > > size_t len = bvec->bv_len; > > > > if (len > size) > > len = size; > > - if (len & len_mask) > > - return false; > > if ((unsigned long)(bvec->bv_offset + skip) & addr_mask) > > return false; > > > > cc'ing Keith too since he wrote this helper originally. Thanks. There's a comment in __bio_iov_iter_get_pages that says it expects each vector to be a multiple of the block size. That makes it easier to slit when needed, and this patch would allow vectors that break the current assumption when calculating the "trim" value. But for nvme, you couldn't split such a bvec into a usable command anyway. I think you'd have to introduce a different queue limit to check against when validating iter alignment if you don't want to use the logical block size.