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 AD9AAC83F09 for ; Tue, 8 Jul 2025 16:06:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7D7346B009C; Tue, 8 Jul 2025 12:06:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 788156B009D; Tue, 8 Jul 2025 12:06:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6C46B6B009E; Tue, 8 Jul 2025 12:06:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 572396B009C for ; Tue, 8 Jul 2025 12:06:45 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id F03175AC54 for ; Tue, 8 Jul 2025 16:06:44 +0000 (UTC) X-FDA: 83641575528.10.1EBFBA0 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf05.hostedemail.com (Postfix) with ESMTP id 4726910000A for ; Tue, 8 Jul 2025 16:06:43 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=dvJUYEaV; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of snitzer@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=snitzer@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751990803; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=EkZ/pWmqJRf8MSGLd7ZtZbxdXTeayH7qSW70VUqxnRM=; b=e8xTYIrOnz/Y6EGYh0pQPHVafcCJ2deafgs+F5pYi8bHWF0ui9dbIfZ7i+hMxLFWO8MYfu oRtZYPpd4NHEHL3xWnn5+rXhdm3oe9Fi/rKerGHJdYbM0VNs2x69TC2TBCYokzFz1Nmt8d R5h+0YyKKiRxNj9V1yqChDS0lXiwP8Y= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751990803; a=rsa-sha256; cv=none; b=clFibOeeknLdmymkqvtxYZ/yCNDvU4z/zgqMdAKwYB5pID5hLvXYABAXxOUBy/C1KZHfjE rygmYciMkFKLHpZdqfAVIc21aj6RARoCElyH7ccq/oqp2dzryyCD4/2fQFe+lTX5gaeRBu BGJmg2qu02Bd8z4/OyrJJUxVj92KHEw= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=dvJUYEaV; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of snitzer@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=snitzer@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 8B5FD5C5E9F; Tue, 8 Jul 2025 16:06:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0D7D3C4CEED; Tue, 8 Jul 2025 16:06:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751990802; bh=ahmzE36HYW6wJVfPUoS5kJGyl6LNnaJZf5Oe4hRtmpw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dvJUYEaVTBtC3midjXAv6de8jxlYoSBLAsxvDzFM9LyC5vXh2Ossq9AotcBim3T1R xvZaP/hfpJK7MGP5m1w88MSxXjA88XQYURUYOhAFBgEODq5GolpxJ3owQ8RRySwHin +mZK290kfRFPeH0hFwfZqV6tKIdNhGDn4GOpUsl4JKSlY90olO1/tkK4DZn7Uq7GHt tPVGt8xNPsAwmVZpfZnyVO3ElggIm/YbGQYNGKdIJhy5I0E4/RJgaK9sFJiJY7BnQc VjjL3avdCMlWkkfn1PUy0DmHhpddgJTJ4tlEQZLcdpQtDfMpuKcYbfM7oT9iiI4RKD PWxA7Nefr4nKw== From: Mike Snitzer To: Chuck Lever , Jeff Layton , NeilBrown , Olga Kornievskaia , Dai Ngo , Tom Talpey , Trond Myklebust , Anna Schumaker Cc: linux-nfs@vger.kernel.org, linus-fsdevel@vger.kernel.org, linux-mm@kvack.org, snitzer@kernel.org Subject: [RFC PATCH v2 4/8] lib/iov_iter: remove piecewise bvec length checking in iov_iter_aligned_bvec Date: Tue, 8 Jul 2025 12:06:15 -0400 Message-ID: <20250708160619.64800-5-snitzer@kernel.org> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20250708160619.64800-1-snitzer@kernel.org> References: <20250708160619.64800-1-snitzer@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4726910000A X-Stat-Signature: h4xn1kbb8u19o7xcb61kygrpefgh87f1 X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1751990803-243171 X-HE-Meta: U2FsdGVkX1/w0+q4k/B2JrtL+ahAFsjj3fo2aq2EZSmwTMLnjh6SBKb0s2ojSIEeItgTluIIm9LMGNhlKp01RH/wHKSYJPKmIXJHU/GCr/b9HX7XlIXQxBnzqren34Bwx+T8OGiPm7DvFQ65mAtqJUtShs/RUub4asUCgnmpG0WDy64cmEfCXUaueA13Yd5Ig/BjUc4vjQbc+Hhw0IjQETc8rrpdCkdrXqb5YX3kt8+TZculFjUjXPWvt1qVBqlGviwLOx5XtBhDyJ8IsxR7vq710u6sazgV2M1PgErHJ8OvD1dBFH68Pic9nDPTkDc+nkYbjBOnhDkzEZudnBDeGAegp1D15sbmpdeukMM5POr0MxDCZFx01AmVsdACiFYLZZmku+6X2lY3G51sz87rCeD9/6VFgK9Vg2els7vjxJ7/F9tMaNWljTx/7h8RYjRAidrqcwjnnAtXFXuJJ9RfO+Xvei04Lexvx6C2Wc90VEeR081q0M1E17DPjprXWo+xVshqWFVu6dknieZaUAeZk66JVTjbzGIGVgpGRM0f5HdnQP3UdKHDlmAg06JyNdjSszRcky6Gd1JdfL01GIHYmVCCATvVgKxPOnrCjB9xgjGch5nFAqrYSzZTGHruXwEVMNuyv4FTYXBqJsZoQhIC8rEE/5VPDw4bYGZ7gkOO3Jo0bRhP939bEmcnml1bboCtGLEv7mgVBCL3whrmu9qZis4OEHyeLeowpBW11xyCse8Tnd/YcssHL71JigepVgx3tFiEm8pca469cbITaX0zU+D47ZUH0DKK3psBld6pkvsX0VHoKL2Xo/WyZj8Q3dUBanapfCbsh/a/3yQfjmACbxy9EbDPuVLvG8INHws9a1vjx4nsqsZp7R7eX778JhVFe/91bT+g1R0aiB3OLjPw1udz7gne3j2hNTbTdbSpB4ad3wZZRcXVwipQe1SYRzE/gbs+PIsiEeBYNPpsiou ho4Xf0nN Qq/hE8jJx4clEKzFGMWNsjXuDN1rNFWfahQBH4zBzuOtDL3otNZcGcfn0LFLpcFulr+UXkwQn/yMSHj+8n6uGxSkTJCvM6paZIOWXa6OxMBVugKnmREKXvIr4X8OH+pTGgJNxxrXdNMisnlRMJagwVtZ4yYVx4QmsCvD1IhZAofqnK4wdO1gDt2p089b4ybCpgbca+4KISTBTlUEjqN5NENVWrKN7PA2Jl5i9s1MahcT91exg3YQTIQId2h3jymnY/sSdDGr9g/4AwAxRapOrGn8W8w== 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: 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; -- 2.44.0