]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
nvme: remove a field from nvme_ns_head
authorKanchan Joshi <joshi.k@samsung.com>
Tue, 30 Jul 2024 10:31:36 +0000 (16:01 +0530)
committerKeith Busch <kbusch@kernel.org>
Wed, 31 Jul 2024 14:40:10 +0000 (07:40 -0700)
pi_offset field is not required to be present in nvme_ns_head.

Signed-off-by: Kanchan Joshi <joshi.k@samsung.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/core.c
drivers/nvme/host/nvme.h

index e8afb5a0f3a3c47ea158233edbe2689a6a07e718..33fa01c599adda3e03fef6b63f547da846c44609 100644 (file)
@@ -36,6 +36,7 @@ struct nvme_ns_info {
        struct nvme_ns_ids ids;
        u32 nsid;
        __le32 anagrpid;
+       u8 pi_offset;
        bool is_shared;
        bool is_readonly;
        bool is_ready;
@@ -1758,7 +1759,7 @@ int nvme_getgeo(struct block_device *bdev, struct hd_geometry *geo)
 }
 
 static bool nvme_init_integrity(struct nvme_ns_head *head,
-               struct queue_limits *lim)
+               struct queue_limits *lim, struct nvme_ns_info *info)
 {
        struct blk_integrity *bi = &lim->integrity;
 
@@ -1816,7 +1817,7 @@ static bool nvme_init_integrity(struct nvme_ns_head *head,
        }
 
        bi->tuple_size = head->ms;
-       bi->pi_offset = head->pi_offset;
+       bi->pi_offset = info->pi_offset;
        return true;
 }
 
@@ -1902,12 +1903,11 @@ static void nvme_configure_pi_elbas(struct nvme_ns_head *head,
 
 static void nvme_configure_metadata(struct nvme_ctrl *ctrl,
                struct nvme_ns_head *head, struct nvme_id_ns *id,
-               struct nvme_id_ns_nvm *nvm)
+               struct nvme_id_ns_nvm *nvm, struct nvme_ns_info *info)
 {
        head->features &= ~(NVME_NS_METADATA_SUPPORTED | NVME_NS_EXT_LBAS);
        head->pi_type = 0;
        head->pi_size = 0;
-       head->pi_offset = 0;
        head->ms = le16_to_cpu(id->lbaf[nvme_lbaf_index(id->flbas)].ms);
        if (!head->ms || !(ctrl->ops->flags & NVME_F_METADATA_SUPPORTED))
                return;
@@ -1922,7 +1922,7 @@ static void nvme_configure_metadata(struct nvme_ctrl *ctrl,
        if (head->pi_size && head->ms >= head->pi_size)
                head->pi_type = id->dps & NVME_NS_DPS_PI_MASK;
        if (!(id->dps & NVME_NS_DPS_PI_FIRST))
-               head->pi_offset = head->ms - head->pi_size;
+               info->pi_offset = head->ms - head->pi_size;
 
        if (ctrl->ops->flags & NVME_F_FABRICS) {
                /*
@@ -2156,7 +2156,7 @@ static int nvme_update_ns_info_block(struct nvme_ns *ns,
 
        lim = queue_limits_start_update(ns->disk->queue);
        nvme_set_ctrl_limits(ns->ctrl, &lim);
-       nvme_configure_metadata(ns->ctrl, ns->head, id, nvm);
+       nvme_configure_metadata(ns->ctrl, ns->head, id, nvm, info);
        nvme_set_chunk_sectors(ns, id, &lim);
        if (!nvme_update_disk_info(ns, id, &lim))
                capacity = 0;
@@ -2176,7 +2176,7 @@ static int nvme_update_ns_info_block(struct nvme_ns *ns,
         * I/O to namespaces with metadata except when the namespace supports
         * PI, as it can strip/insert in that case.
         */
-       if (!nvme_init_integrity(ns->head, &lim))
+       if (!nvme_init_integrity(ns->head, &lim, info))
                capacity = 0;
 
        ret = queue_limits_commit_update(ns->disk->queue, &lim);
@@ -2280,7 +2280,7 @@ static int nvme_update_ns_info(struct nvme_ns *ns, struct nvme_ns_info *info)
                if (unsupported)
                        ns->head->disk->flags |= GENHD_FL_HIDDEN;
                else
-                       nvme_init_integrity(ns->head, &lim);
+                       nvme_init_integrity(ns->head, &lim, info);
                ret = queue_limits_commit_update(ns->head->disk->queue, &lim);
 
                set_capacity_and_notify(ns->head->disk, get_capacity(ns->disk));
index f900e44243aef0f910cf31e2c41b1d844e65d145..c6386af76d24db51a409e5d05463c212101e5d3f 100644 (file)
@@ -474,7 +474,6 @@ struct nvme_ns_head {
        u16                     ms;
        u16                     pi_size;
        u8                      pi_type;
-       u8                      pi_offset;
        u8                      guard_type;
 #ifdef CONFIG_BLK_DEV_ZONED
        u64                     zsze;