nvme: create _nvme_get_host_buffer_sector_size helper function
Create a _nvme_get_host_buffer_sector_size helper function, to avoid the same code being duplicated in several functions. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Change-Id: I8c14683c683a44e03c97eefa186833831f754bcc Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6035 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
ffd18d43e3
commit
c078941ca1
@ -62,6 +62,21 @@ nvme_ns_check_request_length(uint32_t lba_count, uint32_t sectors_per_max_io,
|
|||||||
return child_per_io >= qdepth;
|
return child_per_io >= qdepth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uint32_t
|
||||||
|
_nvme_get_host_buffer_sector_size(struct spdk_nvme_ns *ns, uint32_t io_flags)
|
||||||
|
{
|
||||||
|
uint32_t sector_size = ns->extended_lba_size;
|
||||||
|
|
||||||
|
if ((io_flags & SPDK_NVME_IO_FLAGS_PRACT) &&
|
||||||
|
(ns->flags & SPDK_NVME_NS_EXTENDED_LBA_SUPPORTED) &&
|
||||||
|
(ns->flags & SPDK_NVME_NS_DPS_PI_SUPPORTED) &&
|
||||||
|
(ns->md_size == 8)) {
|
||||||
|
sector_size -= 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sector_size;
|
||||||
|
}
|
||||||
|
|
||||||
static struct nvme_request *
|
static struct nvme_request *
|
||||||
_nvme_add_child_request(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
|
_nvme_add_child_request(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
|
||||||
const struct nvme_payload *payload,
|
const struct nvme_payload *payload,
|
||||||
@ -95,20 +110,10 @@ _nvme_ns_cmd_split_request(struct spdk_nvme_ns *ns,
|
|||||||
uint32_t sectors_per_max_io, uint32_t sector_mask,
|
uint32_t sectors_per_max_io, uint32_t sector_mask,
|
||||||
uint16_t apptag_mask, uint16_t apptag)
|
uint16_t apptag_mask, uint16_t apptag)
|
||||||
{
|
{
|
||||||
uint32_t sector_size;
|
uint32_t sector_size = _nvme_get_host_buffer_sector_size(ns, io_flags);
|
||||||
uint32_t md_size = ns->md_size;
|
|
||||||
uint32_t remaining_lba_count = lba_count;
|
uint32_t remaining_lba_count = lba_count;
|
||||||
struct nvme_request *child;
|
struct nvme_request *child;
|
||||||
|
|
||||||
sector_size = ns->extended_lba_size;
|
|
||||||
|
|
||||||
if ((io_flags & SPDK_NVME_IO_FLAGS_PRACT) &&
|
|
||||||
(ns->flags & SPDK_NVME_NS_EXTENDED_LBA_SUPPORTED) &&
|
|
||||||
(ns->flags & SPDK_NVME_NS_DPS_PI_SUPPORTED) &&
|
|
||||||
(md_size == 8)) {
|
|
||||||
sector_size -= 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (remaining_lba_count > 0) {
|
while (remaining_lba_count > 0) {
|
||||||
lba_count = sectors_per_max_io - (lba & sector_mask);
|
lba_count = sectors_per_max_io - (lba & sector_mask);
|
||||||
lba_count = spdk_min(remaining_lba_count, lba_count);
|
lba_count = spdk_min(remaining_lba_count, lba_count);
|
||||||
@ -123,7 +128,7 @@ _nvme_ns_cmd_split_request(struct spdk_nvme_ns *ns,
|
|||||||
remaining_lba_count -= lba_count;
|
remaining_lba_count -= lba_count;
|
||||||
lba += lba_count;
|
lba += lba_count;
|
||||||
payload_offset += lba_count * sector_size;
|
payload_offset += lba_count * sector_size;
|
||||||
md_offset += lba_count * md_size;
|
md_offset += lba_count * ns->md_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
return req;
|
return req;
|
||||||
@ -387,20 +392,9 @@ _nvme_ns_cmd_rw(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
|
|||||||
uint32_t io_flags, uint16_t apptag_mask, uint16_t apptag, bool check_sgl)
|
uint32_t io_flags, uint16_t apptag_mask, uint16_t apptag, bool check_sgl)
|
||||||
{
|
{
|
||||||
struct nvme_request *req;
|
struct nvme_request *req;
|
||||||
uint32_t sector_size;
|
uint32_t sector_size = _nvme_get_host_buffer_sector_size(ns, io_flags);
|
||||||
uint32_t sectors_per_max_io;
|
uint32_t sectors_per_max_io = ns->sectors_per_max_io;
|
||||||
uint32_t sectors_per_stripe;
|
uint32_t sectors_per_stripe = ns->sectors_per_stripe;
|
||||||
|
|
||||||
sector_size = ns->extended_lba_size;
|
|
||||||
sectors_per_max_io = ns->sectors_per_max_io;
|
|
||||||
sectors_per_stripe = ns->sectors_per_stripe;
|
|
||||||
|
|
||||||
if ((io_flags & SPDK_NVME_IO_FLAGS_PRACT) &&
|
|
||||||
(ns->flags & SPDK_NVME_NS_EXTENDED_LBA_SUPPORTED) &&
|
|
||||||
(ns->flags & SPDK_NVME_NS_DPS_PI_SUPPORTED) &&
|
|
||||||
(ns->md_size == 8)) {
|
|
||||||
sector_size -= 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
req = nvme_allocate_request(qpair, payload, lba_count * sector_size, lba_count * ns->md_size,
|
req = nvme_allocate_request(qpair, payload, lba_count * sector_size, lba_count * ns->md_size,
|
||||||
cb_fn, cb_arg);
|
cb_fn, cb_arg);
|
||||||
|
Loading…
Reference in New Issue
Block a user