summaryrefslogtreecommitdiffstats
path: root/sys/dev/nvme/nvme_ns_cmd.c
diff options
context:
space:
mode:
authorjimharris <jimharris@FreeBSD.org>2013-07-19 21:33:24 +0000
committerjimharris <jimharris@FreeBSD.org>2013-07-19 21:33:24 +0000
commitc3dfb166eeb405887a8fbe7666d2436133a39c0b (patch)
treefefe5bbb7bdf05aa24b1eb44299388d1777ddcd8 /sys/dev/nvme/nvme_ns_cmd.c
parent7018faf19c888299676f60070ea1df0ebe309711 (diff)
downloadFreeBSD-src-c3dfb166eeb405887a8fbe7666d2436133a39c0b.zip
FreeBSD-src-c3dfb166eeb405887a8fbe7666d2436133a39c0b.tar.gz
Fix nvme(4) and nvd(4) to support non 512-byte sector sizes.
Recent testing with QEMU that has variable sector size support for NVMe uncovered some of these issues. Chatham prototype boards supported only 512 byte sectors. Sponsored by: Intel Reviewed by: carl MFC after: 3 days
Diffstat (limited to 'sys/dev/nvme/nvme_ns_cmd.c')
-rw-r--r--sys/dev/nvme/nvme_ns_cmd.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/nvme/nvme_ns_cmd.c b/sys/dev/nvme/nvme_ns_cmd.c
index 50ec120..b5c45dc 100644
--- a/sys/dev/nvme/nvme_ns_cmd.c
+++ b/sys/dev/nvme/nvme_ns_cmd.c
@@ -36,7 +36,8 @@ nvme_ns_cmd_read(struct nvme_namespace *ns, void *payload, uint64_t lba,
struct nvme_request *req;
struct nvme_command *cmd;
- req = nvme_allocate_request_vaddr(payload, lba_count*512, cb_fn, cb_arg);
+ req = nvme_allocate_request_vaddr(payload,
+ lba_count*nvme_ns_get_sector_size(ns), cb_fn, cb_arg);
if (req == NULL)
return (ENOMEM);
@@ -89,8 +90,8 @@ nvme_ns_cmd_write(struct nvme_namespace *ns, void *payload, uint64_t lba,
struct nvme_request *req;
struct nvme_command *cmd;
- req = nvme_allocate_request_vaddr(payload, lba_count*512, cb_fn,
- cb_arg);
+ req = nvme_allocate_request_vaddr(payload,
+ lba_count*nvme_ns_get_sector_size(ns), cb_fn, cb_arg);
if (req == NULL)
return (ENOMEM);
OpenPOWER on IntegriCloud