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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2EF0DD690FC for ; Thu, 28 Nov 2024 11:46:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:References:Content-Type: Content-Transfer-Encoding:MIME-Version:In-Reply-To:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=1yhnn/JEQDkJO7MPiDYhPt3P6x3KI+3HedoJWLZAeh4=; b=EnZ3rFBWZlbyVneESphqc+qO/3 uqIY2zwgg71uP9tLm+u5fbl5OAdV+oARFn/wDeEb5tKb0oylxbgWoC/iTHWmRrwBd2o2d0JBB4BT5 7iElbJeEXhMKq0EcYgixJx3QiarZor38jDsZB/h2rRSds1GnUrixcvi7ZFQzzk3Pg1Y8DyInPczlL zlPjuXxlzTE6NaQzyDmRQYthT4QRzgHvaiVz51OX0125Av49LR8JfZEKjOXroDA0O8LJ7Ze+pzkbj d8oBRNIn4OSjKtK/NHL+INTyNRfMNm1pChKghgbnPDhoDNa36cOLZIC+oVSDpmDfF/TU73O1nqlN0 h5LwWFKQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tGcyW-0000000FO8b-2P4F; Thu, 28 Nov 2024 11:46:24 +0000 Received: from mailout1.samsung.com ([203.254.224.24]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tGcyT-0000000FO5A-2ZuH for linux-nvme@lists.infradead.org; Thu, 28 Nov 2024 11:46:23 +0000 Received: from epcas5p3.samsung.com (unknown [182.195.41.41]) by mailout1.samsung.com (KnoxPortal) with ESMTP id 20241128114618epoutp01f1d75a224720085a0eb5feee39b9fd77~MH06TJsFv2977229772epoutp01g for ; Thu, 28 Nov 2024 11:46:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.samsung.com 20241128114618epoutp01f1d75a224720085a0eb5feee39b9fd77~MH06TJsFv2977229772epoutp01g DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1732794379; bh=1yhnn/JEQDkJO7MPiDYhPt3P6x3KI+3HedoJWLZAeh4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F3Y1uDVNHO04Ku4DjWtzVtqj3/wnub/RCvMqJ8tlBpb8ctucKLggP+FU/ATCXPE50 Vd6my0dIOwzW2b+LLx8hoZw1nwPUtnu7EEtr1f4skmA0wo8XNUWdBZrc7GC1bBCC5+ c5Ls2Z/Dwaclt2ldUBqnIDId+V9icFnvlhDBwvew= Received: from epsnrtp1.localdomain (unknown [182.195.42.162]) by epcas5p3.samsung.com (KnoxPortal) with ESMTP id 20241128114618epcas5p3f9f6ccf5ec4f291d7f4098c9d987ebaa~MH052gaEm0106501065epcas5p3T; Thu, 28 Nov 2024 11:46:18 +0000 (GMT) Received: from epsmgec5p1-new.samsung.com (unknown [182.195.38.183]) by epsnrtp1.localdomain (Postfix) with ESMTP id 4XzZJm5NH1z4x9Py; Thu, 28 Nov 2024 11:46:16 +0000 (GMT) Received: from epcas5p1.samsung.com ( [182.195.41.39]) by epsmgec5p1-new.samsung.com (Symantec Messaging Gateway) with SMTP id AE.29.29212.80858476; Thu, 28 Nov 2024 20:46:16 +0900 (KST) Received: from epsmtrp2.samsung.com (unknown [182.195.40.14]) by epcas5p1.samsung.com (KnoxPortal) with ESMTPA id 20241128113112epcas5p186ef86baaa3054effb7244c54ee2f991~MHntuBwUR1791917919epcas5p1c; Thu, 28 Nov 2024 11:31:12 +0000 (GMT) Received: from epsmgms1p1new.samsung.com (unknown [182.195.42.41]) by epsmtrp2.samsung.com (KnoxPortal) with ESMTP id 20241128113112epsmtrp25d1f830f2feb39b0e70c41359d978bd0~MHntswlK40091000910epsmtrp2i; Thu, 28 Nov 2024 11:31:12 +0000 (GMT) X-AuditID: b6c32a50-801fa7000000721c-f1-67485808a646 Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgms1p1new.samsung.com (Symantec Messaging Gateway) with SMTP id A8.0D.18729.F7458476; Thu, 28 Nov 2024 20:31:11 +0900 (KST) Received: from localhost.localdomain (unknown [107.99.41.245]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20241128113109epsmtip2bdc64c13144c3424731d23c2f580c086~MHnrRmIYR2660826608epsmtip2V; Thu, 28 Nov 2024 11:31:09 +0000 (GMT) From: Anuj Gupta To: axboe@kernel.dk, hch@lst.de, kbusch@kernel.org, martin.petersen@oracle.com, asml.silence@gmail.com, anuj1072538@gmail.com, brauner@kernel.org, jack@suse.cz, viro@zeniv.linux.org.uk Cc: io-uring@vger.kernel.org, linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, gost.dev@samsung.com, linux-scsi@vger.kernel.org, vishak.g@samsung.com, linux-fsdevel@vger.kernel.org, Anuj Gupta , Kanchan Joshi Subject: [PATCH v11 07/10] block: introduce BIP_CHECK_GUARD/REFTAG/APPTAG bip_flags Date: Thu, 28 Nov 2024 16:52:37 +0530 Message-Id: <20241128112240.8867-8-anuj20.g@samsung.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241128112240.8867-1-anuj20.g@samsung.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA02Tf1DTZRzHe77fL9sXdN13E+WRLprfjhCLsenAB3HhqcXXgpxweOVZ6+v4 3uAY224/KqurGYcmQfw6MjdKZ5zGxjlaalCM+CmHpYYSApdG3SAPDkw5ocOI9ovyv9fned7v 5/PjeR4SF43xYslCnZkz6lgtzYsiLnQnJiSRLzMaafdAPLp7/wGBPqhaxFG98wJArpuVPDTV fQ+gkY5WDDW6ejE0U3qFQPZjJRjqXZrmoZquIYC8o0+jNm8/gU6cHuejj2608NCZvn8wdHWx LwJdtdXzt4mYVttNPnP9soXxOI/ymK8b3me+G7HymLvjowTz8TknYH482cNnZj1xjMc3jSmj 9hVtLeDYfM4o5nRqfX6hTqOgX8xV7VClpEplSbI0tJkW69hiTkHvzFImPV+o9fdEi99gtRb/ kpI1mejkZ7ca9RYzJy7Qm8wKmjPkaw1yg8TEFpssOo1Ex5m3yKTSjSl+4etFBZW9I8Awsfat +VovYQVnVpeBSBJSctjoGybKQBQpotoA/OTXwXBwD8CBP6fxUDAHoP38Am/Z0jT6YVjlBbBk qRwLBbMAdk58GRFQ8agE2PNHKQhsRAcOrnD8ELTgVBUGj1TX8wOqVVQevPZTe9BBUPGw7pTb zyQpoBDsO70rlO4JePzafFAeSaVB+9BcUC6ghLD/uI8IMO7XlJy3B2uF1BgJ2yo+xUPmnbDn UDsR4lVwsu8cP8SxcHbGG+5HA/+6Po6F2ABLLraDEGfA0kuVeKAenEqE7m+TQ8uPw7pLZ7FQ 3kdhxQNf2CqALZ8vMw2PNNaHGULvFWuYGTi/eDg803IAvzpq51cBse2hfmwP9WP7P/VJgDtB LGcwFWs4dYpBlqTj3vzvotX6Yg8IPvUNyhbgal6UdAGMBF0AkjgdLTCsyNSIBPnswbc5o15l tGg5UxdI8Q+8Go9drdb7/4rOrJLJ06Ty1NRUedqmVBkdI5gq/SxfRGlYM1fEcQbOuOzDyMhY K3Yse6UkhV0/lpc0Mdjj+62Zqh19TWmpsb30JD/H4d79yve3Vp5idb/EwZjeuLOL2xRfbPc+ pc5aR+5F3XvtEft3RzgaWnM2TRlhQ0Zyds8umDlbVDqDJLI++Ex6fMVAr+v+ls6cAyuEO9aK Oy2Zju0S94wjWhWZEZ3tIz3Tk5cPzSVsptYtNdVMLtTcYBLZxInBshcUTY+lPfLzN84D4MRz yeXrtWVZhQvv9N/xKjsuCvfYW7gYL6i5la6v+7vDOvOqrM3a6q6rlHVZFFPpY4XvSQ7uqx7m 3Vkz7HKIDtcOLe1x2Jvb3s1V5XpAnl1ctb+lU7hxzW15YuftuXrh7zRhKmBlG3Cjif0XKlo4 MnMEAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprCIsWRmVeSWpSXmKPExsWy7bCSvG59iEe6wbYvNhYfv/5msWia8JfZ Ys6qbYwWq+/2s1m8PvyJ0eLmgZ1MFitXH2WyeNd6jsVi9vRmJouj/9+yWUw6dI3RYu8tbYs9 e0+yWMxf9pTdovv6DjaL5cf/MVmc/3uc1eL8rDnsDkIeO2fdZfe4fLbUY9OqTjaPzUvqPXbf bGDz+Pj0FotH35ZVjB5nFhxh9/i8Sc5j05O3TAFcUVw2Kak5mWWpRfp2CVwZ/UdvMhY8k6z4 PnkvSwPjctEuRk4OCQETiTW3Oli6GLk4hAR2M0rcuf+EFSIhIXHq5TJGCFtYYuW/5+wQRR8Z JSaf28QMkmATUJc48rwVrEhE4ASjxPyJbiBFzAIzmCR6fq1gA0kICwRL7GybwgJiswioSkxd tB5oAwcHr4CFxPFlnhAL5CVmXvrODmJzClhKzL72DewIIaCSy4+vg9m8AoISJ2c+ARvDDFTf vHU28wRGgVlIUrOQpBYwMq1ilEwtKM5Nzy02LDDMSy3XK07MLS7NS9dLzs/dxAiOOC3NHYzb V33QO8TIxMF4iFGCg1lJhLeA2z1diDclsbIqtSg/vqg0J7X4EKM0B4uSOK/4i94UIYH0xJLU 7NTUgtQimCwTB6dUA5OF6vZOac1bjvZz1BRePnr/tYztdv370z5Pdx/N//gz+uH/zVG+0a2P J9pW553hXL5NRfwal36Sxq7fd3S2vFJ2flOfon/dQ+/wnykblmnIPjgtq8W7/LBT6V2TNeaO D0pKWb2cT+1M9VG7VL3S0P0m/+/GK2ufqtYLFjR3e3J9/an10D3ZSMn3+fwsjsCcEpudn764 NSlZltzaWnp+mbWAed/JQx5+LyN8mZP1r3666fSpjMu/i+Upt9Drifuq34ezepQvfMT/+NnO zJlzDu6R0zO/Jfrb0HPN5jP2Xz84+IZEKc6ZfqVcn23udNOnG4TSXLbGnv73/dyH4C/z/065 UHPomW1R8pQ40a7rZgxKLMUZiYZazEXFiQCST9uyJwMAAA== X-CMS-MailID: 20241128113112epcas5p186ef86baaa3054effb7244c54ee2f991 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-Sendblock-Type: REQ_APPROVE CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20241128113112epcas5p186ef86baaa3054effb7244c54ee2f991 References: <20241128112240.8867-1-anuj20.g@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241128_034621_989613_1229AF8F X-CRM114-Status: GOOD ( 20.72 ) X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org This patch introduces BIP_CHECK_GUARD/REFTAG/APPTAG bip_flags which indicate how the hardware should check the integrity payload. BIP_CHECK_GUARD/REFTAG are conversion of existing semantics, while BIP_CHECK_APPTAG is a new flag. The driver can now just rely on block layer flags, and doesn't need to know the integrity source. Submitter of PI decides which tags to check. This would also give us a unified interface for user and kernel generated integrity. Signed-off-by: Anuj Gupta Signed-off-by: Kanchan Joshi Reviewed-by: Christoph Hellwig Reviewed-by: Keith Busch --- block/bio-integrity.c | 5 +++++ drivers/nvme/host/core.c | 11 +++-------- include/linux/bio-integrity.h | 6 +++++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/block/bio-integrity.c b/block/bio-integrity.c index f56d01cec689..3bee43b87001 100644 --- a/block/bio-integrity.c +++ b/block/bio-integrity.c @@ -434,6 +434,11 @@ bool bio_integrity_prep(struct bio *bio) if (bi->csum_type == BLK_INTEGRITY_CSUM_IP) bip->bip_flags |= BIP_IP_CHECKSUM; + /* describe what tags to check in payload */ + if (bi->csum_type) + bip->bip_flags |= BIP_CHECK_GUARD; + if (bi->flags & BLK_INTEGRITY_REF_TAG) + bip->bip_flags |= BIP_CHECK_REFTAG; if (bio_integrity_add_page(bio, virt_to_page(buf), len, offset_in_page(buf)) < len) { printk(KERN_ERR "could not attach integrity payload\n"); diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 40e7be3b0339..e4e3653c27fb 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1017,18 +1017,13 @@ static inline blk_status_t nvme_setup_rw(struct nvme_ns *ns, control |= NVME_RW_PRINFO_PRACT; } - switch (ns->head->pi_type) { - case NVME_NS_DPS_PI_TYPE3: + if (bio_integrity_flagged(req->bio, BIP_CHECK_GUARD)) control |= NVME_RW_PRINFO_PRCHK_GUARD; - break; - case NVME_NS_DPS_PI_TYPE1: - case NVME_NS_DPS_PI_TYPE2: - control |= NVME_RW_PRINFO_PRCHK_GUARD | - NVME_RW_PRINFO_PRCHK_REF; + if (bio_integrity_flagged(req->bio, BIP_CHECK_REFTAG)) { + control |= NVME_RW_PRINFO_PRCHK_REF; if (op == nvme_cmd_zone_append) control |= NVME_RW_APPEND_PIREMAP; nvme_set_ref_tag(ns, cmnd, req); - break; } } diff --git a/include/linux/bio-integrity.h b/include/linux/bio-integrity.h index 58ff9988433a..fe2bfe122db2 100644 --- a/include/linux/bio-integrity.h +++ b/include/linux/bio-integrity.h @@ -11,6 +11,9 @@ enum bip_flags { BIP_DISK_NOCHECK = 1 << 3, /* disable disk integrity checking */ BIP_IP_CHECKSUM = 1 << 4, /* IP checksum */ BIP_COPY_USER = 1 << 5, /* Kernel bounce buffer in use */ + BIP_CHECK_GUARD = 1 << 6, /* guard check */ + BIP_CHECK_REFTAG = 1 << 7, /* reftag check */ + BIP_CHECK_APPTAG = 1 << 8, /* apptag check */ }; struct bio_integrity_payload { @@ -31,7 +34,8 @@ struct bio_integrity_payload { }; #define BIP_CLONE_FLAGS (BIP_MAPPED_INTEGRITY | BIP_CTRL_NOCHECK | \ - BIP_DISK_NOCHECK | BIP_IP_CHECKSUM) + BIP_DISK_NOCHECK | BIP_IP_CHECKSUM | \ + BIP_CHECK_GUARD | BIP_CHECK_REFTAG | BIP_CHECK_APPTAG) #ifdef CONFIG_BLK_DEV_INTEGRITY -- 2.25.1