]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
nvmet: add lba to sect conversion helpers
authorChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Tue, 12 Jan 2021 04:26:16 +0000 (20:26 -0800)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 18 Jun 2021 09:07:30 +0000 (11:07 +0200)
BugLink: https://bugs.launchpad.net/bugs/1931292
[ Upstream commit 193fcf371f9e3705c14a0bf1d4bfc44af0f7c124 ]

In this preparation patch, we add helpers to convert lbas to sectors &
sectors to lba. This is needed to eliminate code duplication in the ZBD
backend.

Use these helpers in the block device backend.

Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/nvme/target/io-cmd-bdev.c
drivers/nvme/target/nvmet.h

index 125dde3f410ee711de2e90009eb76f0c3e0d5255..23095bdfce06c1b014e00e00265418f46c8a6b70 100644 (file)
@@ -256,8 +256,7 @@ static void nvmet_bdev_execute_rw(struct nvmet_req *req)
        if (is_pci_p2pdma_page(sg_page(req->sg)))
                op |= REQ_NOMERGE;
 
-       sector = le64_to_cpu(req->cmd->rw.slba);
-       sector <<= (req->ns->blksize_shift - 9);
+       sector = nvmet_lba_to_sect(req->ns, req->cmd->rw.slba);
 
        if (req->transfer_len <= NVMET_MAX_INLINE_DATA_LEN) {
                bio = &req->b.inline_bio;
@@ -345,7 +344,7 @@ static u16 nvmet_bdev_discard_range(struct nvmet_req *req,
        int ret;
 
        ret = __blkdev_issue_discard(ns->bdev,
-                       le64_to_cpu(range->slba) << (ns->blksize_shift - 9),
+                       nvmet_lba_to_sect(ns, range->slba),
                        le32_to_cpu(range->nlb) << (ns->blksize_shift - 9),
                        GFP_KERNEL, 0, bio);
        if (ret && ret != -EOPNOTSUPP) {
@@ -414,8 +413,7 @@ static void nvmet_bdev_execute_write_zeroes(struct nvmet_req *req)
        if (!nvmet_check_transfer_len(req, 0))
                return;
 
-       sector = le64_to_cpu(write_zeroes->slba) <<
-               (req->ns->blksize_shift - 9);
+       sector = nvmet_lba_to_sect(req->ns, write_zeroes->slba);
        nr_sector = (((sector_t)le16_to_cpu(write_zeroes->length) + 1) <<
                (req->ns->blksize_shift - 9));
 
index 592763732065bbb1617d184b5215901926b1d02c..8776dd1a0490ef6f567ff83cf61471d4c28e0a1e 100644 (file)
@@ -603,4 +603,14 @@ static inline bool nvmet_ns_has_pi(struct nvmet_ns *ns)
        return ns->pi_type && ns->metadata_size == sizeof(struct t10_pi_tuple);
 }
 
+static inline __le64 nvmet_sect_to_lba(struct nvmet_ns *ns, sector_t sect)
+{
+       return cpu_to_le64(sect >> (ns->blksize_shift - SECTOR_SHIFT));
+}
+
+static inline sector_t nvmet_lba_to_sect(struct nvmet_ns *ns, __le64 lba)
+{
+       return le64_to_cpu(lba) << (ns->blksize_shift - SECTOR_SHIFT);
+}
+
 #endif /* _NVMET_H */