From a4b7f495f24b7bac8ad50e1ca938f62be0f1b6b8 Mon Sep 17 00:00:00 2001 From: Wojciech Malikowski Date: Thu, 6 Feb 2020 11:22:18 -0500 Subject: [PATCH] lib/ftl: Do not put "reloc move" back to move_queue during free Reloc move should not be put back to move queue in ftl_reloc_free_move(). Change-Id: I9c84238b9f716e6e73a251e833f32661d17a7eab Signed-off-by: Wojciech Malikowski Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/624 Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris Reviewed-by: Konrad Sztyber --- lib/ftl/ftl_reloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/ftl/ftl_reloc.c b/lib/ftl/ftl_reloc.c index 33f05e9f4..5583bee94 100644 --- a/lib/ftl/ftl_reloc.c +++ b/lib/ftl/ftl_reloc.c @@ -245,7 +245,6 @@ ftl_reloc_free_move(struct ftl_band_reloc *breloc, struct ftl_reloc_move *move) spdk_dma_free(move->data); memset(move, 0, sizeof(*move)); move->state = FTL_RELOC_STATE_READ; - spdk_ring_enqueue(breloc->move_queue, (void **)&move, 1, NULL); } static void @@ -271,6 +270,7 @@ ftl_reloc_write_cb(struct ftl_io *io, void *arg, int status) } ftl_reloc_free_move(breloc, move); + spdk_ring_enqueue(breloc->move_queue, (void **)&move, 1, NULL); } static void @@ -473,6 +473,7 @@ ftl_reloc_write(struct ftl_band_reloc *breloc, struct ftl_reloc_move *move) FTL_IO_WRITE, io_flags); if (!move->io) { ftl_reloc_free_move(breloc, move); + spdk_ring_enqueue(breloc->move_queue, (void **)&move, 1, NULL); return -ENOMEM; } } @@ -503,6 +504,7 @@ ftl_reloc_read(struct ftl_band_reloc *breloc, struct ftl_reloc_move *move) move->io = ftl_reloc_io_init(breloc, move, ftl_reloc_read_cb, FTL_IO_READ, 0); if (!move->io) { ftl_reloc_free_move(breloc, move); + spdk_ring_enqueue(breloc->move_queue, (void **)&move, 1, NULL); SPDK_ERRLOG("Failed to initialize io for relocation."); return -1; }