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

lib/ftl: Remove IO vector from FTL request



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


Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Reviewed-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent 89d42c0f
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -35,9 +35,8 @@ ftl_band_rq_bdev_write(void *_rq)
	struct spdk_ftl_dev *dev = band->dev;
	int rc;

	rc = spdk_bdev_writev_blocks(dev->base_bdev_desc, dev->base_ioch,
				     rq->io_vec, rq->io_vec_size,
				     rq->io.addr, rq->num_blocks,
	rc = spdk_bdev_write_blocks(dev->base_bdev_desc, dev->base_ioch,
				    rq->io_payload, rq->io.addr, rq->num_blocks,
				    write_rq_end, rq);

	if (spdk_unlikely(rc)) {
+0 −23
Original line number Diff line number Diff line
@@ -193,12 +193,6 @@ struct ftl_rq {
	/* Size of extended metadata size for one entry */
	uint64_t io_md_size;

	/* Size of IO vector array */
	uint64_t io_vec_size;

	/* Array of IO vectors, its size equals to num_blocks */
	struct iovec *io_vec;

	/* Payload for IO */
	void *io_payload;

@@ -344,23 +338,6 @@ ftl_basic_rq_set_owner(struct ftl_basic_rq *brq, void (*cb)(struct ftl_basic_rq
	brq->owner.priv = priv;
}

static inline void
ftl_rq_swap_payload(struct ftl_rq *a, uint32_t aidx,
		    struct ftl_rq *b, uint32_t bidx)
{
	assert(aidx < a->num_blocks);
	assert(bidx < b->num_blocks);

	void *a_payload = a->io_vec[aidx].iov_base;
	void *b_payload = b->io_vec[bidx].iov_base;

	a->io_vec[aidx].iov_base = b_payload;
	a->entries[aidx].io_payload = b_payload;

	b->io_vec[bidx].iov_base = a_payload;
	b->entries[bidx].io_payload = a_payload;
}

static inline struct ftl_rq *
ftl_rq_from_entry(struct ftl_rq_entry *entry)
{
+4 −4
Original line number Diff line number Diff line
@@ -1882,9 +1882,9 @@ read_open_chunk_cb(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
		rq->iter.idx = 0;
		rq->iter.count = len;

		rc = ftl_nv_cache_bdev_readv_blocks_with_md(dev, nv_cache->bdev_desc,
		rc = ftl_nv_cache_bdev_read_blocks_with_md(dev, nv_cache->bdev_desc,
				nv_cache->cache_ioch,
				rq->io_vec, len,
				rq->io_payload,
				rq->io_md,
				cache_offset, len,
				read_open_chunk_cb,
@@ -1934,9 +1934,9 @@ restore_open_chunk(struct ftl_nv_cache_chunk *chunk, struct ftl_basic_rq *parent

	len = spdk_min(dev->xfer_size, chunk->offset + chunk_tail_md_offset(nv_cache) - addr);

	rc = ftl_nv_cache_bdev_readv_blocks_with_md(dev, nv_cache->bdev_desc,
	rc = ftl_nv_cache_bdev_read_blocks_with_md(dev, nv_cache->bdev_desc,
			nv_cache->cache_ioch,
			rq->io_vec, len,
			rq->io_payload,
			rq->io_md,
			addr, len,
			read_open_chunk_cb,
+0 −12
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@ ftl_rq_new(struct spdk_ftl_dev *dev, uint32_t io_md_size)
{
	struct ftl_rq *rq;
	struct ftl_rq_entry *entry;
	struct iovec *io_vec;
	void *io_payload, *io_md = NULL;
	uint64_t i;
	size_t size;
@@ -35,11 +34,6 @@ ftl_rq_new(struct spdk_ftl_dev *dev, uint32_t io_md_size)
	if (!io_payload) {
		goto error;
	}
	rq->io_vec = calloc(num_blocks, sizeof(rq->io_vec[0]));
	if (!rq->io_vec) {
		goto error;
	}
	rq->io_vec_size = num_blocks;

	/* Allocate extended metadata for IO */
	if (io_md_size) {
@@ -54,7 +48,6 @@ ftl_rq_new(struct spdk_ftl_dev *dev, uint32_t io_md_size)
	}

	entry = rq->entries;
	io_vec = rq->io_vec;
	for (i = 0; i < num_blocks; ++i) {
		uint64_t *index = (uint64_t *)&entry->index;
		*index = i;
@@ -68,11 +61,7 @@ ftl_rq_new(struct spdk_ftl_dev *dev, uint32_t io_md_size)
			entry->io_md = io_md;
		}

		io_vec->iov_base = io_payload;
		io_vec->iov_len = FTL_BLOCK_SIZE;

		entry++;
		io_vec++;
		io_payload += FTL_BLOCK_SIZE;
		io_md += io_md_size;
	}
@@ -92,7 +81,6 @@ ftl_rq_del(struct ftl_rq *rq)

	spdk_free(rq->io_payload);
	spdk_free(rq->io_md);
	free(rq->io_vec);

	free(rq);
}