From: Kanchan Joshi <joshi.k@samsung.com>
To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de,
martin.petersen@oracle.com, sagi@grimberg.me
Cc: linux-nvme@lists.infradead.org, linux-block@vger.kernel.org,
gost.dev@samsung.com, Kanchan Joshi <joshi.k@samsung.com>
Subject: [PATCH v2 3/3] nvme: allow integrity when PI is not in first bytes
Date: Thu, 1 Feb 2024 18:31:26 +0530 [thread overview]
Message-ID: <20240201130126.211402-4-joshi.k@samsung.com> (raw)
In-Reply-To: <20240201130126.211402-1-joshi.k@samsung.com>
NVM command set 1.0 (or later) mandates PI to be in the last bytes of
metadata. But this was not supported in the block-layer, and driver
registered a nop profile.
Since block-integrity can now handle flexible PI offset, change the
driver to support this configuration.
Signed-off-by: Kanchan Joshi <joshi.k@samsung.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
---
drivers/nvme/host/core.c | 8 +++++++-
drivers/nvme/host/nvme.h | 1 +
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 85ab0fcf9e88..4945d6259a13 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -1726,6 +1726,7 @@ static void nvme_init_integrity(struct gendisk *disk,
}
integrity.tuple_size = head->ms;
+ integrity.pi_offset = head->pi_offset;
blk_integrity_register(disk, &integrity);
blk_queue_max_integrity_segments(disk->queue, max_integrity_segments);
}
@@ -1835,11 +1836,16 @@ static int nvme_init_ms(struct nvme_ctrl *ctrl, struct nvme_ns_head *head,
free_data:
kfree(nvm);
set_pi:
- if (head->pi_size && (first || head->ms == head->pi_size))
+ if (head->pi_size && head->ms >= head->pi_size)
head->pi_type = id->dps & NVME_NS_DPS_PI_MASK;
else
head->pi_type = 0;
+ if (first)
+ head->pi_offset = 0;
+ else
+ head->pi_offset = head->ms - head->pi_size;
+
return ret;
}
diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
index 030c80818240..281657320c3a 100644
--- a/drivers/nvme/host/nvme.h
+++ b/drivers/nvme/host/nvme.h
@@ -462,6 +462,7 @@ struct nvme_ns_head {
u16 ms;
u16 pi_size;
u8 pi_type;
+ u8 pi_offset;
u8 guard_type;
u16 sgs;
u32 sws;
--
2.25.1
next prev parent reply other threads:[~2024-02-01 13:08 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20240201130828epcas5p10bd98bcb6b8e9444603e347c2a910c44@epcas5p1.samsung.com>
2024-02-01 13:01 ` [PATCH v2 0/3] Block integrity with flexible-offset PI Kanchan Joshi
2024-02-01 13:01 ` [PATCH v2 1/3] block: refactor guard helpers Kanchan Joshi
2024-02-01 13:01 ` [PATCH v2 2/3] block: support PI at non-zero offset within metadata Kanchan Joshi
2024-09-26 15:07 ` Keith Busch
2024-09-26 16:38 ` Kanchan Joshi
2024-09-26 16:55 ` Keith Busch
2024-09-27 16:07 ` Kanchan Joshi
2024-09-30 17:57 ` Martin K. Petersen
2024-10-01 7:27 ` Javier González
2024-10-01 15:37 ` Keith Busch
2024-10-02 10:29 ` Javier González
2024-10-02 16:18 ` Martin K. Petersen
2024-10-02 19:03 ` Keith Busch
2024-02-01 13:01 ` Kanchan Joshi [this message]
2024-02-12 15:47 ` [PATCH v2 0/3] Block integrity with flexible-offset PI Kanchan Joshi
2024-02-12 15:57 ` Jens Axboe
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=20240201130126.211402-4-joshi.k@samsung.com \
--to=joshi.k@samsung.com \
--cc=axboe@kernel.dk \
--cc=gost.dev@samsung.com \
--cc=hch@lst.de \
--cc=kbusch@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=martin.petersen@oracle.com \
--cc=sagi@grimberg.me \
/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.