nvmf: move Command Effects log page to ctrlr.c
No code change - the existing code is moved as-is. This is the only place it is used, and it is conceptually part of the virtual controller implementation. Change-Id: I863f5931225c4d78e515341445e91b29a73da64d Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-on: https://review.gerrithub.io/406251 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
1ec2c81bbc
commit
61d379fd7e
@ -1036,6 +1036,58 @@ spdk_nvmf_get_changed_ns_list_log_page(struct spdk_nvmf_ctrlr *ctrlr,
|
|||||||
memset(&ctrlr->changed_ns_list, 0, sizeof(ctrlr->changed_ns_list));
|
memset(&ctrlr->changed_ns_list, 0, sizeof(ctrlr->changed_ns_list));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The structure can be modified if we provide support for other commands in future */
|
||||||
|
static const struct spdk_nvme_cmds_and_effect_log_page g_cmds_and_effect_log_page = {
|
||||||
|
.admin_cmds_supported = {
|
||||||
|
/* CSUPP, LBCC, NCC, NIC, CCC, CSE */
|
||||||
|
/* Get Log Page */
|
||||||
|
[SPDK_NVME_OPC_GET_LOG_PAGE] = {1, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* Identify */
|
||||||
|
[SPDK_NVME_OPC_IDENTIFY] = {1, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* Abort */
|
||||||
|
[SPDK_NVME_OPC_ABORT] = {1, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* Set Features */
|
||||||
|
[SPDK_NVME_OPC_SET_FEATURES] = {1, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* Get Features */
|
||||||
|
[SPDK_NVME_OPC_GET_FEATURES] = {1, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* Async Event Request */
|
||||||
|
[SPDK_NVME_OPC_ASYNC_EVENT_REQUEST] = {1, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* Keep Alive */
|
||||||
|
[SPDK_NVME_OPC_KEEP_ALIVE] = {1, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
},
|
||||||
|
.io_cmds_supported = {
|
||||||
|
/* FLUSH */
|
||||||
|
[SPDK_NVME_OPC_FLUSH] = {1, 1, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* WRITE */
|
||||||
|
[SPDK_NVME_OPC_WRITE] = {1, 1, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* READ */
|
||||||
|
[SPDK_NVME_OPC_READ] = {1, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* WRITE ZEROES */
|
||||||
|
[SPDK_NVME_OPC_WRITE_ZEROES] = {1, 1, 0, 0, 0, 0, 0, 0},
|
||||||
|
/* DATASET MANAGEMENT */
|
||||||
|
[SPDK_NVME_OPC_DATASET_MANAGEMENT] = {1, 1, 0, 0, 0, 0, 0, 0},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
spdk_nvmf_get_cmds_and_effects_log_page(void *buffer,
|
||||||
|
uint64_t offset, uint32_t length)
|
||||||
|
{
|
||||||
|
uint32_t page_size = sizeof(struct spdk_nvme_cmds_and_effect_log_page);
|
||||||
|
size_t copy_len = 0;
|
||||||
|
size_t zero_len = length;
|
||||||
|
|
||||||
|
if (offset < page_size) {
|
||||||
|
copy_len = spdk_min(page_size - offset, length);
|
||||||
|
zero_len -= copy_len;
|
||||||
|
memcpy(buffer, (char *)(&g_cmds_and_effect_log_page) + offset, copy_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (zero_len) {
|
||||||
|
memset((char *)buffer + copy_len, 0, zero_len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_nvmf_ctrlr_get_log_page(struct spdk_nvmf_request *req)
|
spdk_nvmf_ctrlr_get_log_page(struct spdk_nvmf_request *req)
|
||||||
{
|
{
|
||||||
|
@ -608,58 +608,6 @@ spdk_nvmf_poll_group_resume_subsystem(struct spdk_nvmf_poll_group *group,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The structure can be modified if we provide support for other commands in future */
|
|
||||||
static const struct spdk_nvme_cmds_and_effect_log_page g_cmds_and_effect_log_page = {
|
|
||||||
.admin_cmds_supported = {
|
|
||||||
/* CSUPP, LBCC, NCC, NIC, CCC, CSE */
|
|
||||||
/* Get Log Page */
|
|
||||||
[SPDK_NVME_OPC_GET_LOG_PAGE] = {1, 0, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* Identify */
|
|
||||||
[SPDK_NVME_OPC_IDENTIFY] = {1, 0, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* Abort */
|
|
||||||
[SPDK_NVME_OPC_ABORT] = {1, 0, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* Set Features */
|
|
||||||
[SPDK_NVME_OPC_SET_FEATURES] = {1, 0, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* Get Features */
|
|
||||||
[SPDK_NVME_OPC_GET_FEATURES] = {1, 0, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* Async Event Request */
|
|
||||||
[SPDK_NVME_OPC_ASYNC_EVENT_REQUEST] = {1, 0, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* Keep Alive */
|
|
||||||
[SPDK_NVME_OPC_KEEP_ALIVE] = {1, 0, 0, 0, 0, 0, 0, 0},
|
|
||||||
},
|
|
||||||
.io_cmds_supported = {
|
|
||||||
/* FLUSH */
|
|
||||||
[SPDK_NVME_OPC_FLUSH] = {1, 1, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* WRITE */
|
|
||||||
[SPDK_NVME_OPC_WRITE] = {1, 1, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* READ */
|
|
||||||
[SPDK_NVME_OPC_READ] = {1, 0, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* WRITE ZEROES */
|
|
||||||
[SPDK_NVME_OPC_WRITE_ZEROES] = {1, 1, 0, 0, 0, 0, 0, 0},
|
|
||||||
/* DATASET MANAGEMENT */
|
|
||||||
[SPDK_NVME_OPC_DATASET_MANAGEMENT] = {1, 1, 0, 0, 0, 0, 0, 0},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
|
||||||
spdk_nvmf_get_cmds_and_effects_log_page(void *buffer,
|
|
||||||
uint64_t offset, uint32_t length)
|
|
||||||
{
|
|
||||||
uint32_t page_size = sizeof(struct spdk_nvme_cmds_and_effect_log_page);
|
|
||||||
size_t copy_len = 0;
|
|
||||||
size_t zero_len = length;
|
|
||||||
|
|
||||||
if (offset < page_size) {
|
|
||||||
copy_len = spdk_min(page_size - offset, length);
|
|
||||||
zero_len -= copy_len;
|
|
||||||
memcpy(buffer, (char *)(&g_cmds_and_effect_log_page) + offset, copy_len);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (zero_len) {
|
|
||||||
memset((char *)buffer + copy_len, 0, zero_len);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SPDK_TRACE_REGISTER_FN(nvmf_trace)
|
SPDK_TRACE_REGISTER_FN(nvmf_trace)
|
||||||
{
|
{
|
||||||
spdk_trace_register_object(OBJECT_NVMF_IO, 'r');
|
spdk_trace_register_object(OBJECT_NVMF_IO, 'r');
|
||||||
|
@ -245,8 +245,6 @@ int spdk_nvmf_request_abort(struct spdk_nvmf_request *req);
|
|||||||
void spdk_nvmf_get_discovery_log_page(struct spdk_nvmf_tgt *tgt,
|
void spdk_nvmf_get_discovery_log_page(struct spdk_nvmf_tgt *tgt,
|
||||||
void *buffer, uint64_t offset,
|
void *buffer, uint64_t offset,
|
||||||
uint32_t length);
|
uint32_t length);
|
||||||
void spdk_nvmf_get_cmds_and_effects_log_page(void *buffer,
|
|
||||||
uint64_t offset, uint32_t length);
|
|
||||||
|
|
||||||
struct spdk_nvmf_qpair *spdk_nvmf_ctrlr_get_qpair(struct spdk_nvmf_ctrlr *ctrlr, uint16_t qid);
|
struct spdk_nvmf_qpair *spdk_nvmf_ctrlr_get_qpair(struct spdk_nvmf_ctrlr *ctrlr, uint16_t qid);
|
||||||
void spdk_nvmf_ctrlr_destruct(struct spdk_nvmf_ctrlr *ctrlr);
|
void spdk_nvmf_ctrlr_destruct(struct spdk_nvmf_ctrlr *ctrlr);
|
||||||
|
@ -126,9 +126,6 @@ DEFINE_STUB(spdk_nvmf_bdev_ctrlr_identify_ns,
|
|||||||
DEFINE_STUB_V(spdk_nvmf_get_discovery_log_page,
|
DEFINE_STUB_V(spdk_nvmf_get_discovery_log_page,
|
||||||
(struct spdk_nvmf_tgt *tgt, void *buffer, uint64_t offset, uint32_t length))
|
(struct spdk_nvmf_tgt *tgt, void *buffer, uint64_t offset, uint32_t length))
|
||||||
|
|
||||||
DEFINE_STUB_V(spdk_nvmf_get_cmds_and_effects_log_page,
|
|
||||||
(void *buffer, uint64_t offset, uint32_t length))
|
|
||||||
|
|
||||||
DEFINE_STUB(spdk_nvmf_request_complete,
|
DEFINE_STUB(spdk_nvmf_request_complete,
|
||||||
int,
|
int,
|
||||||
(struct spdk_nvmf_request *req),
|
(struct spdk_nvmf_request *req),
|
||||||
|
Loading…
Reference in New Issue
Block a user