nvme: apply nvme_pcie_poll_group_get_stats
to vfio-user
Both PCIE and VFIO-USER can use the same APIs to get IO queue pair statistic data, so merge them here. Change-Id: Iadf9ead2bd5abaf11d2ef5d1884acb67369f85bb Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13538 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
parent
806744b7c8
commit
c88345ab3d
@ -1048,39 +1048,6 @@ spdk_nvme_pcie_set_hotplug_filter(spdk_nvme_pcie_hotplug_filter_cb filter_cb)
|
||||
g_hotplug_filter_cb = filter_cb;
|
||||
}
|
||||
|
||||
static int
|
||||
nvme_pcie_poll_group_get_stats(struct spdk_nvme_transport_poll_group *tgroup,
|
||||
struct spdk_nvme_transport_poll_group_stat **_stats)
|
||||
{
|
||||
struct nvme_pcie_poll_group *group;
|
||||
struct spdk_nvme_transport_poll_group_stat *stats;
|
||||
|
||||
if (tgroup == NULL || _stats == NULL) {
|
||||
SPDK_ERRLOG("Invalid stats or group pointer\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
group = SPDK_CONTAINEROF(tgroup, struct nvme_pcie_poll_group, group);
|
||||
stats = calloc(1, sizeof(*stats));
|
||||
if (!stats) {
|
||||
SPDK_ERRLOG("Can't allocate memory for RDMA stats\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
stats->trtype = SPDK_NVME_TRANSPORT_PCIE;
|
||||
memcpy(&stats->pcie, &group->stats, sizeof(group->stats));
|
||||
|
||||
*_stats = stats;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
nvme_pcie_poll_group_free_stats(struct spdk_nvme_transport_poll_group *tgroup,
|
||||
struct spdk_nvme_transport_poll_group_stat *stats)
|
||||
{
|
||||
free(stats);
|
||||
}
|
||||
|
||||
static struct spdk_pci_id nvme_pci_driver_id[] = {
|
||||
{
|
||||
.class_id = SPDK_PCI_CLASS_NVME,
|
||||
|
@ -1777,6 +1777,39 @@ nvme_pcie_poll_group_destroy(struct spdk_nvme_transport_poll_group *tgroup)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
nvme_pcie_poll_group_get_stats(struct spdk_nvme_transport_poll_group *tgroup,
|
||||
struct spdk_nvme_transport_poll_group_stat **_stats)
|
||||
{
|
||||
struct nvme_pcie_poll_group *group;
|
||||
struct spdk_nvme_transport_poll_group_stat *stats;
|
||||
|
||||
if (tgroup == NULL || _stats == NULL) {
|
||||
SPDK_ERRLOG("Invalid stats or group pointer\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
group = SPDK_CONTAINEROF(tgroup, struct nvme_pcie_poll_group, group);
|
||||
stats = calloc(1, sizeof(*stats));
|
||||
if (!stats) {
|
||||
SPDK_ERRLOG("Can't allocate memory for RDMA stats\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
stats->trtype = SPDK_NVME_TRANSPORT_PCIE;
|
||||
memcpy(&stats->pcie, &group->stats, sizeof(group->stats));
|
||||
|
||||
*_stats = stats;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
nvme_pcie_poll_group_free_stats(struct spdk_nvme_transport_poll_group *tgroup,
|
||||
struct spdk_nvme_transport_poll_group_stat *stats)
|
||||
{
|
||||
free(stats);
|
||||
}
|
||||
|
||||
SPDK_TRACE_REGISTER_FN(nvme_pcie, "nvme_pcie", TRACE_GROUP_NVME_PCIE)
|
||||
{
|
||||
struct spdk_trace_tpoint_opts opts[] = {
|
||||
|
@ -329,6 +329,10 @@ struct spdk_nvme_qpair *nvme_pcie_ctrlr_create_io_qpair(struct spdk_nvme_ctrlr *
|
||||
const struct spdk_nvme_io_qpair_opts *opts);
|
||||
int nvme_pcie_ctrlr_delete_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair);
|
||||
int nvme_pcie_qpair_submit_request(struct spdk_nvme_qpair *qpair, struct nvme_request *req);
|
||||
int nvme_pcie_poll_group_get_stats(struct spdk_nvme_transport_poll_group *tgroup,
|
||||
struct spdk_nvme_transport_poll_group_stat **_stats);
|
||||
void nvme_pcie_poll_group_free_stats(struct spdk_nvme_transport_poll_group *tgroup,
|
||||
struct spdk_nvme_transport_poll_group_stat *stats);
|
||||
|
||||
struct spdk_nvme_transport_poll_group *nvme_pcie_poll_group_create(void);
|
||||
int nvme_pcie_poll_group_connect_qpair(struct spdk_nvme_qpair *qpair);
|
||||
|
@ -344,6 +344,8 @@ const struct spdk_nvme_transport_ops vfio_ops = {
|
||||
.poll_group_remove = nvme_pcie_poll_group_remove,
|
||||
.poll_group_process_completions = nvme_pcie_poll_group_process_completions,
|
||||
.poll_group_destroy = nvme_pcie_poll_group_destroy,
|
||||
.poll_group_get_stats = nvme_pcie_poll_group_get_stats,
|
||||
.poll_group_free_stats = nvme_pcie_poll_group_free_stats
|
||||
};
|
||||
|
||||
SPDK_NVME_TRANSPORT_REGISTER(vfio, &vfio_ops);
|
||||
|
@ -1160,6 +1160,7 @@ rpc_bdev_nvme_stats_per_channel(struct spdk_io_channel_iter *i)
|
||||
rpc_bdev_nvme_rdma_stats(ctx->w, tr_stat);
|
||||
break;
|
||||
case SPDK_NVME_TRANSPORT_PCIE:
|
||||
case SPDK_NVME_TRANSPORT_VFIOUSER:
|
||||
rpc_bdev_nvme_pcie_stats(ctx->w, tr_stat);
|
||||
break;
|
||||
case SPDK_NVME_TRANSPORT_TCP:
|
||||
|
Loading…
Reference in New Issue
Block a user