From nobody Sun Oct 5 14:45:21 2025 Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3FBB223A9A3 for ; Fri, 1 Aug 2025 23:47:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.153.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092078; cv=none; b=ZocKFmDT3GLAysBjZlDPsHgiLbBwaula5q0vTWwNMc3d4jjgIgNhai12kCRaOVI+fo9IdTuhZm4UqiESUUvCSuRpmkrQ1RzVoO5mfgCtZe0EoIY8ka0HTW2cgnS18suZ0o5gVAD9QY8kf3DvCgP3LTEQxI+F9VJ2KaiXxHHrbGM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092078; c=relaxed/simple; bh=mwigh1V2idY6A9SL9/L28WFx/NM7jlg95nqe0sqP/+8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hf7Rslj0UGN7GXyJRmAeFmAWruDYZNFqTomLy4vDr6ior65O1Gdo63IVM9OGV3dSn3YnRnF/qMfOkzAKFItoLVXX3Zwk00G2+lr3iWBpbjvrC3sPOWUYgeNPAtGBR66hUP+5iSVVMG809L2TsgRSN4SxRjG95nsysZkaSbi+uXw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com; spf=pass smtp.mailfrom=meta.com; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b=JkS333+4; arc=none smtp.client-ip=67.231.153.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meta.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b="JkS333+4" Received: from pps.filterd (m0001303.ppops.net [127.0.0.1]) by m0001303.ppops.net (8.18.1.2/8.18.1.2) with ESMTP id 571MmoZh009340 for ; Fri, 1 Aug 2025 16:47:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=s2048-2025-q2; bh=uwipLhSqn5UZC2Kg5fR+JZ+r9AkyBc1BguZBiS8eRTA=; b=JkS333+41vwn kPt021BWRQWDXTqSGe9/AzL3B8iDGkPqCU6ubnxO3W/AH47G2If56rMx5286oDEQ FiUKNGvaGaIfSGuABE6JWnMyrjNekv5IagiQdJfcmwaNjgUmJatWygsF4f1Kw4ll EmaSucgv9zpnIq318SV36w7qyi9CblG9XSloe56KdWPTHtS2MJFOyFouYHnYGV9n d9mcrpkmvM0h+EQX3Woa5enwDMagIvyeqZTQotxsuO4QgsC5wOuOFIq8qL6IMWtI FqWYNgpJO677xhUVWszpMcfVYF3R+IdIw7fubQfDm1W7rUVIdRuiLeErYfLIMTXv +9KjtD4MDQ== Received: from maileast.thefacebook.com ([163.114.135.16]) by m0001303.ppops.net (PPS) with ESMTPS id 488rmtwjvt-11 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 01 Aug 2025 16:47:55 -0700 (PDT) Received: from twshared31684.07.ash9.facebook.com (2620:10d:c0a8:1b::2d) by mail.thefacebook.com (2620:10d:c0a9:6f::237c) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 1 Aug 2025 23:47:50 +0000 Received: by devbig197.nha3.facebook.com (Postfix, from userid 544533) id A54B73105E9; Fri, 1 Aug 2025 16:47:36 -0700 (PDT) From: Keith Busch To: , , CC: , , , , Keith Busch Subject: [PATCH 1/7] block: check for valid bio while splitting Date: Fri, 1 Aug 2025 16:47:30 -0700 Message-ID: <20250801234736.1913170-2-kbusch@meta.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250801234736.1913170-1-kbusch@meta.com> References: <20250801234736.1913170-1-kbusch@meta.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe X-Proofpoint-GUID: ZepdBXsvEkDLcADmTJo-c0qY7pavh4aa X-Authority-Analysis: v=2.4 cv=Vej3PEp9 c=1 sm=1 tr=0 ts=688d522b cx=c_pps a=MfjaFnPeirRr97d5FC5oHw==:117 a=MfjaFnPeirRr97d5FC5oHw==:17 a=2OwXVqhp2XgA:10 a=VwQbUJbxAAAA:8 a=-ftljxYXmFZ9yweOdTYA:9 X-Proofpoint-ORIG-GUID: ZepdBXsvEkDLcADmTJo-c0qY7pavh4aa X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAxMDE5MyBTYWx0ZWRfX0VDjKzENI4f+ bdaWW8Ihd0HYJbozXi2sJAf4wfD1BwqcCA5T3kMKTfLCS15ADA36ovWE9+uF7SQf4mdAd2BhJwE qU3lgnqKrXsldXzHa6/9r7G1LjnRoFAkZeTz3FDNOmxnIaBGrZnQIc94Pp3KlRQrKVP7IZUJDYt B61pI+YY8Sfqs1l9j7u6EbiKWmTmxs+hT/K7hlWysMbJqkfqne2Z7G59ySuVzb45koWKLTfakaq /kZZ4LTIzZdFmfLQzlrHfOZnbcrx8/pGj0KcN/EE4v4dKP5uHGKsjUFUTOvKP5aJB5kuKE6+2OW yIWQBO4BVDPoiWuodyf39g1YkZFGzER/9iE/ig6xRD3KpWz8B8FuAzjiqdppPpCp8G+yFjQkiVK p5QwFlACC9zeaU45b/pw82xswt26OySrO+IJyufrpY9W483rOiEdScVX7zAdv/n4Xfv2m38i X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-01_08,2025-08-01_01,2025-03-28_01 Content-Type: text/plain; charset="utf-8" From: Keith Busch We're already iterating every segment, so check alignment for a valid IO at the same time. We had depended on these constraints were already checked prior to splitting, but let's put more responsibility here since splitting iterates each segment before dispatching to the driver anyway. This way, upper layers don't need to concern themselves with it. Signed-off-by: Keith Busch Reviewed-by: Hannes Reinecke --- block/blk-merge.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/block/blk-merge.c b/block/blk-merge.c index 70d704615be52..81bdad915699a 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -298,6 +298,9 @@ int bio_split_rw_at(struct bio *bio, const struct queue= _limits *lim, unsigned nsegs =3D 0, bytes =3D 0; =20 bio_for_each_bvec(bv, bio, iter) { + if (bv.bv_offset & lim->dma_alignment) + return -EINVAL; + /* * If the queue doesn't support SG gaps and adding this * offset would create a gap, disallow it. @@ -341,6 +344,8 @@ int bio_split_rw_at(struct bio *bio, const struct queue= _limits *lim, * we do not use the full hardware limits. */ bytes =3D ALIGN_DOWN(bytes, bio_split_alignment(bio, lim)); + if (!bytes) + return -EINVAL; =20 /* * Bio splitting may cause subtle trouble such as hang when doing sync --=20 2.47.3 From nobody Sun Oct 5 14:45:21 2025 Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 17399240611 for ; Fri, 1 Aug 2025 23:47:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.153.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092075; cv=none; b=VkipRn+CvbX8QaQufXfTjksFOzk7YCJDVh64qy09Mr9m3c6yJfjcyW7ZaJi7jeo0b/8CqGl7lbENaQ6psw7AHiQx6pllOWO+ynijJac1UIkgL9eS214FKEtgr3YNi194Z9J8FnFs9K0qXamF50OVuuVzLBAfupqMKXCwYdqkLeA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092075; c=relaxed/simple; bh=jzlRcqxemBScBaRTLQp2jW6SAY6QfbaJO5r5WJ+UUAQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Ux+KIJ4NdXygl+Rnw5FtxbpSUB4IU3PrbJslCmk/GpRF8y+mJV9Clo6RucyCT+WtrIYHDrMyobzikRRIRsrRolwkHTCbEWhfsLNdACq/OpQbSoM0iSFiMMkpyfET4b7boT9SKRgIlnL5C39LxBNztiv41b9fv8y1In/YjGnXnf8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com; spf=pass smtp.mailfrom=meta.com; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b=M6zi21Id; arc=none smtp.client-ip=67.231.153.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meta.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b="M6zi21Id" Received: from pps.filterd (m0001303.ppops.net [127.0.0.1]) by m0001303.ppops.net (8.18.1.2/8.18.1.2) with ESMTP id 571MmoZZ009340 for ; Fri, 1 Aug 2025 16:47:52 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=s2048-2025-q2; bh=XtBdupgbjKwCohMaMZDsYVHKfLDcKQSvu9287xyburU=; b=M6zi21IdQ41s DY5P2QZg/ySFDsISkZzN8UxvKhnxrYAKUhE2elhH2O1FRMR1EMPZm2y1X+I/+TS4 AzWuUOKHX8K+QnVE085dX07IvuOD0J2hhsnCB9q7Jgduva+V2wU3Hr1eNMqV9P3w q3GeVCwQ3nXUqno2k418XU07mFEXYyo2Jjv+LeEvoCoVIMmTQjHvbgRccxBCaPBN UJIVP2VNgbSSqVFfDKPrUrVAOMUEbOhd78GHl7l3Lbh26P8D54axSUsztF79nML+ TLkqdS96WukXc9+DBZ5emRTI6k58wb+eKRM1TzmwB94QlYBqcGgo61LzozU0Kpqg qkCd1YhxVQ== Received: from maileast.thefacebook.com ([163.114.135.16]) by m0001303.ppops.net (PPS) with ESMTPS id 488rmtwjvt-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 01 Aug 2025 16:47:52 -0700 (PDT) Received: from twshared31684.07.ash9.facebook.com (2620:10d:c0a8:1c::1b) by mail.thefacebook.com (2620:10d:c0a9:6f::237c) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 1 Aug 2025 23:47:50 +0000 Received: by devbig197.nha3.facebook.com (Postfix, from userid 544533) id AC5823105EB; Fri, 1 Aug 2025 16:47:36 -0700 (PDT) From: Keith Busch To: , , CC: , , , , Keith Busch Subject: [PATCH 2/7] block: align the bio after building it Date: Fri, 1 Aug 2025 16:47:31 -0700 Message-ID: <20250801234736.1913170-3-kbusch@meta.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250801234736.1913170-1-kbusch@meta.com> References: <20250801234736.1913170-1-kbusch@meta.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe X-Proofpoint-GUID: QDJA5LaVjKhBpoE3hQEJDrkmXPl1AX86 X-Authority-Analysis: v=2.4 cv=Vej3PEp9 c=1 sm=1 tr=0 ts=688d5228 cx=c_pps a=MfjaFnPeirRr97d5FC5oHw==:117 a=MfjaFnPeirRr97d5FC5oHw==:17 a=2OwXVqhp2XgA:10 a=VwQbUJbxAAAA:8 a=vjHh1zdRauUgFv1HwnwA:9 X-Proofpoint-ORIG-GUID: QDJA5LaVjKhBpoE3hQEJDrkmXPl1AX86 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAxMDE5MyBTYWx0ZWRfX60+XvHYrAt4s sHf1QoyeRocfg1LRcPPRDCymIDt9WySU2Y/91OEMbjRb9BkuFzp2uSWeN+Z7k+F2HiMxCh50GZL YXYt3NQs4RjPWeTCS9rI73w0PofPj4CiQGSzEtC+2vSVQgftI1xPXT71dOLAn4EO+LQr9gr91gZ 0CuAO1qCQGvO5q3ZBjbpCCg5/+amEikcACpIaB4t5OU/kSSbvTDMeNBSklzB6BMDbTtGobBeT9Y 9tk19uU4uW0rnvEkiOtMv7HiZu63Wz7j42EskM6++9EPqGcBIYsnT0qiWpJjM17yVefwI9GFt9E B1LoWvD+hYoOAHyiOwRtkJcUDqlipt/90TSFZRMgRbLytgDIuu2fIV/LXE2+0344R5YOjIEMZbk dIlWNguxHgdMUDrdnAn6LdotbOAwBu14d7HrydHRAMOaCMDbKZYiWtYo9HV/xU1bWvyeA4N0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-01_08,2025-08-01_01,2025-03-28_01 Content-Type: text/plain; charset="utf-8" From: Keith Busch Ensure the entire size is aligned after it's built instead of ensuring each vector is block size aligned while constructing it. This makes it more flexible to accepting device valid vectors that would otherwise get rejected by overzealous alignment checks. Signed-off-by: Keith Busch --- block/bio.c | 58 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/block/bio.c b/block/bio.c index 92c512e876c8d..c050903e1be0c 100644 --- a/block/bio.c +++ b/block/bio.c @@ -1227,13 +1227,6 @@ static int __bio_iov_iter_get_pages(struct bio *bio,= struct iov_iter *iter) if (bio->bi_bdev && blk_queue_pci_p2pdma(bio->bi_bdev->bd_disk->queue)) extraction_flags |=3D ITER_ALLOW_P2PDMA; =20 - /* - * Each segment in the iov is required to be a block size multiple. - * However, we may not be able to get the entire segment if it spans - * more pages than bi_max_vecs allows, so we have to ALIGN_DOWN the - * result to ensure the bio's total size is correct. The remainder of - * the iov data will be picked up in the next bio iteration. - */ size =3D iov_iter_extract_pages(iter, &pages, UINT_MAX - bio->bi_iter.bi_size, nr_pages, extraction_flags, &offset); @@ -1241,18 +1234,6 @@ static int __bio_iov_iter_get_pages(struct bio *bio,= struct iov_iter *iter) return size ? size : -EFAULT; =20 nr_pages =3D DIV_ROUND_UP(offset + size, PAGE_SIZE); - - if (bio->bi_bdev) { - size_t trim =3D size & (bdev_logical_block_size(bio->bi_bdev) - 1); - iov_iter_revert(iter, trim); - size -=3D trim; - } - - if (unlikely(!size)) { - ret =3D -EFAULT; - goto out; - } - for (left =3D size, i =3D 0; left > 0; left -=3D len, i +=3D num_pages) { struct page *page =3D pages[i]; struct folio *folio =3D page_folio(page); @@ -1297,6 +1278,44 @@ static int __bio_iov_iter_get_pages(struct bio *bio,= struct iov_iter *iter) return ret; } =20 +static inline void bio_revert(struct bio *bio, unsigned int nbytes) +{ + bio->bi_iter.bi_size -=3D nbytes; + + while (nbytes) { + struct bio_vec *bv =3D &bio->bi_io_vec[bio->bi_vcnt - 1]; + + if (nbytes < bv->bv_len) { + bv->bv_len -=3D nbytes; + return; + } + + bio_release_page(bio, bv->bv_page); + bio->bi_vcnt--; + nbytes -=3D bv->bv_len; + } +} + +static int bio_align_to_lbs(struct bio *bio, struct iov_iter *iter) +{ + struct block_device *bdev =3D bio->bi_bdev; + size_t nbytes; + + if (!bdev) + return 0; + + nbytes =3D bio->bi_iter.bi_size & (bdev_logical_block_size(bdev) - 1); + if (!nbytes) + return 0; + + bio_revert(bio, nbytes); + iov_iter_revert(iter, nbytes); + if (!bio->bi_iter.bi_size) + return -EFAULT; + + return 0; +} + /** * bio_iov_iter_get_pages - add user or kernel pages to a bio * @bio: bio to add pages to @@ -1336,6 +1355,7 @@ int bio_iov_iter_get_pages(struct bio *bio, struct io= v_iter *iter) ret =3D __bio_iov_iter_get_pages(bio, iter); } while (!ret && iov_iter_count(iter) && !bio_full(bio, 0)); =20 + ret =3D bio_align_to_lbs(bio, iter); return bio->bi_vcnt ? 0 : ret; } EXPORT_SYMBOL_GPL(bio_iov_iter_get_pages); --=20 2.47.3 From nobody Sun Oct 5 14:45:21 2025 Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D11A23C8A8 for ; Fri, 1 Aug 2025 23:47:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.153.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092074; cv=none; b=R9QFq4EAIwyB63EaEvauY7dRe8lJ4GF9Eo16LaY8tszW7M0ufJkDj2tFza/5HX/RlNEqVSp89+gIuKodJ8be9mUsyYTJWjB50oG3rheXQLKYHamKBdCMloi+AeG/JxpvpTmQ41X+7N2djQKlDTDKjkAFhOYOGaBRD8pebwxxGfs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092074; c=relaxed/simple; bh=gdIVjT3vlKOt+2mbfWTWwWZ2gPoA7XxoHfplCpsaon8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=O3LSbVAplP7ap+40fkQ5NSB7oVINI17xfqACxonT92FY7cLAnmHqDmEBvBxghBJjqwsRnJ+YbGqBnpoNEm8GcR0eFDT31L+9D7yRAckRAD6dLK0ZL1jVLKnBqmvauTBpE0m8z06eWxplfSYZp83DuhTMBaPh3M3UTHWxkOczzyU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com; spf=pass smtp.mailfrom=meta.com; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b=dl1NAjHo; arc=none smtp.client-ip=67.231.153.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meta.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b="dl1NAjHo" Received: from pps.filterd (m0001303.ppops.net [127.0.0.1]) by m0001303.ppops.net (8.18.1.2/8.18.1.2) with ESMTP id 571MmoZX009340 for ; Fri, 1 Aug 2025 16:47:51 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=s2048-2025-q2; bh=1SMXkSebdaxUaoNdomo0qGyDMDQR8jUQzMvUjgNXeBc=; b=dl1NAjHoKtdf 40azB8cH8aKrpu4U3nB5u/zuNbF0DRTB8fjdNMKIwt1sD9/ZeCMQdBAP4GcG5Ym+ x/9j7HeJROiIgrlrGoEyeqLQTcJN+g/S+Yd0S518B8oKpx4uxfMxAoIhY71F4jvx 5hbH220NfU28MPv8DuCuEmRnOZOWM+ZueLSTdESDWlH8u1I0dcFU4ItUKAJAGhT5 vCbHMj9VZvn6pZ9R4I3+Pj+Eajbkc9/9bELORqhwDRn4hOxJagchN/iVX0DIDNQI z0b/tI4dP7rTs2d6YCdGfQVRnhjHtYNd5854I1HhNYrOKnmPOQTioiEpvV/b8rX6 n9yiGf6ycg== Received: from maileast.thefacebook.com ([163.114.135.16]) by m0001303.ppops.net (PPS) with ESMTPS id 488rmtwjvt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 01 Aug 2025 16:47:51 -0700 (PDT) Received: from twshared31684.07.ash9.facebook.com (2620:10d:c0a8:fe::f072) by mail.thefacebook.com (2620:10d:c0a9:6f::237c) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 1 Aug 2025 23:47:50 +0000 Received: by devbig197.nha3.facebook.com (Postfix, from userid 544533) id B2F063105EF; Fri, 1 Aug 2025 16:47:36 -0700 (PDT) From: Keith Busch To: , , CC: , , , , Keith Busch Subject: [PATCH 3/7] block: simplify direct io validity check Date: Fri, 1 Aug 2025 16:47:32 -0700 Message-ID: <20250801234736.1913170-4-kbusch@meta.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250801234736.1913170-1-kbusch@meta.com> References: <20250801234736.1913170-1-kbusch@meta.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe X-Proofpoint-GUID: kWSwjiF5Msdou-mGkN737JN8qvIfc4Ev X-Authority-Analysis: v=2.4 cv=Vej3PEp9 c=1 sm=1 tr=0 ts=688d5227 cx=c_pps a=MfjaFnPeirRr97d5FC5oHw==:117 a=MfjaFnPeirRr97d5FC5oHw==:17 a=2OwXVqhp2XgA:10 a=VwQbUJbxAAAA:8 a=IZBY3vBkjIs1pqmLj1YA:9 X-Proofpoint-ORIG-GUID: kWSwjiF5Msdou-mGkN737JN8qvIfc4Ev X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAxMDE5MyBTYWx0ZWRfX+rMQWI48xmSQ IRErfzqAtCe8u3oI65y/cTSnLIb4OSRAiIE5FeUjHyp8lcrWvjbaPev44uhrSyWwfbAkzmGyqSq 3uH68Z7qH159/349yYHa4edTmer+I5jviAzQrQ8T6G81E6u15fYbL0Lh3MhNUk/RIVp9KNvVfB1 BM+3iTyqVXZMoKd6mqeLqmwoK0zh6BWlnkwMP+oBbW2UUQmPVv/6BEDhAreoKIY0RYtf1VOl2SM GMSA8jLzZM9g4mfkFy40TN2SKNwvO2s5poDUV6kAzwwwXm3SovDb7eLrR4spYmJCf8PWSYKSOw3 qBGf0WdC+2Z+rAFfluG0+mN9T+kbu+7cqBOc9qsJlAZP3ADgzcP2uwg7fnJuXYnMh8eeRJ5WUma L+8wTpUsEO9R8inPsGwR/vIrencBR9s6ovf3Ol9MdgqnCmWIuizmQg07etLif6KrBi0CQ75J X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-01_08,2025-08-01_01,2025-03-28_01 Content-Type: text/plain; charset="utf-8" From: Keith Busch The block layer checks all the segments for validity later, so no need for an early check. Just reduce it to a simple position and total length and defer the segment checks to the block layer. Signed-off-by: Keith Busch --- block/fops.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/fops.c b/block/fops.c index 82451ac8ff25d..820902cf10730 100644 --- a/block/fops.c +++ b/block/fops.c @@ -38,8 +38,8 @@ static blk_opf_t dio_bio_write_op(struct kiocb *iocb) static bool blkdev_dio_invalid(struct block_device *bdev, struct kiocb *io= cb, struct iov_iter *iter) { - return iocb->ki_pos & (bdev_logical_block_size(bdev) - 1) || - !bdev_iter_is_aligned(bdev, iter); + return (iocb->ki_pos | iov_iter_count(iter)) & + (bdev_logical_block_size(bdev) - 1); } =20 #define DIO_INLINE_BIO_VECS 4 --=20 2.47.3 From nobody Sun Oct 5 14:45:21 2025 Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8F85524336D for ; Fri, 1 Aug 2025 23:47:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.153.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092077; cv=none; b=r23CiS59zD1uCX65qjHRmUTvUvtQslwKNzUNmSgtbzj5khXkTVtCjemQT1GVZRwV+cqp62HXfjRkHiDD0Ghl+i4/lJMSNmV5hwOYdgwrKclGbYBrHXKebT4fYMnWY4c/v1MWmZYqMIJs5dkfsGbghXIwxv6ExFlE1vtjXtqRpCg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092077; c=relaxed/simple; bh=qqM7XP0L7nIP6eDwvhuc1u0A0DYGoKFdOJeN8XlyoZc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=QC3/1TPJSTANLk8572YSIwemdWA8mQY2R3HZl31VF6QwcFkpHxRt0Yqlx2iiMnKQVRBEgoeA0rSwP46MmCrT2iLju5Gx5yGm3f+2w5rD12nwDxGPwM99OVNB39P1TLYe+7KLSoChEI17c7NqWQNNXlCTU8BegmvE1zZBWYHIJUw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com; spf=pass smtp.mailfrom=meta.com; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b=mc+Sqfvk; arc=none smtp.client-ip=67.231.153.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meta.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b="mc+Sqfvk" Received: from pps.filterd (m0001303.ppops.net [127.0.0.1]) by m0001303.ppops.net (8.18.1.2/8.18.1.2) with ESMTP id 571MmoZd009340 for ; Fri, 1 Aug 2025 16:47:54 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=s2048-2025-q2; bh=uuy065QjwhzxX+HyBnYJHygu3ula9t7x2rGLsBYiE7k=; b=mc+SqfvkifZa zJMdym2CKp0uKTDtWynLa0wPzKbTdeGXWo5aGqGCsXWtIUHtZzOxE4sf3goyOtK4 siK1p7VyET6zvFFhLuY/TT24jjzZNrb/mhhl91E+05OsEVOh69l6GJihwH342LZy bRZXuApn70aY28AzRMvGLv00mvhKB1CNJxEM/LSn5ows+zIBLkTrn5z7Uwoo5lCc WO1tcWWcZ+YEfasZneXcVCzwN3xoBOM2ZybLiH08/iY4raxRZDjKiz2KRihOYYx7 UJCenrXI/zXrgEAbComUVMnyJGdkenlo/HZ43ku4q4KKfWFFVFEb5LVcyAMm5P5s LeNaDMS/rg== Received: from maileast.thefacebook.com ([163.114.135.16]) by m0001303.ppops.net (PPS) with ESMTPS id 488rmtwjvt-7 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 01 Aug 2025 16:47:54 -0700 (PDT) Received: from twshared31684.07.ash9.facebook.com (2620:10d:c0a8:1b::2d) by mail.thefacebook.com (2620:10d:c0a9:6f::237c) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 1 Aug 2025 23:47:50 +0000 Received: by devbig197.nha3.facebook.com (Postfix, from userid 544533) id BD2F83105F2; Fri, 1 Aug 2025 16:47:36 -0700 (PDT) From: Keith Busch To: , , CC: , , , , Keith Busch Subject: [PATCH 4/7] iomap: simplify direct io validity check Date: Fri, 1 Aug 2025 16:47:33 -0700 Message-ID: <20250801234736.1913170-5-kbusch@meta.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250801234736.1913170-1-kbusch@meta.com> References: <20250801234736.1913170-1-kbusch@meta.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe X-Proofpoint-GUID: FCX3FDBbuKLLivf9ioMbEXAnKwMFQTcP X-Authority-Analysis: v=2.4 cv=Vej3PEp9 c=1 sm=1 tr=0 ts=688d522a cx=c_pps a=MfjaFnPeirRr97d5FC5oHw==:117 a=MfjaFnPeirRr97d5FC5oHw==:17 a=2OwXVqhp2XgA:10 a=VwQbUJbxAAAA:8 a=N-9tSbTDVoy7b94FiVkA:9 X-Proofpoint-ORIG-GUID: FCX3FDBbuKLLivf9ioMbEXAnKwMFQTcP X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAxMDE5MyBTYWx0ZWRfXyYhKAc9tY305 XITlTyS4kPrVHck6a69f2/yqx/rfeQpLfcU+H4pJ/PKMFzQyhKZds5TSNgMTL4S7GnncVQ3X1TN gEfE6255dV9XNWo0o20Wn7taMlEGIbikh+V4douq0QZEysysLcSdSw6SKgnbEWEvymR+4GaTasL N+7P4ZHoqjUpR3NqW/XEpkF8uHumTM/426KSfOTvYS7FYeE1/au+h5CblY8d2i3X/M1fSeqQjNx GFwkoNkrJAT7WzSO6HCGr3jLQ9u/+Sh0IlObAHQsJlYhVpLU+tkmq+zJsVZZunn5d3c2eraOopC oQ4fETa9bLbR09XqtXJh6+Gth70CRP4U+5gnwC+QWrbHyZEhCIbe5hUhwUJJokEF2IkhIHfxv8g MIgZehSJmM3EIKbEK0TDu8weKKb6Pi3cAedmT/4hY13PPg6cXY7JMciGCYGo4CkORPQ6V5YT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-01_08,2025-08-01_01,2025-03-28_01 Content-Type: text/plain; charset="utf-8" From: Keith Busch The block layer checks all the segments for validity later, so no need for an early check. Just reduce it to a simple position and total length and defer the segment checks to the block layer. Signed-off-by: Keith Busch --- fs/iomap/direct-io.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index 6f25d4cfea9f7..2c1a45e46dc75 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -337,8 +337,7 @@ static int iomap_dio_bio_iter(struct iomap_iter *iter, = struct iomap_dio *dio) u64 copied =3D 0; size_t orig_count; =20 - if ((pos | length) & (bdev_logical_block_size(iomap->bdev) - 1) || - !bdev_iter_is_aligned(iomap->bdev, dio->submit.iter)) + if ((pos | length) & (bdev_logical_block_size(iomap->bdev) - 1)) return -EINVAL; =20 if (dio->flags & IOMAP_DIO_WRITE) { --=20 2.47.3 From nobody Sun Oct 5 14:45:21 2025 Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7E83E2367A3 for ; Fri, 1 Aug 2025 23:47:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.153.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092076; cv=none; b=TubfGhvLPd8S5P43lO22m9E6Ww/kU9eSs9KMmikTnxJ+Ukf/YjqeKIFtzcFcZqVZmc0Y5mOQVjh8JLI4ypjfUjA0d3a3bYp3TaORElOajCm90gxJ9Mgd2YR33sJfAFq/Dt7kksTyUoSc4uSkfOf+5PRCDxmOvn/A3r1FQVDwWIc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092076; c=relaxed/simple; bh=LwfLMBx23lediDy38Qjg9yw1tMW2Thke+PTvuAKHnIw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=pHbIBvbGfpu/Px4708sA1rKX3/fnLLGD9clAz4taQD6jnfnjcWGmdVo+ROfPg2eB6TxhUq1umbzO7fYyEqtfamCJs5SG86bPgSIZO+sIprdrYk78IUwkcWWTgCnmGFwbIIkUiaVRb0oxXHn29xOZEFvEbYYkob+tNA3+Aot2nTc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com; spf=pass smtp.mailfrom=meta.com; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b=i3gngBtl; arc=none smtp.client-ip=67.231.153.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meta.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b="i3gngBtl" Received: from pps.filterd (m0089730.ppops.net [127.0.0.1]) by m0089730.ppops.net (8.18.1.2/8.18.1.2) with ESMTP id 571MmoU0020635 for ; Fri, 1 Aug 2025 16:47:53 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=s2048-2025-q2; bh=xevAOEXt3D+HBE/6RPgSfiie3n3mLq2ykCT4rEmyCL0=; b=i3gngBtlYCiq YEtmqr/iv/A/VarP+J0KLQ4KiHpba58/NrV5MpjqTSZlJtjtGwJF3c+vz4A4Xe2v QMlQ9pFFmNz6Y/WQc8w7wFjgTddVhchUmiWMnLRM/v2dZDV+NNCQQn91xT8tAQQI OCMmGOObBQbDsegzPqKaWdQD0Ong46WlVqfQMIm8Qkzky7IHkBkHBgpUhqN2JFgM z+FW7iIytTfNHd/qvN+EPJewZHxhW051YA7F/IrJP/N57gCvtnGHMlT91Gty+fef tZ0fanjTESwa1hsNsE0Bhy1jEAzFNVK4lfqjr2euHGqc4wDJ8/v9lX4RH1sHPvnH 7wRw/HX3Zw== Received: from mail.thefacebook.com ([163.114.134.16]) by m0089730.ppops.net (PPS) with ESMTPS id 488rmynk9w-11 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 01 Aug 2025 16:47:53 -0700 (PDT) Received: from twshared42488.16.frc2.facebook.com (2620:10d:c085:208::7cb7) by mail.thefacebook.com (2620:10d:c08b:78::c78f) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 1 Aug 2025 23:47:51 +0000 Received: by devbig197.nha3.facebook.com (Postfix, from userid 544533) id C30BB3105F4; Fri, 1 Aug 2025 16:47:36 -0700 (PDT) From: Keith Busch To: , , CC: , , , , Keith Busch Subject: [PATCH 5/7] block: remove bdev_iter_is_aligned Date: Fri, 1 Aug 2025 16:47:34 -0700 Message-ID: <20250801234736.1913170-6-kbusch@meta.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250801234736.1913170-1-kbusch@meta.com> References: <20250801234736.1913170-1-kbusch@meta.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe X-Authority-Analysis: v=2.4 cv=DptW+H/+ c=1 sm=1 tr=0 ts=688d5229 cx=c_pps a=CB4LiSf2rd0gKozIdrpkBw==:117 a=CB4LiSf2rd0gKozIdrpkBw==:17 a=2OwXVqhp2XgA:10 a=VwQbUJbxAAAA:8 a=x-sBDG6hxYFL5DTe09MA:9 X-Proofpoint-ORIG-GUID: IICE_vEPIeVmK5DKrGIM21_emN19hcxd X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAxMDE5MyBTYWx0ZWRfX2u5SDasuwMk2 5gyR9CMuJVzBKS3hjK1mfGtHCYVPOWLiG+EryyKIzFKUeBOWAqI8dfRNxMNdIuYt2Z1tt5f/4u4 8LwR9ECeu0MqeeD713BU7raE9BCsV29OioAeVkFvbsjskyyVu9a9jH0dm05eeGdkTe0U24Nc1tt By1lp4erQWq8sUcxqD7VewcuJb4FtbSkaBGwQckwMXaCnI/glmyLXonLPd6M5noIamEnrRWnt09 iaXkLl6WLivkApuGeTPvREv1W2fSgn9ggAKczovX4o8OwAjGvjKX8eRSPXPeECEMhIggyKySqPr zrjYuh9Z6hNC6Q/WZ67fEHg4ya5pK4DWnO1xGyzi5nDvnl8hLxqyv33bFSDWeo1l97yZaIbx6a7 ZalEpJCWdzcJFPSnQAvKXO0hJgetoawNZGOunCUsOku93+ooFrjbJNj49jbQnGJ3Fh3krXdm X-Proofpoint-GUID: IICE_vEPIeVmK5DKrGIM21_emN19hcxd X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-01_08,2025-08-01_01,2025-03-28_01 Content-Type: text/plain; charset="utf-8" From: Keith Busch No more callers. Signed-off-by: Keith Busch --- include/linux/blkdev.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 95886b404b16b..f86aecbb87385 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1589,13 +1589,6 @@ static inline unsigned int bdev_dma_alignment(struct= block_device *bdev) return queue_dma_alignment(bdev_get_queue(bdev)); } =20 -static inline bool bdev_iter_is_aligned(struct block_device *bdev, - struct iov_iter *iter) -{ - return iov_iter_is_aligned(iter, bdev_dma_alignment(bdev), - bdev_logical_block_size(bdev) - 1); -} - static inline unsigned int blk_lim_dma_alignment_and_pad(struct queue_limits *lim) { --=20 2.47.3 From nobody Sun Oct 5 14:45:21 2025 Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D58C28F51E for ; Fri, 1 Aug 2025 23:47:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.153.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092079; cv=none; b=YP0Dg00GYeeTz7QHAKc4oT9J0j1Ip6eQD79Bke33UEFNFIrfNyePB1JI1O4aDNyueQwGbiZL84PTYumwwFw22PVgyhSTI/vMIxiN3dV1ro4RvTU7bOQshLoaGeTlH5GSDt+ykHsSNqKmS4svZ5n76mN4FFPVT5W8al17iuJkTeI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092079; c=relaxed/simple; bh=OMeezIS6H4pb0DAO1sPwLmLYxQE9W3UpuZAe54uaBm8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VYqFIQcUPXaOZ1LGXbv2+THX14Hw7uJq56xjerfad/zdUR/uuhtOTIZAtpk2ytfdtaOedxk9XeE2JMkAsQF91ZOxInZOJqbaRO339DUWyg7Y1U5rCNtTGboZLi1HiPndvXbQSIvS3mQOlXDrHhqg6CiebrxD+fc7blafyno4fbs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com; spf=pass smtp.mailfrom=meta.com; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b=Zxl0xZSa; arc=none smtp.client-ip=67.231.153.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meta.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b="Zxl0xZSa" Received: from pps.filterd (m0001303.ppops.net [127.0.0.1]) by m0001303.ppops.net (8.18.1.2/8.18.1.2) with ESMTP id 571MmoZj009340 for ; Fri, 1 Aug 2025 16:47:57 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=s2048-2025-q2; bh=pnnkPBGQ0gRBLybx/TION3BTRcap0tbm0RMeiLyF+rc=; b=Zxl0xZSaUwtj aBOHhx32Oa8mYi4FkV+U3tNqJj36xQOgeLkrCxjO1iZY3cl+cFiwC8ShlJ0gE3H5 yj9G5yp3uVPHxvOSTLtrUIga7E1JljZJOwAUHfSfKpqYQNMPImidO3lartdHxaKv i1kWYO1PGA3tvkVPPvzPZNaFvBIQvYSSiaGtYdmF6Fari8NvVkdwXqTIISeWlOkT F3/ckY4e8N2Z4r24yLl6qzWNqaaSywTY6q0k+zerMLgP4kJbvqbYnlSZNemnEjJC BOZBgaAaDmqafvDyLKrlbBHdO41WHbU8yRKWkqZBbAz/zYrA/dMsEgcPLZDxnnkJ v+GwUkIbVA== Received: from maileast.thefacebook.com ([163.114.135.16]) by m0001303.ppops.net (PPS) with ESMTPS id 488rmtwjvt-13 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 01 Aug 2025 16:47:56 -0700 (PDT) Received: from twshared31684.07.ash9.facebook.com (2620:10d:c0a8:fe::f072) by mail.thefacebook.com (2620:10d:c0a9:6f::237c) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 1 Aug 2025 23:47:50 +0000 Received: by devbig197.nha3.facebook.com (Postfix, from userid 544533) id C96753105F6; Fri, 1 Aug 2025 16:47:36 -0700 (PDT) From: Keith Busch To: , , CC: , , , , Keith Busch Subject: [PATCH 6/7] blk-integrity: use simpler alignment check Date: Fri, 1 Aug 2025 16:47:35 -0700 Message-ID: <20250801234736.1913170-7-kbusch@meta.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250801234736.1913170-1-kbusch@meta.com> References: <20250801234736.1913170-1-kbusch@meta.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe X-Proofpoint-GUID: evrwWPH4kvouKPRLjZbBFXRjVpuTR3jU X-Authority-Analysis: v=2.4 cv=Vej3PEp9 c=1 sm=1 tr=0 ts=688d522c cx=c_pps a=MfjaFnPeirRr97d5FC5oHw==:117 a=MfjaFnPeirRr97d5FC5oHw==:17 a=2OwXVqhp2XgA:10 a=VwQbUJbxAAAA:8 a=yetF5jY7WHH6jeiS1L0A:9 X-Proofpoint-ORIG-GUID: evrwWPH4kvouKPRLjZbBFXRjVpuTR3jU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAxMDE5MyBTYWx0ZWRfXw3J2AT2TSi5l cN2LnqeNTi7POa96vbpNlzo1P9JPvlLSxsmD4wXoOFz3SoTwCPZe7TJlRw0F01RnMu07/aJBJCr XdpI+x5aic80ydkgUo0qBLMqpX5FZwRNSTYmNa1sjj1wejFxKjbX8Qoy6RXysLC70DT7piKTm7V Lw2l1vZaDQ2Z52DXTQVmWcRLZ5cMfq3gXrrt2ZQ6/saXjMHDOJj9rNzS3RUt0H+iMf5/LoJXsHf MhXDluNPPBijkrtQm8aeockEkgVGhReHbG4+vjjMb4IjZcoHjXfFtZuTrNKNZlvPUGeCBr0YZSs r6p6Wfvw4yiPDXLD/mlo++S45Zmn7rAwZinsOeafuFKlBQAUl2/qnEtgmpMIhsx+shNlHuG7Yq9 rNpbTut6fDM/41QwJloYM3zSH15u/8x7Z9NwMjm0zi0D4OE504IgrKwUXsyx895h15VO+08x X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-01_08,2025-08-01_01,2025-03-28_01 Content-Type: text/plain; charset="utf-8" From: Keith Busch We're checking length and addresses against the same alignment value, so use the more simple iterator check. Signed-off-by: Keith Busch --- block/bio-integrity.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/bio-integrity.c b/block/bio-integrity.c index 6b077ca937f6b..6d069a49b4aad 100644 --- a/block/bio-integrity.c +++ b/block/bio-integrity.c @@ -262,7 +262,6 @@ static unsigned int bvec_from_pages(struct bio_vec *bve= c, struct page **pages, int bio_integrity_map_user(struct bio *bio, struct iov_iter *iter) { struct request_queue *q =3D bdev_get_queue(bio->bi_bdev); - unsigned int align =3D blk_lim_dma_alignment_and_pad(&q->limits); struct page *stack_pages[UIO_FASTIOV], **pages =3D stack_pages; struct bio_vec stack_vec[UIO_FASTIOV], *bvec =3D stack_vec; size_t offset, bytes =3D iter->count; @@ -285,7 +284,8 @@ int bio_integrity_map_user(struct bio *bio, struct iov_= iter *iter) pages =3D NULL; } =20 - copy =3D !iov_iter_is_aligned(iter, align, align); + copy =3D iov_iter_alignment(iter) & + blk_lim_dma_alignment_and_pad(&q->limits); ret =3D iov_iter_extract_pages(iter, &pages, bytes, nr_vecs, 0, &offset); if (unlikely(ret < 0)) goto free_bvec; --=20 2.47.3 From nobody Sun Oct 5 14:45:21 2025 Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 569DF23D2BC for ; Fri, 1 Aug 2025 23:47:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.153.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092075; cv=none; b=ONERBtRl1VJpkwUNVCjXEtSiFZ0tc2z8fwX9lWeDBZERdH9Y/cYanxCLIj14VS/3sH+2ZHDdS9Nf1nLawV95eSGIdCXH5EIXmAboETIEX2Wkf5hsv/pFPPQOS5paJhnbHZKXvD8GHvItF3GjFEijOg81Wolw6Q5DVadYgXg49JE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754092075; c=relaxed/simple; bh=nNMJpt4aTazPhFYIswuKSHnf0hEokcerPGAzDvlAalQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=iTE0iawyNg9PIucmMpVAauo5BtW45tXGf2PgSzB7QDyj1aLG/bvKdKh9EBbO+gfekW2j6FXvv4DVCJAwuyZNDMvlNr7Zr/9nTqImISI7NQa7zaU1hzjqQPmbGYD/Jxw+0itumRmLJBc4UqC/ixtNio1SYArnFdqPI4r70Uoe4NU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com; spf=pass smtp.mailfrom=meta.com; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b=VVON6fX2; arc=none smtp.client-ip=67.231.153.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meta.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b="VVON6fX2" Received: from pps.filterd (m0089730.ppops.net [127.0.0.1]) by m0089730.ppops.net (8.18.1.2/8.18.1.2) with ESMTP id 571MmoTw020635 for ; Fri, 1 Aug 2025 16:47:52 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=s2048-2025-q2; bh=i1ss4/LYa+hED3hp9nPUkfjNAhsGNQe261dA6YSsJDQ=; b=VVON6fX2rCS9 NvGEvPi3Aoog4HTdo3wmGbQqvwvMxeCcoYVF5XfH/s1cl7qe1CkxY9LTwWxBl7G6 9qFP2Koysz53K5nRGPaAsB91GnLEmzMrax/G6fiMJ+aB+2rrOQSIHUSscqiFoU/K vFLmCTIn5PhyOwto7X9JnhO6fmwM/eh7BiPAz/f1tQ/tKgaHku0TF52InrZbPwVa rWN35li0oSB/woAZ1BXPwNQIVXb9EBOOZhcgkJCl+/hW0A0FosivSumlVXpwR5ae xEvQ7fRmQh8PMVe/o399ezy698mFyyNUgGANFqupraJhl+Htcf7Uvx8EWivCxeQs pcrVtbjSCg== Received: from mail.thefacebook.com ([163.114.134.16]) by m0089730.ppops.net (PPS) with ESMTPS id 488rmynk9w-9 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 01 Aug 2025 16:47:51 -0700 (PDT) Received: from twshared21625.15.frc2.facebook.com (2620:10d:c085:208::f) by mail.thefacebook.com (2620:10d:c08b:78::c78f) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 1 Aug 2025 23:47:46 +0000 Received: by devbig197.nha3.facebook.com (Postfix, from userid 544533) id CF7ED3105F8; Fri, 1 Aug 2025 16:47:36 -0700 (PDT) From: Keith Busch To: , , CC: , , , , Keith Busch Subject: [PATCH 7/7] iov_iter: remove iov_iter_is_aligned Date: Fri, 1 Aug 2025 16:47:36 -0700 Message-ID: <20250801234736.1913170-8-kbusch@meta.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250801234736.1913170-1-kbusch@meta.com> References: <20250801234736.1913170-1-kbusch@meta.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe X-Authority-Analysis: v=2.4 cv=DptW+H/+ c=1 sm=1 tr=0 ts=688d5227 cx=c_pps a=CB4LiSf2rd0gKozIdrpkBw==:117 a=CB4LiSf2rd0gKozIdrpkBw==:17 a=2OwXVqhp2XgA:10 a=VwQbUJbxAAAA:8 a=S-mNSWGAXQVMvOK0xjcA:9 X-Proofpoint-ORIG-GUID: grJ8OBMtXvbaH810k7C4nFgonvhffe4e X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAxMDE5MyBTYWx0ZWRfXy1vPCQKdjhc1 4mc8ekAw/7SL1NX7g8Rwpw/mrHk8arrGIT51RkeqD+FGSCoSQw8i2LLpSnYSTwTWuXjEsqkyvnX 0KgvuyKbSGwPiNBcWMmI+K3s59pCetLuNod6vTZsE8ArnVGmbCLHqCcExw6q4l7FfJXPkYgFT19 TzVxySe4/JMhGOjrnY1NPOmAhD57dEhPNjRhaBT/9bDJ1nk/t7O1ZcKo455K1IxeYGs/khsNuCV GwsLWoGxV6fpv5oWCS1LsoUmUSKUdcUdV5mwSdo/0c3vk8Yt534KItEDm+UauE+S6ZlZFWwh+5O cYtOyQ01uJM7N+HYU3+VEtZEaB+KZnwDZqd3Ml/K6Cq5cAGBko+18XDoj5Tlo27jB4+YP4e9I8j qyrqVduXfEMD/GoG+NGz1HsNZocuFV/lATeb/k677Zw0JIcJ8M4zF/xyNrhvuasiwVE3J+uQ X-Proofpoint-GUID: grJ8OBMtXvbaH810k7C4nFgonvhffe4e X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-01_08,2025-08-01_01,2025-03-28_01 Content-Type: text/plain; charset="utf-8" From: Keith Busch No more callers. Signed-off-by: Keith Busch --- 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 =20 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 struc= t 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 in= t direction, size_t count) } EXPORT_SYMBOL(iov_iter_discard); =20 -static bool iov_iter_aligned_iovec(const struct iov_iter *i, unsigned addr= _mask, - unsigned len_mask) -{ - const struct iovec *iov =3D iter_iov(i); - size_t size =3D i->count; - size_t skip =3D i->iov_offset; - - do { - size_t len =3D iov->iov_len - skip; - - if (len > size) - len =3D size; - if (len & len_mask) - return false; - if ((unsigned long)(iov->iov_base + skip) & addr_mask) - return false; - - iov++; - size -=3D len; - skip =3D 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 =3D i->bvec; - unsigned skip =3D i->iov_offset; - size_t size =3D i->count; - - do { - size_t len =3D bvec->bv_len - skip; - - if (len > size) - len =3D size; - if (len & len_mask) - return false; - if ((unsigned long)(bvec->bv_offset + skip) & addr_mask) - return false; - - bvec++; - size -=3D len; - skip =3D 0; - } while (size); - - return true; -} - -/** - * iov_iter_is_aligned() - Check if the addresses and lengths of each segm= ents - * 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 m= asks - */ -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 =3D iter_iov(i); --=20 2.47.3