nvme: set NUMDU in Get Log Page command
NUMDU was added with NVMe 1.2.1 and allows a larger log page size to be described. Change-Id: I1a4ac42393c1a21175b3564980d56b6e7a6ae80d Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
8b3ec5bb42
commit
da92639400
@ -345,8 +345,17 @@ spdk_nvme_ctrlr_cmd_get_log_page(struct spdk_nvme_ctrlr *ctrlr, uint8_t log_page
|
|||||||
{
|
{
|
||||||
struct nvme_request *req;
|
struct nvme_request *req;
|
||||||
struct spdk_nvme_cmd *cmd;
|
struct spdk_nvme_cmd *cmd;
|
||||||
|
uint32_t numd, numdl, numdu;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
if (payload_size == 0) {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
numd = payload_size / sizeof(uint32_t) - 1u;
|
||||||
|
numdl = numd & 0xFFFFu;
|
||||||
|
numdu = (numd >> 16) & 0xFFFFu;
|
||||||
|
|
||||||
pthread_mutex_lock(&ctrlr->ctrlr_lock);
|
pthread_mutex_lock(&ctrlr->ctrlr_lock);
|
||||||
req = nvme_allocate_request_user_copy(payload, payload_size, cb_fn, cb_arg, false);
|
req = nvme_allocate_request_user_copy(payload, payload_size, cb_fn, cb_arg, false);
|
||||||
if (req == NULL) {
|
if (req == NULL) {
|
||||||
@ -357,8 +366,9 @@ spdk_nvme_ctrlr_cmd_get_log_page(struct spdk_nvme_ctrlr *ctrlr, uint8_t log_page
|
|||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
cmd->opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
||||||
cmd->nsid = nsid;
|
cmd->nsid = nsid;
|
||||||
cmd->cdw10 = ((payload_size / sizeof(uint32_t)) - 1) << 16;
|
cmd->cdw10 = numdl << 16;
|
||||||
cmd->cdw10 |= log_page;
|
cmd->cdw10 |= log_page;
|
||||||
|
cmd->cdw11 = numdu;
|
||||||
|
|
||||||
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
pthread_mutex_unlock(&ctrlr->ctrlr_lock);
|
pthread_mutex_unlock(&ctrlr->ctrlr_lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user