From 2dab00ee030922261e13b4bb8cfc5abecd6f281e Mon Sep 17 00:00:00 2001 From: Pawel Wodkowski Date: Tue, 8 Aug 2017 20:03:47 +0200 Subject: [PATCH] vhost_scsi: use proper socket id for allocated tasks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I25b65e057cef076be4849ee0242f7979e5e290f7 Signed-off-by: Pawel Wodkowski Reviewed-on: https://review.gerrithub.io/373274 Tested-by: SPDK Automated Test System Reviewed-by: Daniel Verkamp Reviewed-by: Dariusz Stojaczyk Reviewed-by: Paweł Niedźwiecki Reviewed-by: Ben Walker --- lib/vhost/vhost_scsi.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/vhost/vhost_scsi.c b/lib/vhost/vhost_scsi.c index 989f29a61..14c5bff7e 100644 --- a/lib/vhost/vhost_scsi.c +++ b/lib/vhost/vhost_scsi.c @@ -1050,7 +1050,7 @@ alloc_task_pool(struct spdk_vhost_scsi_dev *svdev) { struct spdk_vhost_scsi_task *task; uint32_t task_cnt = 0; - uint32_t ring_size; + uint32_t ring_size, socket_id; uint16_t i; int rc; @@ -1067,15 +1067,16 @@ alloc_task_pool(struct spdk_vhost_scsi_dev *svdev) } ring_size = spdk_align32pow2(task_cnt + 1); - svdev->task_pool = spdk_ring_create(SPDK_RING_TYPE_SP_SC, ring_size, - spdk_env_get_socket_id(svdev->vdev.lcore)); + socket_id = spdk_env_get_socket_id(svdev->vdev.lcore); + + svdev->task_pool = spdk_ring_create(SPDK_RING_TYPE_SP_SC, ring_size, socket_id); if (svdev->task_pool == NULL) { SPDK_ERRLOG("Controller %s: Failed to init vhost scsi task pool\n", svdev->vdev.name); return -1; } for (i = 0; i < task_cnt; ++i) { - task = spdk_dma_zmalloc(sizeof(*task), SPDK_CACHE_LINE_SIZE, NULL); + task = spdk_dma_zmalloc_socket(sizeof(*task), SPDK_CACHE_LINE_SIZE, NULL, socket_id); if (task == NULL) { SPDK_ERRLOG("Controller %s: Failed to allocate task\n", svdev->vdev.name); free_task_pool(svdev); @@ -1084,7 +1085,7 @@ alloc_task_pool(struct spdk_vhost_scsi_dev *svdev) rc = spdk_ring_enqueue(svdev->task_pool, (void **)&task, 1); if (rc != 1) { - SPDK_ERRLOG("Controller %s: Failed to alloc %"PRIu32" vhost scsi tasks\n", svdev->vdev.name, + SPDK_ERRLOG("Controller %s: Failed to enuqueue %"PRIu32" vhost scsi tasks\n", svdev->vdev.name, task_cnt); free_task_pool(svdev); return -1;