Commit 180d281c authored by Wojciech Malikowski's avatar Wojciech Malikowski Committed by Tomasz Zawadzki
Browse files

lib/ftl: Drain retry queue before shutdown



Requests that still reside on retry queue should be
submitted to disk before shutdown.

Signed-off-by: default avatarWojciech Malikowski <wojciech.malikowski@intel.com>
Change-Id: Id2d020fcaef6443d01cfd8628686e9b0f34a1cfa
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6771


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent 4642d7b2
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -966,11 +966,18 @@ ftl_wptr_pad_band(struct ftl_wptr *wptr)
	struct spdk_ftl_dev *dev = wptr->dev;
	struct ftl_batch *batch = dev->current_batch;
	struct ftl_io_channel *ioch;
	struct ftl_io *io;
	size_t size, pad_size, blocks_left;

	size = batch != NULL ? batch->num_entries : 0;
	TAILQ_FOREACH(ioch, &dev->ioch_queue, tailq) {
		size += spdk_ring_count(ioch->submit_queue);

		TAILQ_FOREACH(io, &ioch->retry_queue, ioch_entry) {
			if (io->type == FTL_IO_WRITE) {
				size += io->num_blocks - io->pos;
			}
		}
	}

	ioch = ftl_io_channel_get_ctx(ftl_get_io_channel(dev));
@@ -989,11 +996,18 @@ ftl_wptr_process_shutdown(struct ftl_wptr *wptr)
	struct spdk_ftl_dev *dev = wptr->dev;
	struct ftl_batch *batch = dev->current_batch;
	struct ftl_io_channel *ioch;
	struct ftl_io *io;
	size_t size;

	size = batch != NULL ? batch->num_entries : 0;
	TAILQ_FOREACH(ioch, &dev->ioch_queue, tailq) {
		size += spdk_ring_count(ioch->submit_queue);

		TAILQ_FOREACH(io, &ioch->retry_queue, ioch_entry) {
			if (io->type == FTL_IO_WRITE) {
				size += io->num_blocks - io->pos;
			}
		}
	}

	if (size >= dev->xfer_size) {