lib/vhsot: remove spdk prefix from static functions in vhost_nvme.c.
Signed-off-by: Seth Howell <seth.howell@intel.com> Change-Id: If2b818bc90a957f8478c68009175a0436dac4876 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2307 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
parent
ba5c5cc344
commit
4d112ac217
@ -164,7 +164,7 @@ static const struct spdk_vhost_dev_backend spdk_vhost_nvme_device_backend;
|
|||||||
#define FW_VERSION SPDK_VERSION_MAJOR_STRING SPDK_VERSION_MINOR_STRING SPDK_VERSION_PATCH_STRING
|
#define FW_VERSION SPDK_VERSION_MAJOR_STRING SPDK_VERSION_MINOR_STRING SPDK_VERSION_PATCH_STRING
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_nvme_process_sq(struct spdk_vhost_nvme_dev *nvme, struct spdk_vhost_nvme_sq *sq,
|
nvme_process_sq(struct spdk_vhost_nvme_dev *nvme, struct spdk_vhost_nvme_sq *sq,
|
||||||
struct spdk_vhost_nvme_task *task);
|
struct spdk_vhost_nvme_task *task);
|
||||||
|
|
||||||
static struct spdk_vhost_nvme_dev *
|
static struct spdk_vhost_nvme_dev *
|
||||||
@ -213,7 +213,7 @@ nvme_inc_sq_head(struct spdk_vhost_nvme_sq *sq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct spdk_vhost_nvme_sq *
|
static struct spdk_vhost_nvme_sq *
|
||||||
spdk_vhost_nvme_get_sq_from_qid(struct spdk_vhost_nvme_dev *dev, uint16_t qid)
|
vhost_nvme_get_sq_from_qid(struct spdk_vhost_nvme_dev *dev, uint16_t qid)
|
||||||
{
|
{
|
||||||
if (spdk_unlikely(!qid || qid > MAX_IO_QUEUES)) {
|
if (spdk_unlikely(!qid || qid > MAX_IO_QUEUES)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -223,7 +223,7 @@ spdk_vhost_nvme_get_sq_from_qid(struct spdk_vhost_nvme_dev *dev, uint16_t qid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct spdk_vhost_nvme_cq *
|
static struct spdk_vhost_nvme_cq *
|
||||||
spdk_vhost_nvme_get_cq_from_qid(struct spdk_vhost_nvme_dev *dev, uint16_t qid)
|
vhost_nvme_get_cq_from_qid(struct spdk_vhost_nvme_dev *dev, uint16_t qid)
|
||||||
{
|
{
|
||||||
if (spdk_unlikely(!qid || qid > MAX_IO_QUEUES)) {
|
if (spdk_unlikely(!qid || qid > MAX_IO_QUEUES)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -233,7 +233,7 @@ spdk_vhost_nvme_get_cq_from_qid(struct spdk_vhost_nvme_dev *dev, uint16_t qid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t
|
static inline uint32_t
|
||||||
spdk_vhost_nvme_get_queue_head(struct spdk_vhost_nvme_dev *nvme, uint32_t offset)
|
vhost_nvme_get_queue_head(struct spdk_vhost_nvme_dev *nvme, uint32_t offset)
|
||||||
{
|
{
|
||||||
if (nvme->dataplane_started) {
|
if (nvme->dataplane_started) {
|
||||||
return nvme->dbbuf_dbs[offset];
|
return nvme->dbbuf_dbs[offset];
|
||||||
@ -256,7 +256,7 @@ vhost_nvme_gpa_to_vva(void *priv, uint64_t addr, uint64_t len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_vhost_nvme_map_prps(struct spdk_vhost_nvme_dev *nvme, struct spdk_nvme_cmd *cmd,
|
vhost_nvme_map_prps(struct spdk_vhost_nvme_dev *nvme, struct spdk_nvme_cmd *cmd,
|
||||||
struct spdk_vhost_nvme_task *task, uint32_t len)
|
struct spdk_vhost_nvme_task *task, uint32_t len)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
@ -271,7 +271,7 @@ spdk_vhost_nvme_map_prps(struct spdk_vhost_nvme_dev *nvme, struct spdk_nvme_cmd
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_nvme_cq_signal_fd(struct spdk_vhost_nvme_dev *nvme)
|
nvme_cq_signal_fd(struct spdk_vhost_nvme_dev *nvme)
|
||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_cq *cq;
|
struct spdk_vhost_nvme_cq *cq;
|
||||||
uint32_t qid, cq_head;
|
uint32_t qid, cq_head;
|
||||||
@ -279,12 +279,12 @@ spdk_nvme_cq_signal_fd(struct spdk_vhost_nvme_dev *nvme)
|
|||||||
assert(nvme != NULL);
|
assert(nvme != NULL);
|
||||||
|
|
||||||
for (qid = 1; qid <= MAX_IO_QUEUES; qid++) {
|
for (qid = 1; qid <= MAX_IO_QUEUES; qid++) {
|
||||||
cq = spdk_vhost_nvme_get_cq_from_qid(nvme, qid);
|
cq = vhost_nvme_get_cq_from_qid(nvme, qid);
|
||||||
if (!cq || !cq->valid) {
|
if (!cq || !cq->valid) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
cq_head = spdk_vhost_nvme_get_queue_head(nvme, cq_offset(qid, 1));
|
cq_head = vhost_nvme_get_queue_head(nvme, cq_offset(qid, 1));
|
||||||
if (cq->irq_enabled && cq->need_signaled_cnt && (cq->cq_head != cq_head)) {
|
if (cq->irq_enabled && cq->need_signaled_cnt && (cq->cq_head != cq_head)) {
|
||||||
eventfd_write(cq->virq, (eventfd_t)1);
|
eventfd_write(cq->virq, (eventfd_t)1);
|
||||||
cq->need_signaled_cnt = 0;
|
cq->need_signaled_cnt = 0;
|
||||||
@ -293,7 +293,7 @@ spdk_nvme_cq_signal_fd(struct spdk_vhost_nvme_dev *nvme)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_vhost_nvme_task_complete(struct spdk_vhost_nvme_task *task)
|
vhost_nvme_task_complete(struct spdk_vhost_nvme_task *task)
|
||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_dev *nvme = task->nvme;
|
struct spdk_vhost_nvme_dev *nvme = task->nvme;
|
||||||
struct spdk_nvme_cpl cqe = {0};
|
struct spdk_nvme_cpl cqe = {0};
|
||||||
@ -303,13 +303,13 @@ spdk_vhost_nvme_task_complete(struct spdk_vhost_nvme_task *task)
|
|||||||
uint16_t cqid = task->cqid;
|
uint16_t cqid = task->cqid;
|
||||||
uint16_t sqid = task->sqid;
|
uint16_t sqid = task->sqid;
|
||||||
|
|
||||||
cq = spdk_vhost_nvme_get_cq_from_qid(nvme, cqid);
|
cq = vhost_nvme_get_cq_from_qid(nvme, cqid);
|
||||||
sq = spdk_vhost_nvme_get_sq_from_qid(nvme, sqid);
|
sq = vhost_nvme_get_sq_from_qid(nvme, sqid);
|
||||||
if (spdk_unlikely(!cq || !sq)) {
|
if (spdk_unlikely(!cq || !sq)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cq->guest_signaled_cq_head = spdk_vhost_nvme_get_queue_head(nvme, cq_offset(cqid, 1));
|
cq->guest_signaled_cq_head = vhost_nvme_get_queue_head(nvme, cq_offset(cqid, 1));
|
||||||
if (spdk_unlikely(nvme_cq_is_full(cq))) {
|
if (spdk_unlikely(nvme_cq_is_full(cq))) {
|
||||||
STAILQ_INSERT_TAIL(&cq->cq_full_waited_tasks, task, stailq);
|
STAILQ_INSERT_TAIL(&cq->cq_full_waited_tasks, task, stailq);
|
||||||
return;
|
return;
|
||||||
@ -358,7 +358,7 @@ blk_request_complete_cb(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg
|
|||||||
SPDK_ERRLOG("I/O error, sector %u\n", cmd->cdw10);
|
SPDK_ERRLOG("I/O error, sector %u\n", cmd->cdw10);
|
||||||
}
|
}
|
||||||
|
|
||||||
spdk_vhost_nvme_task_complete(task);
|
vhost_nvme_task_complete(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -383,14 +383,14 @@ blk_unmap_complete_cb(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
|
|||||||
spdk_bdev_free_io(bdev_io);
|
spdk_bdev_free_io(bdev_io);
|
||||||
|
|
||||||
if (!task->num_children) {
|
if (!task->num_children) {
|
||||||
spdk_vhost_nvme_task_complete(task);
|
vhost_nvme_task_complete(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
STAILQ_INSERT_TAIL(&nvme->free_tasks, child, stailq);
|
STAILQ_INSERT_TAIL(&nvme->free_tasks, child, stailq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct spdk_vhost_nvme_ns *
|
static struct spdk_vhost_nvme_ns *
|
||||||
spdk_vhost_nvme_get_ns_from_nsid(struct spdk_vhost_nvme_dev *dev, uint32_t nsid)
|
vhost_nvme_get_ns_from_nsid(struct spdk_vhost_nvme_dev *dev, uint32_t nsid)
|
||||||
{
|
{
|
||||||
if (spdk_unlikely(!nsid || nsid > dev->num_ns)) {
|
if (spdk_unlikely(!nsid || nsid > dev->num_ns)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -405,7 +405,7 @@ vhost_nvme_resubmit_task(void *arg)
|
|||||||
struct spdk_vhost_nvme_task *task = (struct spdk_vhost_nvme_task *)arg;
|
struct spdk_vhost_nvme_task *task = (struct spdk_vhost_nvme_task *)arg;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rc = spdk_nvme_process_sq(task->nvme, task->sq, task);
|
rc = nvme_process_sq(task->nvme, task->sq, task);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
SPDK_DEBUGLOG(SPDK_LOG_VHOST_NVME, "vhost_nvme: task resubmit failed, rc = %d.\n", rc);
|
SPDK_DEBUGLOG(SPDK_LOG_VHOST_NVME, "vhost_nvme: task resubmit failed, rc = %d.\n", rc);
|
||||||
}
|
}
|
||||||
@ -426,14 +426,14 @@ vhost_nvme_queue_task(struct spdk_vhost_nvme_task *task)
|
|||||||
task->dnr = 1;
|
task->dnr = 1;
|
||||||
task->sct = SPDK_NVME_SCT_GENERIC;
|
task->sct = SPDK_NVME_SCT_GENERIC;
|
||||||
task->sc = SPDK_NVME_SC_INTERNAL_DEVICE_ERROR;
|
task->sc = SPDK_NVME_SC_INTERNAL_DEVICE_ERROR;
|
||||||
spdk_vhost_nvme_task_complete(task);
|
vhost_nvme_task_complete(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_nvme_process_sq(struct spdk_vhost_nvme_dev *nvme, struct spdk_vhost_nvme_sq *sq,
|
nvme_process_sq(struct spdk_vhost_nvme_dev *nvme, struct spdk_vhost_nvme_sq *sq,
|
||||||
struct spdk_vhost_nvme_task *task)
|
struct spdk_vhost_nvme_task *task)
|
||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_task *child;
|
struct spdk_vhost_nvme_task *child;
|
||||||
@ -450,12 +450,12 @@ spdk_nvme_process_sq(struct spdk_vhost_nvme_dev *nvme, struct spdk_vhost_nvme_sq
|
|||||||
task->sct = 0;
|
task->sct = 0;
|
||||||
task->sc = 0;
|
task->sc = 0;
|
||||||
|
|
||||||
ns = spdk_vhost_nvme_get_ns_from_nsid(nvme, cmd->nsid);
|
ns = vhost_nvme_get_ns_from_nsid(nvme, cmd->nsid);
|
||||||
if (spdk_unlikely(!ns)) {
|
if (spdk_unlikely(!ns)) {
|
||||||
task->dnr = 1;
|
task->dnr = 1;
|
||||||
task->sct = SPDK_NVME_SCT_GENERIC;
|
task->sct = SPDK_NVME_SCT_GENERIC;
|
||||||
task->sc = SPDK_NVME_SC_INVALID_NAMESPACE_OR_FORMAT;
|
task->sc = SPDK_NVME_SC_INVALID_NAMESPACE_OR_FORMAT;
|
||||||
spdk_vhost_nvme_task_complete(task);
|
vhost_nvme_task_complete(task);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,7 +470,7 @@ spdk_nvme_process_sq(struct spdk_vhost_nvme_dev *nvme, struct spdk_vhost_nvme_sq
|
|||||||
task->dnr = 1;
|
task->dnr = 1;
|
||||||
task->sct = SPDK_NVME_SCT_GENERIC;
|
task->sct = SPDK_NVME_SCT_GENERIC;
|
||||||
task->sc = SPDK_NVME_SC_INVALID_NAMESPACE_OR_FORMAT;
|
task->sc = SPDK_NVME_SC_INVALID_NAMESPACE_OR_FORMAT;
|
||||||
spdk_vhost_nvme_task_complete(task);
|
vhost_nvme_task_complete(task);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -487,7 +487,7 @@ spdk_nvme_process_sq(struct spdk_vhost_nvme_dev *nvme, struct spdk_vhost_nvme_sq
|
|||||||
task->dnr = 1;
|
task->dnr = 1;
|
||||||
task->sct = SPDK_NVME_SCT_GENERIC;
|
task->sct = SPDK_NVME_SCT_GENERIC;
|
||||||
task->sc = SPDK_NVME_SC_INVALID_FIELD;
|
task->sc = SPDK_NVME_SC_INVALID_FIELD;
|
||||||
spdk_vhost_nvme_task_complete(task);
|
vhost_nvme_task_complete(task);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -498,13 +498,13 @@ spdk_nvme_process_sq(struct spdk_vhost_nvme_dev *nvme, struct spdk_vhost_nvme_sq
|
|||||||
len = nlba * block_size;
|
len = nlba * block_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = spdk_vhost_nvme_map_prps(nvme, cmd, task, len);
|
ret = vhost_nvme_map_prps(nvme, cmd, task, len);
|
||||||
if (spdk_unlikely(ret != 0)) {
|
if (spdk_unlikely(ret != 0)) {
|
||||||
SPDK_ERRLOG("nvme command map prps failed\n");
|
SPDK_ERRLOG("nvme command map prps failed\n");
|
||||||
task->dnr = 1;
|
task->dnr = 1;
|
||||||
task->sct = SPDK_NVME_SCT_GENERIC;
|
task->sct = SPDK_NVME_SCT_GENERIC;
|
||||||
task->sc = SPDK_NVME_SC_INVALID_FIELD;
|
task->sc = SPDK_NVME_SC_INVALID_FIELD;
|
||||||
spdk_vhost_nvme_task_complete(task);
|
vhost_nvme_task_complete(task);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -564,7 +564,7 @@ spdk_nvme_process_sq(struct spdk_vhost_nvme_dev *nvme, struct spdk_vhost_nvme_sq
|
|||||||
task->dnr = 1;
|
task->dnr = 1;
|
||||||
task->sct = SPDK_NVME_SCT_GENERIC;
|
task->sct = SPDK_NVME_SCT_GENERIC;
|
||||||
task->sc = SPDK_NVME_SC_INTERNAL_DEVICE_ERROR;
|
task->sc = SPDK_NVME_SC_INTERNAL_DEVICE_ERROR;
|
||||||
spdk_vhost_nvme_task_complete(task);
|
vhost_nvme_task_complete(task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -592,23 +592,23 @@ nvme_worker(void *arg)
|
|||||||
|
|
||||||
for (qid = 1; qid <= MAX_IO_QUEUES; qid++) {
|
for (qid = 1; qid <= MAX_IO_QUEUES; qid++) {
|
||||||
|
|
||||||
sq = spdk_vhost_nvme_get_sq_from_qid(nvme, qid);
|
sq = vhost_nvme_get_sq_from_qid(nvme, qid);
|
||||||
if (!sq->valid) {
|
if (!sq->valid) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
cq = spdk_vhost_nvme_get_cq_from_qid(nvme, sq->cqid);
|
cq = vhost_nvme_get_cq_from_qid(nvme, sq->cqid);
|
||||||
if (spdk_unlikely(!cq)) {
|
if (spdk_unlikely(!cq)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
cq->guest_signaled_cq_head = spdk_vhost_nvme_get_queue_head(nvme, cq_offset(sq->cqid, 1));
|
cq->guest_signaled_cq_head = vhost_nvme_get_queue_head(nvme, cq_offset(sq->cqid, 1));
|
||||||
if (spdk_unlikely(!STAILQ_EMPTY(&cq->cq_full_waited_tasks) &&
|
if (spdk_unlikely(!STAILQ_EMPTY(&cq->cq_full_waited_tasks) &&
|
||||||
!nvme_cq_is_full(cq))) {
|
!nvme_cq_is_full(cq))) {
|
||||||
task = STAILQ_FIRST(&cq->cq_full_waited_tasks);
|
task = STAILQ_FIRST(&cq->cq_full_waited_tasks);
|
||||||
STAILQ_REMOVE_HEAD(&cq->cq_full_waited_tasks, stailq);
|
STAILQ_REMOVE_HEAD(&cq->cq_full_waited_tasks, stailq);
|
||||||
spdk_vhost_nvme_task_complete(task);
|
vhost_nvme_task_complete(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
dbbuf_sq = spdk_vhost_nvme_get_queue_head(nvme, sq_offset(qid, 1));
|
dbbuf_sq = vhost_nvme_get_queue_head(nvme, sq_offset(qid, 1));
|
||||||
sq->sq_tail = (uint16_t)dbbuf_sq;
|
sq->sq_tail = (uint16_t)dbbuf_sq;
|
||||||
count = 0;
|
count = 0;
|
||||||
|
|
||||||
@ -627,7 +627,7 @@ nvme_worker(void *arg)
|
|||||||
nvme_inc_sq_head(sq);
|
nvme_inc_sq_head(sq);
|
||||||
|
|
||||||
/* processing IO */
|
/* processing IO */
|
||||||
ret = spdk_nvme_process_sq(nvme, sq, task);
|
ret = nvme_process_sq(nvme, sq, task);
|
||||||
if (spdk_unlikely(ret)) {
|
if (spdk_unlikely(ret)) {
|
||||||
SPDK_ERRLOG("QID %u CID %u, SQ HEAD %u, DBBUF SQ TAIL %u\n", qid, task->cmd.cid, sq->sq_head,
|
SPDK_ERRLOG("QID %u CID %u, SQ HEAD %u, DBBUF SQ TAIL %u\n", qid, task->cmd.cid, sq->sq_head,
|
||||||
sq->sq_tail);
|
sq->sq_tail);
|
||||||
@ -646,7 +646,7 @@ nvme_worker(void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Completion Queue */
|
/* Completion Queue */
|
||||||
spdk_nvme_cq_signal_fd(nvme);
|
nvme_cq_signal_fd(nvme);
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
@ -706,8 +706,8 @@ vhost_nvme_create_io_sq(struct spdk_vhost_nvme_dev *nvme,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
sq = spdk_vhost_nvme_get_sq_from_qid(nvme, qid);
|
sq = vhost_nvme_get_sq_from_qid(nvme, qid);
|
||||||
cq = spdk_vhost_nvme_get_cq_from_qid(nvme, cqid);
|
cq = vhost_nvme_get_cq_from_qid(nvme, cqid);
|
||||||
if (!sq || !cq) {
|
if (!sq || !cq) {
|
||||||
SPDK_DEBUGLOG(SPDK_LOG_VHOST_NVME, "User requested invalid QID %u or CQID %u\n",
|
SPDK_DEBUGLOG(SPDK_LOG_VHOST_NVME, "User requested invalid QID %u or CQID %u\n",
|
||||||
qid, cqid);
|
qid, cqid);
|
||||||
@ -744,7 +744,7 @@ vhost_nvme_delete_io_sq(struct spdk_vhost_nvme_dev *nvme,
|
|||||||
struct spdk_vhost_nvme_sq *sq;
|
struct spdk_vhost_nvme_sq *sq;
|
||||||
|
|
||||||
qid = cmd->cdw10 & 0xffff;
|
qid = cmd->cdw10 & 0xffff;
|
||||||
sq = spdk_vhost_nvme_get_sq_from_qid(nvme, qid);
|
sq = vhost_nvme_get_sq_from_qid(nvme, qid);
|
||||||
if (!sq) {
|
if (!sq) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -787,7 +787,7 @@ vhost_nvme_create_io_cq(struct spdk_vhost_nvme_dev *nvme,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cq = spdk_vhost_nvme_get_cq_from_qid(nvme, qid);
|
cq = vhost_nvme_get_cq_from_qid(nvme, qid);
|
||||||
if (!cq) {
|
if (!cq) {
|
||||||
SPDK_DEBUGLOG(SPDK_LOG_VHOST_NVME, "User requested invalid QID %u\n", qid);
|
SPDK_DEBUGLOG(SPDK_LOG_VHOST_NVME, "User requested invalid QID %u\n", qid);
|
||||||
cpl->status.sct = SPDK_NVME_SCT_COMMAND_SPECIFIC;
|
cpl->status.sct = SPDK_NVME_SCT_COMMAND_SPECIFIC;
|
||||||
@ -828,7 +828,7 @@ vhost_nvme_delete_io_cq(struct spdk_vhost_nvme_dev *nvme,
|
|||||||
struct spdk_vhost_nvme_cq *cq;
|
struct spdk_vhost_nvme_cq *cq;
|
||||||
|
|
||||||
qid = cmd->cdw10 & 0xffff;
|
qid = cmd->cdw10 & 0xffff;
|
||||||
cq = spdk_vhost_nvme_get_cq_from_qid(nvme, qid);
|
cq = vhost_nvme_get_cq_from_qid(nvme, qid);
|
||||||
if (!cq) {
|
if (!cq) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -844,7 +844,7 @@ vhost_nvme_delete_io_cq(struct spdk_vhost_nvme_dev *nvme,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct spdk_vhost_nvme_dev *
|
static struct spdk_vhost_nvme_dev *
|
||||||
spdk_vhost_nvme_get_by_name(int vid)
|
vhost_nvme_get_by_name(int vid)
|
||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_dev *nvme;
|
struct spdk_vhost_nvme_dev *nvme;
|
||||||
struct spdk_vhost_dev *vdev;
|
struct spdk_vhost_dev *vdev;
|
||||||
@ -867,7 +867,7 @@ vhost_nvme_get_cap(int vid, uint64_t *cap)
|
|||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_dev *nvme;
|
struct spdk_vhost_nvme_dev *nvme;
|
||||||
|
|
||||||
nvme = spdk_vhost_nvme_get_by_name(vid);
|
nvme = vhost_nvme_get_by_name(vid);
|
||||||
if (!nvme) {
|
if (!nvme) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -885,7 +885,7 @@ vhost_nvme_admin_passthrough(int vid, void *cmd, void *cqe, void *buf)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
struct spdk_vhost_nvme_dev *nvme;
|
struct spdk_vhost_nvme_dev *nvme;
|
||||||
|
|
||||||
nvme = spdk_vhost_nvme_get_by_name(vid);
|
nvme = vhost_nvme_get_by_name(vid);
|
||||||
if (!nvme) {
|
if (!nvme) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -897,7 +897,7 @@ vhost_nvme_admin_passthrough(int vid, void *cmd, void *cqe, void *buf)
|
|||||||
memcpy(buf, &nvme->cdata, sizeof(struct spdk_nvme_ctrlr_data));
|
memcpy(buf, &nvme->cdata, sizeof(struct spdk_nvme_ctrlr_data));
|
||||||
|
|
||||||
} else if (req->cdw10 == SPDK_NVME_IDENTIFY_NS) {
|
} else if (req->cdw10 == SPDK_NVME_IDENTIFY_NS) {
|
||||||
ns = spdk_vhost_nvme_get_ns_from_nsid(nvme, req->nsid);
|
ns = vhost_nvme_get_ns_from_nsid(nvme, req->nsid);
|
||||||
if (!ns) {
|
if (!ns) {
|
||||||
cpl->status.sc = SPDK_NVME_SC_NAMESPACE_ID_UNAVAILABLE;
|
cpl->status.sc = SPDK_NVME_SC_NAMESPACE_ID_UNAVAILABLE;
|
||||||
cpl->status.sct = SPDK_NVME_SCT_COMMAND_SPECIFIC;
|
cpl->status.sct = SPDK_NVME_SCT_COMMAND_SPECIFIC;
|
||||||
@ -955,7 +955,7 @@ vhost_nvme_set_bar_mr(int vid, void *bar_addr, uint64_t bar_size)
|
|||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_dev *nvme;
|
struct spdk_vhost_nvme_dev *nvme;
|
||||||
|
|
||||||
nvme = spdk_vhost_nvme_get_by_name(vid);
|
nvme = vhost_nvme_get_by_name(vid);
|
||||||
if (!nvme) {
|
if (!nvme) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -974,12 +974,12 @@ vhost_nvme_set_cq_call(int vid, uint16_t qid, int fd)
|
|||||||
struct spdk_vhost_nvme_dev *nvme;
|
struct spdk_vhost_nvme_dev *nvme;
|
||||||
struct spdk_vhost_nvme_cq *cq;
|
struct spdk_vhost_nvme_cq *cq;
|
||||||
|
|
||||||
nvme = spdk_vhost_nvme_get_by_name(vid);
|
nvme = vhost_nvme_get_by_name(vid);
|
||||||
if (!nvme) {
|
if (!nvme) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cq = spdk_vhost_nvme_get_cq_from_qid(nvme, qid);
|
cq = vhost_nvme_get_cq_from_qid(nvme, qid);
|
||||||
if (!cq) {
|
if (!cq) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1029,7 +1029,7 @@ alloc_task_pool(struct spdk_vhost_nvme_dev *nvme)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_vhost_nvme_start_cb(struct spdk_vhost_dev *vdev,
|
vhost_nvme_start_cb(struct spdk_vhost_dev *vdev,
|
||||||
struct spdk_vhost_session *vsession, void *unused)
|
struct spdk_vhost_session *vsession, void *unused)
|
||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_dev *nvme = to_nvme_dev(vdev);
|
struct spdk_vhost_nvme_dev *nvme = to_nvme_dev(vdev);
|
||||||
@ -1069,7 +1069,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_vhost_nvme_start(struct spdk_vhost_session *vsession)
|
vhost_nvme_start(struct spdk_vhost_session *vsession)
|
||||||
{
|
{
|
||||||
if (vsession->vdev->active_session_num > 0) {
|
if (vsession->vdev->active_session_num > 0) {
|
||||||
/* We're trying to start a second session */
|
/* We're trying to start a second session */
|
||||||
@ -1077,12 +1077,12 @@ spdk_vhost_nvme_start(struct spdk_vhost_session *vsession)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return vhost_session_send_event(vsession, spdk_vhost_nvme_start_cb,
|
return vhost_session_send_event(vsession, vhost_nvme_start_cb,
|
||||||
3, "start session");
|
3, "start session");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_vhost_nvme_deactive_ns(struct spdk_vhost_nvme_ns *ns)
|
vhost_nvme_deactive_ns(struct spdk_vhost_nvme_ns *ns)
|
||||||
{
|
{
|
||||||
ns->active_ns = 0;
|
ns->active_ns = 0;
|
||||||
spdk_bdev_close(ns->bdev_desc);
|
spdk_bdev_close(ns->bdev_desc);
|
||||||
@ -1098,7 +1098,7 @@ bdev_remove_cb(void *remove_ctx)
|
|||||||
SPDK_NOTICELOG("Removing NS %u, Block Device %s\n",
|
SPDK_NOTICELOG("Removing NS %u, Block Device %s\n",
|
||||||
ns->nsid, spdk_bdev_get_name(ns->bdev));
|
ns->nsid, spdk_bdev_get_name(ns->bdev));
|
||||||
|
|
||||||
spdk_vhost_nvme_deactive_ns(ns);
|
vhost_nvme_deactive_ns(ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1141,7 +1141,7 @@ destroy_device_poller_cb(void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_vhost_nvme_stop_cb(struct spdk_vhost_dev *vdev,
|
vhost_nvme_stop_cb(struct spdk_vhost_dev *vdev,
|
||||||
struct spdk_vhost_session *vsession, void *unused)
|
struct spdk_vhost_session *vsession, void *unused)
|
||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_dev *nvme = to_nvme_dev(vdev);
|
struct spdk_vhost_nvme_dev *nvme = to_nvme_dev(vdev);
|
||||||
@ -1161,14 +1161,14 @@ spdk_vhost_nvme_stop_cb(struct spdk_vhost_dev *vdev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_vhost_nvme_stop(struct spdk_vhost_session *vsession)
|
vhost_nvme_stop(struct spdk_vhost_session *vsession)
|
||||||
{
|
{
|
||||||
return vhost_session_send_event(vsession, spdk_vhost_nvme_stop_cb,
|
return vhost_session_send_event(vsession, vhost_nvme_stop_cb,
|
||||||
3, "start session");
|
3, "start session");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_vhost_nvme_dump_info_json(struct spdk_vhost_dev *vdev, struct spdk_json_write_ctx *w)
|
vhost_nvme_dump_info_json(struct spdk_vhost_dev *vdev, struct spdk_json_write_ctx *w)
|
||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_dev *nvme = to_nvme_dev(vdev);
|
struct spdk_vhost_nvme_dev *nvme = to_nvme_dev(vdev);
|
||||||
struct spdk_vhost_nvme_ns *ns_dev;
|
struct spdk_vhost_nvme_ns *ns_dev;
|
||||||
@ -1196,7 +1196,7 @@ spdk_vhost_nvme_dump_info_json(struct spdk_vhost_dev *vdev, struct spdk_json_wri
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_vhost_nvme_write_config_json(struct spdk_vhost_dev *vdev, struct spdk_json_write_ctx *w)
|
vhost_nvme_write_config_json(struct spdk_vhost_dev *vdev, struct spdk_json_write_ctx *w)
|
||||||
{
|
{
|
||||||
struct spdk_vhost_nvme_dev *nvme = to_nvme_dev(vdev);
|
struct spdk_vhost_nvme_dev *nvme = to_nvme_dev(vdev);
|
||||||
struct spdk_vhost_nvme_ns *ns_dev;
|
struct spdk_vhost_nvme_ns *ns_dev;
|
||||||
@ -1238,15 +1238,15 @@ spdk_vhost_nvme_write_config_json(struct spdk_vhost_dev *vdev, struct spdk_json_
|
|||||||
|
|
||||||
static const struct spdk_vhost_dev_backend spdk_vhost_nvme_device_backend = {
|
static const struct spdk_vhost_dev_backend spdk_vhost_nvme_device_backend = {
|
||||||
.session_ctx_size = 0,
|
.session_ctx_size = 0,
|
||||||
.start_session = spdk_vhost_nvme_start,
|
.start_session = vhost_nvme_start,
|
||||||
.stop_session = spdk_vhost_nvme_stop,
|
.stop_session = vhost_nvme_stop,
|
||||||
.dump_info_json = spdk_vhost_nvme_dump_info_json,
|
.dump_info_json = vhost_nvme_dump_info_json,
|
||||||
.write_config_json = spdk_vhost_nvme_write_config_json,
|
.write_config_json = vhost_nvme_write_config_json,
|
||||||
.remove_device = vhost_nvme_dev_remove,
|
.remove_device = vhost_nvme_dev_remove,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_vhost_nvme_ns_identify_update(struct spdk_vhost_nvme_dev *dev)
|
vhost_nvme_ns_identify_update(struct spdk_vhost_nvme_dev *dev)
|
||||||
{
|
{
|
||||||
struct spdk_nvme_ctrlr_data *cdata = &dev->cdata;
|
struct spdk_nvme_ctrlr_data *cdata = &dev->cdata;
|
||||||
struct spdk_nvme_ns_data *nsdata;
|
struct spdk_nvme_ns_data *nsdata;
|
||||||
@ -1277,7 +1277,7 @@ spdk_vhost_nvme_ns_identify_update(struct spdk_vhost_nvme_dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_vhost_nvme_ctrlr_identify_update(struct spdk_vhost_nvme_dev *dev)
|
vhost_nvme_ctrlr_identify_update(struct spdk_vhost_nvme_dev *dev)
|
||||||
{
|
{
|
||||||
struct spdk_nvme_ctrlr_data *cdata = &dev->cdata;
|
struct spdk_nvme_ctrlr_data *cdata = &dev->cdata;
|
||||||
char sn[20];
|
char sn[20];
|
||||||
@ -1320,7 +1320,7 @@ spdk_vhost_nvme_ctrlr_identify_update(struct spdk_vhost_nvme_dev *dev)
|
|||||||
/* Emulated NVMe controller */
|
/* Emulated NVMe controller */
|
||||||
cdata->oacs.doorbell_buffer_config = 1;
|
cdata->oacs.doorbell_buffer_config = 1;
|
||||||
|
|
||||||
spdk_vhost_nvme_ns_identify_update(dev);
|
vhost_nvme_ns_identify_update(dev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1355,7 +1355,7 @@ vhost_nvme_dev_construct(const char *name, const char *cpumask, uint32_t num_io_
|
|||||||
STAILQ_INIT(&dev->free_tasks);
|
STAILQ_INIT(&dev->free_tasks);
|
||||||
TAILQ_INSERT_TAIL(&g_nvme_ctrlrs, dev, tailq);
|
TAILQ_INSERT_TAIL(&g_nvme_ctrlrs, dev, tailq);
|
||||||
|
|
||||||
spdk_vhost_nvme_ctrlr_identify_update(dev);
|
vhost_nvme_ctrlr_identify_update(dev);
|
||||||
|
|
||||||
SPDK_NOTICELOG("Controller %s: Constructed\n", name);
|
SPDK_NOTICELOG("Controller %s: Constructed\n", name);
|
||||||
spdk_vhost_unlock();
|
spdk_vhost_unlock();
|
||||||
@ -1378,7 +1378,7 @@ vhost_nvme_dev_remove(struct spdk_vhost_dev *vdev)
|
|||||||
for (i = 0; i < nvme->num_ns; i++) {
|
for (i = 0; i < nvme->num_ns; i++) {
|
||||||
ns = &nvme->ns[i];
|
ns = &nvme->ns[i];
|
||||||
if (ns->active_ns) {
|
if (ns->active_ns) {
|
||||||
spdk_vhost_nvme_deactive_ns(ns);
|
vhost_nvme_deactive_ns(ns);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1427,7 +1427,7 @@ vhost_nvme_dev_add_ns(struct spdk_vhost_dev *vdev, const char *bdev_name)
|
|||||||
nvme->ns[nvme->num_ns].nsid = nvme->num_ns + 1;
|
nvme->ns[nvme->num_ns].nsid = nvme->num_ns + 1;
|
||||||
nvme->num_ns++;
|
nvme->num_ns++;
|
||||||
|
|
||||||
spdk_vhost_nvme_ns_identify_update(nvme);
|
vhost_nvme_ns_identify_update(nvme);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user