From 1442b5f28af7662d028085f5b9b66dd2b88b5bdc Mon Sep 17 00:00:00 2001 From: Wojciech Malikowski Date: Thu, 21 Feb 2019 10:06:58 -0500 Subject: [PATCH] lib/ftl: Fix size of write buffer submission queue SPDK ring size used for write buffer submission queue must be increased if required number of batches is a power of two. Change-Id: I9b9f885064cf6f0f5fe94b0ed4f9d49a4e5c0cd0 Signed-off-by: Wojciech Malikowski Reviewed-on: https://review.gerrithub.io/c/445721 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- lib/ftl/ftl_rwb.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/ftl/ftl_rwb.c b/lib/ftl/ftl_rwb.c index 5ef26a11a..e8979f159 100644 --- a/lib/ftl/ftl_rwb.c +++ b/lib/ftl/ftl_rwb.c @@ -178,7 +178,7 @@ ftl_rwb_init(const struct spdk_ftl_conf *conf, size_t xfer_size, size_t md_size) { struct ftl_rwb *rwb; struct ftl_rwb_batch *batch; - size_t ring_size, i; + size_t i; rwb = calloc(1, sizeof(*rwb)); if (!rwb) { @@ -191,14 +191,13 @@ ftl_rwb_init(const struct spdk_ftl_conf *conf, size_t xfer_size, size_t md_size) rwb->md_size = md_size; rwb->num_batches = conf->rwb_size / (FTL_BLOCK_SIZE * xfer_size); - ring_size = spdk_align32pow2(rwb->num_batches); - rwb->batches = calloc(rwb->num_batches, sizeof(*rwb->batches)); if (!rwb->batches) { goto error; } - rwb->submit_queue = spdk_ring_create(SPDK_RING_TYPE_MP_SC, ring_size, + rwb->submit_queue = spdk_ring_create(SPDK_RING_TYPE_MP_SC, + spdk_align32pow2(rwb->num_batches + 1), SPDK_ENV_SOCKET_ID_ANY); if (!rwb->submit_queue) { SPDK_ERRLOG("Failed to create submission queue\n");