Commit cfb5e895 authored by Mateusz Kozlowski's avatar Mateusz Kozlowski Committed by Jim Harris
Browse files

lib/ftl: Add helper loop iterator for FTL request



Signed-off-by: default avatarMariusz Barczak <Mariusz.Barczak@solidigmtechnology.com>
Change-Id: I8857f9b3163533621bcc4ad325866c90cbf59557
Signed-off-by: default avatarMateusz Kozlowski <mateusz.kozlowski@solidigm.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/18542


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
parent 17fdb235
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -291,6 +291,23 @@ struct ftl_basic_rq {
	} io;
};

static inline bool
ftl_rq_entry_loop_assert(struct ftl_rq *rq, struct ftl_rq_entry *entry, uint32_t count)
{
	assert(entry >= rq->entries);
	assert(((uintptr_t)entry - (uintptr_t)rq->entries) % sizeof(*entry) == 0);
	assert(count <= rq->num_blocks);

	return true;
}

#define FTL_RQ_ENTRY_LOOP_FROM(rq, from, entry, count) \
	for ((entry) = (from); \
		(entry) < (&(rq)->entries[count]) && ftl_rq_entry_loop_assert(rq, entry, count); (entry)++)

#define FTL_RQ_ENTRY_LOOP(rq, entry, count) \
	FTL_RQ_ENTRY_LOOP_FROM(rq, (rq)->entries, entry, count)

void ftl_io_fail(struct ftl_io *io, int status);
void ftl_io_clear(struct ftl_io *io);
void ftl_io_inc_req(struct ftl_io *io);