From dcb7db965d425996d17cba3e62c0b80cd587c566 Mon Sep 17 00:00:00 2001 From: Dariusz Stojaczyk Date: Wed, 20 Sep 2017 15:10:17 +0200 Subject: [PATCH] bdev: unify all direct bdev_io I/O types Since all direct bdev_io types have the same layout, there is no need to keep them differentiated. Change-Id: If8bb85e43c9922c0ebfc39837e3a45006e508b56 Signed-off-by: Dariusz Stojaczyk Reviewed-on: https://review.gerrithub.io/377686 Reviewed-by: Daniel Verkamp Tested-by: SPDK Automated Test System --- include/spdk_internal/bdev.h | 52 +--------------- lib/bdev/aio/bdev_aio.c | 20 +++---- lib/bdev/bdev.c | 108 +++++++++++++++++----------------- lib/bdev/lvol/vbdev_lvol.c | 13 ++-- lib/bdev/malloc/bdev_malloc.c | 38 ++++++------ lib/bdev/null/bdev_null.c | 8 +-- lib/bdev/nvme/bdev_nvme.c | 28 ++++----- lib/bdev/rbd/bdev_rbd.c | 22 +++---- lib/bdev/virtio/bdev_virtio.c | 24 ++++---- 9 files changed, 133 insertions(+), 180 deletions(-) diff --git a/include/spdk_internal/bdev.h b/include/spdk_internal/bdev.h index 10f9b8444..64ec21284 100644 --- a/include/spdk_internal/bdev.h +++ b/include/spdk_internal/bdev.h @@ -273,7 +273,7 @@ struct spdk_bdev_io { union { struct { - /** For basic read case, use our own iovec element. */ + /** For basic IO case, use our own iovec element. */ struct iovec iov; /** For SG buffer cases, array of iovecs to transfer. */ @@ -287,55 +287,7 @@ struct spdk_bdev_io { /** Starting offset (in blocks) of the bdev for this I/O. */ uint64_t offset_blocks; - } read; - struct { - /** For basic write case, use our own iovec element */ - struct iovec iov; - - /** For SG buffer cases, array of iovecs to transfer. */ - struct iovec *iovs; - - /** For SG buffer cases, number of iovecs in iovec array. */ - int iovcnt; - - /** Total size of data to be transferred. */ - uint64_t num_blocks; - - /** Starting offset (in blocks) of the bdev for this I/O. */ - uint64_t offset_blocks; - } write; - struct { - /** For basic write case, use our own iovec element */ - struct iovec iov; - - /** For SG buffer cases, array of iovecs to transfer. */ - struct iovec *iovs; - - /** For SG buffer cases, number of iovecs in iovec array. */ - int iovcnt; - - /** Total size of region to be unmapped. */ - uint64_t num_blocks; - - /** Starting offset (in blocks) of the bdev for this I/O. */ - uint64_t offset_blocks; - } unmap; - struct { - /** For basic write case, use our own iovec element */ - struct iovec iov; - - /** For SG buffer cases, array of iovecs to transfer. */ - struct iovec *iovs; - - /** For SG buffer cases, number of iovecs in iovec array. */ - int iovcnt; - - /** Represents the number of blocks to be flushed, starting at offset_blocks. */ - uint64_t num_blocks; - - /** Represents starting offset in blocks of the range to be flushed. */ - uint64_t offset_blocks; - } flush; + } bdev; struct { /* The NVMe command to execute */ struct spdk_nvme_cmd cmd; diff --git a/lib/bdev/aio/bdev_aio.c b/lib/bdev/aio/bdev_aio.c index 7cec7aa8b..e9b8d93d0 100644 --- a/lib/bdev/aio/bdev_aio.c +++ b/lib/bdev/aio/bdev_aio.c @@ -234,10 +234,10 @@ static void bdev_aio_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io bdev_aio_readv((struct file_disk *)bdev_io->bdev->ctxt, ch, (struct bdev_aio_task *)bdev_io->driver_ctx, - bdev_io->u.read.iovs, - bdev_io->u.read.iovcnt, - bdev_io->u.read.num_blocks * bdev_io->bdev->blocklen, - bdev_io->u.read.offset_blocks * bdev_io->bdev->blocklen); + bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, + bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen, + bdev_io->u.bdev.offset_blocks * bdev_io->bdev->blocklen); } static int _bdev_aio_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) @@ -251,16 +251,16 @@ static int _bdev_aio_submit_request(struct spdk_io_channel *ch, struct spdk_bdev bdev_aio_writev((struct file_disk *)bdev_io->bdev->ctxt, ch, (struct bdev_aio_task *)bdev_io->driver_ctx, - bdev_io->u.write.iovs, - bdev_io->u.write.iovcnt, - bdev_io->u.write.num_blocks * bdev_io->bdev->blocklen, - bdev_io->u.write.offset_blocks * bdev_io->bdev->blocklen); + bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, + bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen, + bdev_io->u.bdev.offset_blocks * bdev_io->bdev->blocklen); return 0; case SPDK_BDEV_IO_TYPE_FLUSH: bdev_aio_flush((struct file_disk *)bdev_io->bdev->ctxt, (struct bdev_aio_task *)bdev_io->driver_ctx, - bdev_io->u.flush.offset_blocks * bdev_io->bdev->blocklen, - bdev_io->u.flush.num_blocks * bdev_io->bdev->blocklen); + bdev_io->u.bdev.offset_blocks * bdev_io->bdev->blocklen, + bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen); return 0; case SPDK_BDEV_IO_TYPE_RESET: diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 2b696fedc..1e202eda1 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -222,11 +222,11 @@ spdk_bdev_io_set_buf(struct spdk_bdev_io *bdev_io, void *buf) { assert(bdev_io->get_buf_cb != NULL); assert(buf != NULL); - assert(bdev_io->u.read.iovs != NULL); + assert(bdev_io->u.bdev.iovs != NULL); bdev_io->buf = buf; - bdev_io->u.read.iovs[0].iov_base = (void *)((unsigned long)((char *)buf + 512) & ~511UL); - bdev_io->u.read.iovs[0].iov_len = bdev_io->u.read.num_blocks * bdev_io->bdev->blocklen; + bdev_io->u.bdev.iovs[0].iov_base = (void *)((unsigned long)((char *)buf + 512) & ~511UL); + bdev_io->u.bdev.iovs[0].iov_len = bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen; bdev_io->get_buf_cb(bdev_io->ch->channel, bdev_io); } @@ -240,9 +240,9 @@ spdk_bdev_io_put_buf(struct spdk_bdev_io *bdev_io) uint64_t length; struct spdk_bdev_mgmt_channel *ch; - assert(bdev_io->u.read.iovcnt == 1); + assert(bdev_io->u.bdev.iovcnt == 1); - length = bdev_io->u.read.num_blocks * bdev_io->bdev->blocklen; + length = bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen; buf = bdev_io->buf; ch = spdk_io_channel_get_ctx(bdev_io->ch->mgmt_channel); @@ -267,16 +267,16 @@ spdk_bdev_io_put_buf(struct spdk_bdev_io *bdev_io) void spdk_bdev_io_get_buf(struct spdk_bdev_io *bdev_io, spdk_bdev_io_get_buf_cb cb) { - uint64_t len = bdev_io->u.read.num_blocks * bdev_io->bdev->blocklen; + uint64_t len = bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen; struct spdk_mempool *pool; need_buf_tailq_t *tailq; void *buf = NULL; struct spdk_bdev_mgmt_channel *ch; assert(cb != NULL); - assert(bdev_io->u.read.iovs != NULL); + assert(bdev_io->u.bdev.iovs != NULL); - if (spdk_unlikely(bdev_io->u.read.iovs[0].iov_base != NULL)) { + if (spdk_unlikely(bdev_io->u.bdev.iovs[0].iov_base != NULL)) { /* Buffer already present */ cb(bdev_io->ch->channel, bdev_io); return; @@ -826,12 +826,12 @@ spdk_bdev_read_blocks(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch, bdev_io->ch = channel; bdev_io->type = SPDK_BDEV_IO_TYPE_READ; - bdev_io->u.read.iov.iov_base = buf; - bdev_io->u.read.iov.iov_len = num_blocks * bdev->blocklen; - bdev_io->u.read.iovs = &bdev_io->u.read.iov; - bdev_io->u.read.iovcnt = 1; - bdev_io->u.read.num_blocks = num_blocks; - bdev_io->u.read.offset_blocks = offset_blocks; + bdev_io->u.bdev.iov.iov_base = buf; + bdev_io->u.bdev.iov.iov_len = num_blocks * bdev->blocklen; + bdev_io->u.bdev.iovs = &bdev_io->u.bdev.iov; + bdev_io->u.bdev.iovcnt = 1; + bdev_io->u.bdev.num_blocks = num_blocks; + bdev_io->u.bdev.offset_blocks = offset_blocks; spdk_bdev_io_init(bdev_io, bdev, cb_arg, cb); spdk_bdev_io_submit(bdev_io); @@ -874,10 +874,10 @@ int spdk_bdev_readv_blocks(struct spdk_bdev_desc *desc, struct spdk_io_channel * bdev_io->ch = channel; bdev_io->type = SPDK_BDEV_IO_TYPE_READ; - bdev_io->u.read.iovs = iov; - bdev_io->u.read.iovcnt = iovcnt; - bdev_io->u.read.num_blocks = num_blocks; - bdev_io->u.read.offset_blocks = offset_blocks; + bdev_io->u.bdev.iovs = iov; + bdev_io->u.bdev.iovcnt = iovcnt; + bdev_io->u.bdev.num_blocks = num_blocks; + bdev_io->u.bdev.offset_blocks = offset_blocks; spdk_bdev_io_init(bdev_io, bdev, cb_arg, cb); spdk_bdev_io_submit(bdev_io); @@ -923,12 +923,12 @@ spdk_bdev_write_blocks(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch, bdev_io->ch = channel; bdev_io->type = SPDK_BDEV_IO_TYPE_WRITE; - bdev_io->u.write.iov.iov_base = buf; - bdev_io->u.write.iov.iov_len = num_blocks * bdev->blocklen; - bdev_io->u.write.iovs = &bdev_io->u.write.iov; - bdev_io->u.write.iovcnt = 1; - bdev_io->u.write.num_blocks = num_blocks; - bdev_io->u.write.offset_blocks = offset_blocks; + bdev_io->u.bdev.iov.iov_base = buf; + bdev_io->u.bdev.iov.iov_len = num_blocks * bdev->blocklen; + bdev_io->u.bdev.iovs = &bdev_io->u.bdev.iov; + bdev_io->u.bdev.iovcnt = 1; + bdev_io->u.bdev.num_blocks = num_blocks; + bdev_io->u.bdev.offset_blocks = offset_blocks; spdk_bdev_io_init(bdev_io, bdev, cb_arg, cb); spdk_bdev_io_submit(bdev_io); @@ -976,10 +976,10 @@ spdk_bdev_writev_blocks(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch, bdev_io->ch = channel; bdev_io->type = SPDK_BDEV_IO_TYPE_WRITE; - bdev_io->u.write.iovs = iov; - bdev_io->u.write.iovcnt = iovcnt; - bdev_io->u.write.num_blocks = num_blocks; - bdev_io->u.write.offset_blocks = offset_blocks; + bdev_io->u.bdev.iovs = iov; + bdev_io->u.bdev.iovcnt = iovcnt; + bdev_io->u.bdev.num_blocks = num_blocks; + bdev_io->u.bdev.offset_blocks = offset_blocks; spdk_bdev_io_init(bdev_io, bdev, cb_arg, cb); spdk_bdev_io_submit(bdev_io); @@ -1020,8 +1020,8 @@ spdk_bdev_write_zeroes_blocks(struct spdk_bdev_desc *desc, struct spdk_io_channe } bdev_io->ch = channel; - bdev_io->u.write.num_blocks = num_blocks; - bdev_io->u.write.offset_blocks = offset_blocks; + bdev_io->u.bdev.num_blocks = num_blocks; + bdev_io->u.bdev.offset_blocks = offset_blocks; bdev_io->type = SPDK_BDEV_IO_TYPE_WRITE_ZEROES; spdk_bdev_io_init(bdev_io, bdev, cb_arg, cb); @@ -1074,8 +1074,8 @@ spdk_bdev_unmap_blocks(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch, bdev_io->ch = channel; bdev_io->type = SPDK_BDEV_IO_TYPE_UNMAP; - bdev_io->u.unmap.offset_blocks = offset_blocks; - bdev_io->u.unmap.num_blocks = num_blocks; + bdev_io->u.bdev.offset_blocks = offset_blocks; + bdev_io->u.bdev.num_blocks = num_blocks; spdk_bdev_io_init(bdev_io, bdev, cb_arg, cb); spdk_bdev_io_submit(bdev_io); @@ -1121,8 +1121,8 @@ spdk_bdev_flush_blocks(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch, bdev_io->ch = channel; bdev_io->type = SPDK_BDEV_IO_TYPE_FLUSH; - bdev_io->u.flush.offset_blocks = offset_blocks; - bdev_io->u.flush.num_blocks = num_blocks; + bdev_io->u.bdev.offset_blocks = offset_blocks; + bdev_io->u.bdev.num_blocks = num_blocks; spdk_bdev_io_init(bdev_io, bdev, cb_arg, cb); spdk_bdev_io_submit(bdev_io); @@ -1343,11 +1343,11 @@ spdk_bdev_io_complete(struct spdk_bdev_io *bdev_io, enum spdk_bdev_io_status sta if (status == SPDK_BDEV_IO_STATUS_SUCCESS) { switch (bdev_io->type) { case SPDK_BDEV_IO_TYPE_READ: - bdev_io->ch->stat.bytes_read += bdev_io->u.read.num_blocks * bdev_io->bdev->blocklen; + bdev_io->ch->stat.bytes_read += bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen; bdev_io->ch->stat.num_read_ops++; break; case SPDK_BDEV_IO_TYPE_WRITE: - bdev_io->ch->stat.bytes_written += bdev_io->u.write.num_blocks * bdev_io->bdev->blocklen; + bdev_io->ch->stat.bytes_written += bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen; bdev_io->ch->stat.num_write_ops++; break; default: @@ -1692,12 +1692,12 @@ spdk_bdev_io_get_iovec(struct spdk_bdev_io *bdev_io, struct iovec **iovp, int *i switch (bdev_io->type) { case SPDK_BDEV_IO_TYPE_READ: - iovs = bdev_io->u.read.iovs; - iovcnt = bdev_io->u.read.iovcnt; + iovs = bdev_io->u.bdev.iovs; + iovcnt = bdev_io->u.bdev.iovcnt; break; case SPDK_BDEV_IO_TYPE_WRITE: - iovs = bdev_io->u.write.iovs; - iovcnt = bdev_io->u.write.iovcnt; + iovs = bdev_io->u.bdev.iovs; + iovcnt = bdev_io->u.bdev.iovcnt; break; default: iovs = NULL; @@ -1817,32 +1817,32 @@ spdk_bdev_part_submit_request(struct spdk_bdev_part_channel *ch, struct spdk_bde /* Modify the I/O to adjust for the offset within the base bdev. */ switch (bdev_io->type) { case SPDK_BDEV_IO_TYPE_READ: - offset = bdev_io->u.read.offset_blocks + part->offset_blocks; - rc = spdk_bdev_readv_blocks(base_desc, base_ch, bdev_io->u.read.iovs, - bdev_io->u.read.iovcnt, offset, - bdev_io->u.read.num_blocks, spdk_bdev_part_complete_io, + offset = bdev_io->u.bdev.offset_blocks + part->offset_blocks; + rc = spdk_bdev_readv_blocks(base_desc, base_ch, bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, offset, + bdev_io->u.bdev.num_blocks, spdk_bdev_part_complete_io, bdev_io); break; case SPDK_BDEV_IO_TYPE_WRITE: - offset = bdev_io->u.write.offset_blocks + part->offset_blocks; - rc = spdk_bdev_writev_blocks(base_desc, base_ch, bdev_io->u.write.iovs, - bdev_io->u.write.iovcnt, offset, - bdev_io->u.write.num_blocks, spdk_bdev_part_complete_io, + offset = bdev_io->u.bdev.offset_blocks + part->offset_blocks; + rc = spdk_bdev_writev_blocks(base_desc, base_ch, bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, offset, + bdev_io->u.bdev.num_blocks, spdk_bdev_part_complete_io, bdev_io); break; case SPDK_BDEV_IO_TYPE_WRITE_ZEROES: - offset = bdev_io->u.write.offset_blocks + part->offset_blocks; - rc = spdk_bdev_write_zeroes_blocks(base_desc, base_ch, offset, bdev_io->u.write.num_blocks, + offset = bdev_io->u.bdev.offset_blocks + part->offset_blocks; + rc = spdk_bdev_write_zeroes_blocks(base_desc, base_ch, offset, bdev_io->u.bdev.num_blocks, spdk_bdev_part_complete_io, bdev_io); break; case SPDK_BDEV_IO_TYPE_UNMAP: - offset = bdev_io->u.unmap.offset_blocks + part->offset_blocks; - rc = spdk_bdev_unmap_blocks(base_desc, base_ch, offset, bdev_io->u.unmap.num_blocks, + offset = bdev_io->u.bdev.offset_blocks + part->offset_blocks; + rc = spdk_bdev_unmap_blocks(base_desc, base_ch, offset, bdev_io->u.bdev.num_blocks, spdk_bdev_part_complete_io, bdev_io); break; case SPDK_BDEV_IO_TYPE_FLUSH: - offset = bdev_io->u.flush.offset_blocks + part->offset_blocks; - rc = spdk_bdev_flush_blocks(base_desc, base_ch, offset, bdev_io->u.flush.num_blocks, + offset = bdev_io->u.bdev.offset_blocks + part->offset_blocks; + rc = spdk_bdev_flush_blocks(base_desc, base_ch, offset, bdev_io->u.bdev.num_blocks, spdk_bdev_part_complete_io, bdev_io); break; case SPDK_BDEV_IO_TYPE_RESET: diff --git a/lib/bdev/lvol/vbdev_lvol.c b/lib/bdev/lvol/vbdev_lvol.c index 72058a1d5..3fa256359 100644 --- a/lib/bdev/lvol/vbdev_lvol.c +++ b/lib/bdev/lvol/vbdev_lvol.c @@ -316,15 +316,16 @@ lvol_read(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) struct spdk_blob *blob = lvol->blob; struct lvol_task *task = (struct lvol_task *)bdev_io->driver_ctx; - start_page = bdev_io->u.read.offset_blocks; - num_pages = bdev_io->u.read.num_blocks; + start_page = bdev_io->u.bdev.offset_blocks; + num_pages = bdev_io->u.bdev.num_blocks; task->status = SPDK_BDEV_IO_STATUS_SUCCESS; SPDK_INFOLOG(SPDK_TRACE_VBDEV_LVOL, "Vbdev doing read at offset %" PRIu64 " using %" PRIu64 " pages on device %s\n", start_page, num_pages, bdev_io->bdev->name); - spdk_bs_io_readv_blob(blob, ch, bdev_io->u.read.iovs, bdev_io->u.read.iovcnt, start_page, num_pages, + spdk_bs_io_readv_blob(blob, ch, bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt, start_page, + num_pages, lvol_op_comp, task); } @@ -335,15 +336,15 @@ lvol_write(struct spdk_lvol *lvol, struct spdk_io_channel *ch, struct spdk_bdev_ struct spdk_blob *blob = lvol->blob; struct lvol_task *task = (struct lvol_task *)bdev_io->driver_ctx; - start_page = bdev_io->u.write.offset_blocks; - num_pages = bdev_io->u.write.num_blocks; + start_page = bdev_io->u.bdev.offset_blocks; + num_pages = bdev_io->u.bdev.num_blocks; task->status = SPDK_BDEV_IO_STATUS_SUCCESS; SPDK_INFOLOG(SPDK_TRACE_VBDEV_LVOL, "Vbdev doing write at offset %" PRIu64 " using %" PRIu64 " pages on device %s\n", start_page, num_pages, bdev_io->bdev->name); - spdk_bs_io_writev_blob(blob, ch, bdev_io->u.write.iovs, bdev_io->u.write.iovcnt, start_page, + spdk_bs_io_writev_blob(blob, ch, bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt, start_page, num_pages, lvol_op_comp, task); } diff --git a/lib/bdev/malloc/bdev_malloc.c b/lib/bdev/malloc/bdev_malloc.c index ed4274d4b..51dc3642d 100644 --- a/lib/bdev/malloc/bdev_malloc.c +++ b/lib/bdev/malloc/bdev_malloc.c @@ -265,12 +265,12 @@ static int _bdev_malloc_submit_request(struct spdk_io_channel *ch, struct spdk_b switch (bdev_io->type) { case SPDK_BDEV_IO_TYPE_READ: - if (bdev_io->u.read.iovs[0].iov_base == NULL) { - assert(bdev_io->u.read.iovcnt == 1); - bdev_io->u.read.iovs[0].iov_base = + if (bdev_io->u.bdev.iovs[0].iov_base == NULL) { + assert(bdev_io->u.bdev.iovcnt == 1); + bdev_io->u.bdev.iovs[0].iov_base = ((struct malloc_disk *)bdev_io->bdev->ctxt)->malloc_buf + - bdev_io->u.read.offset_blocks * block_size; - bdev_io->u.read.iovs[0].iov_len = bdev_io->u.read.num_blocks * block_size; + bdev_io->u.bdev.offset_blocks * block_size; + bdev_io->u.bdev.iovs[0].iov_len = bdev_io->u.bdev.num_blocks * block_size; spdk_bdev_io_complete(spdk_bdev_io_from_ctx(bdev_io->driver_ctx), SPDK_BDEV_IO_STATUS_SUCCESS); return 0; @@ -279,20 +279,20 @@ static int _bdev_malloc_submit_request(struct spdk_io_channel *ch, struct spdk_b bdev_malloc_readv((struct malloc_disk *)bdev_io->bdev->ctxt, ch, (struct malloc_task *)bdev_io->driver_ctx, - bdev_io->u.read.iovs, - bdev_io->u.read.iovcnt, - bdev_io->u.read.num_blocks * block_size, - bdev_io->u.read.offset_blocks * block_size); + bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, + bdev_io->u.bdev.num_blocks * block_size, + bdev_io->u.bdev.offset_blocks * block_size); return 0; case SPDK_BDEV_IO_TYPE_WRITE: bdev_malloc_writev((struct malloc_disk *)bdev_io->bdev->ctxt, ch, (struct malloc_task *)bdev_io->driver_ctx, - bdev_io->u.write.iovs, - bdev_io->u.write.iovcnt, - bdev_io->u.write.num_blocks * block_size, - bdev_io->u.write.offset_blocks * block_size); + bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, + bdev_io->u.bdev.num_blocks * block_size, + bdev_io->u.bdev.offset_blocks * block_size); return 0; case SPDK_BDEV_IO_TYPE_RESET: @@ -302,23 +302,23 @@ static int _bdev_malloc_submit_request(struct spdk_io_channel *ch, struct spdk_b case SPDK_BDEV_IO_TYPE_FLUSH: return bdev_malloc_flush((struct malloc_disk *)bdev_io->bdev->ctxt, (struct malloc_task *)bdev_io->driver_ctx, - bdev_io->u.flush.offset_blocks * block_size, - bdev_io->u.flush.num_blocks * block_size); + bdev_io->u.bdev.offset_blocks * block_size, + bdev_io->u.bdev.num_blocks * block_size); case SPDK_BDEV_IO_TYPE_UNMAP: return bdev_malloc_unmap((struct malloc_disk *)bdev_io->bdev->ctxt, ch, (struct malloc_task *)bdev_io->driver_ctx, - bdev_io->u.unmap.offset_blocks * block_size, - bdev_io->u.unmap.num_blocks * block_size); + bdev_io->u.bdev.offset_blocks * block_size, + bdev_io->u.bdev.num_blocks * block_size); case SPDK_BDEV_IO_TYPE_WRITE_ZEROES: /* bdev_malloc_unmap is implemented with a call to mem_cpy_fill which zeroes out all of the requested bytes. */ return bdev_malloc_unmap((struct malloc_disk *)bdev_io->bdev->ctxt, ch, (struct malloc_task *)bdev_io->driver_ctx, - bdev_io->u.write.offset_blocks * block_size, - bdev_io->u.write.num_blocks * block_size); + bdev_io->u.bdev.offset_blocks * block_size, + bdev_io->u.bdev.num_blocks * block_size); default: return -1; diff --git a/lib/bdev/null/bdev_null.c b/lib/bdev/null/bdev_null.c index e7e641d7d..f5366a992 100644 --- a/lib/bdev/null/bdev_null.c +++ b/lib/bdev/null/bdev_null.c @@ -76,10 +76,10 @@ bdev_null_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_i { switch (bdev_io->type) { case SPDK_BDEV_IO_TYPE_READ: - if (bdev_io->u.read.iovs[0].iov_base == NULL) { - assert(bdev_io->u.read.iovcnt == 1); - bdev_io->u.read.iovs[0].iov_base = g_null_read_buf; - bdev_io->u.read.iovs[0].iov_len = bdev_io->u.read.num_blocks * bdev_io->bdev->blocklen; + if (bdev_io->u.bdev.iovs[0].iov_base == NULL) { + assert(bdev_io->u.bdev.iovcnt == 1); + bdev_io->u.bdev.iovs[0].iov_base = g_null_read_buf; + bdev_io->u.bdev.iovs[0].iov_len = bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen; } spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_SUCCESS); break; diff --git a/lib/bdev/nvme/bdev_nvme.c b/lib/bdev/nvme/bdev_nvme.c index dae299cef..20bf2db36 100644 --- a/lib/bdev/nvme/bdev_nvme.c +++ b/lib/bdev/nvme/bdev_nvme.c @@ -340,10 +340,10 @@ bdev_nvme_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) ret = bdev_nvme_readv((struct nvme_bdev *)bdev_io->bdev->ctxt, ch, (struct nvme_bdev_io *)bdev_io->driver_ctx, - bdev_io->u.read.iovs, - bdev_io->u.read.iovcnt, - bdev_io->u.read.num_blocks, - bdev_io->u.read.offset_blocks); + bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, + bdev_io->u.bdev.num_blocks, + bdev_io->u.bdev.offset_blocks); if (ret < 0) { spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); @@ -368,24 +368,24 @@ _bdev_nvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_ return bdev_nvme_writev((struct nvme_bdev *)bdev_io->bdev->ctxt, ch, (struct nvme_bdev_io *)bdev_io->driver_ctx, - bdev_io->u.write.iovs, - bdev_io->u.write.iovcnt, - bdev_io->u.write.num_blocks, - bdev_io->u.write.offset_blocks); + bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, + bdev_io->u.bdev.num_blocks, + bdev_io->u.bdev.offset_blocks); case SPDK_BDEV_IO_TYPE_WRITE_ZEROES: return bdev_nvme_unmap((struct nvme_bdev *)bdev_io->bdev->ctxt, ch, (struct nvme_bdev_io *)bdev_io->driver_ctx, - bdev_io->u.unmap.offset_blocks, - bdev_io->u.unmap.num_blocks); + bdev_io->u.bdev.offset_blocks, + bdev_io->u.bdev.num_blocks); case SPDK_BDEV_IO_TYPE_UNMAP: return bdev_nvme_unmap((struct nvme_bdev *)bdev_io->bdev->ctxt, ch, (struct nvme_bdev_io *)bdev_io->driver_ctx, - bdev_io->u.unmap.offset_blocks, - bdev_io->u.unmap.num_blocks); + bdev_io->u.bdev.offset_blocks, + bdev_io->u.bdev.num_blocks); case SPDK_BDEV_IO_TYPE_RESET: return bdev_nvme_reset((struct nvme_bdev *)bdev_io->bdev->ctxt, @@ -394,8 +394,8 @@ _bdev_nvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_ case SPDK_BDEV_IO_TYPE_FLUSH: return bdev_nvme_flush((struct nvme_bdev *)bdev_io->bdev->ctxt, (struct nvme_bdev_io *)bdev_io->driver_ctx, - bdev_io->u.flush.offset_blocks, - bdev_io->u.flush.num_blocks); + bdev_io->u.bdev.offset_blocks, + bdev_io->u.bdev.num_blocks); case SPDK_BDEV_IO_TYPE_NVME_ADMIN: return bdev_nvme_admin_passthru((struct nvme_bdev *)bdev_io->bdev->ctxt, diff --git a/lib/bdev/rbd/bdev_rbd.c b/lib/bdev/rbd/bdev_rbd.c index 4487f14b7..0b56e8831 100644 --- a/lib/bdev/rbd/bdev_rbd.c +++ b/lib/bdev/rbd/bdev_rbd.c @@ -258,10 +258,10 @@ static void bdev_rbd_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io ret = bdev_rbd_readv(bdev_io->bdev->ctxt, ch, bdev_io, - bdev_io->u.read.iovs, - bdev_io->u.read.iovcnt, - bdev_io->u.read.num_blocks * bdev_io->bdev->blocklen, - bdev_io->u.read.offset_blocks * bdev_io->bdev->blocklen); + bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, + bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen, + bdev_io->u.bdev.offset_blocks * bdev_io->bdev->blocklen); if (ret != 0) { spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); @@ -279,16 +279,16 @@ static int _bdev_rbd_submit_request(struct spdk_io_channel *ch, struct spdk_bdev return bdev_rbd_writev((struct bdev_rbd *)bdev_io->bdev->ctxt, ch, bdev_io, - bdev_io->u.write.iovs, - bdev_io->u.write.iovcnt, - bdev_io->u.write.num_blocks * bdev_io->bdev->blocklen, - bdev_io->u.write.offset_blocks * bdev_io->bdev->blocklen); + bdev_io->u.bdev.iovs, + bdev_io->u.bdev.iovcnt, + bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen, + bdev_io->u.bdev.offset_blocks * bdev_io->bdev->blocklen); case SPDK_BDEV_IO_TYPE_FLUSH: return bdev_rbd_flush((struct bdev_rbd *)bdev_io->bdev->ctxt, ch, bdev_io, - bdev_io->u.flush.offset_blocks * bdev_io->bdev->blocklen, - bdev_io->u.flush.num_blocks * bdev_io->bdev->blocklen); + bdev_io->u.bdev.offset_blocks * bdev_io->bdev->blocklen, + bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen); default: return -1; } @@ -337,7 +337,7 @@ bdev_rbd_io_poll(void *arg) bdev_io = rbd_aio_get_arg(comps[i]); io_status = rbd_aio_get_return_value(comps[i]); if (bdev_io->type == SPDK_BDEV_IO_TYPE_READ) { - if ((int)(bdev_io->u.read.num_blocks * bdev_io->bdev->blocklen) == io_status) { + if ((int)(bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen) == io_status) { status = SPDK_BDEV_IO_STATUS_SUCCESS; } else { status = SPDK_BDEV_IO_STATUS_FAILED; diff --git a/lib/bdev/virtio/bdev_virtio.c b/lib/bdev/virtio/bdev_virtio.c index c130fea26..c5582d2b8 100644 --- a/lib/bdev/virtio/bdev_virtio.c +++ b/lib/bdev/virtio/bdev_virtio.c @@ -135,28 +135,28 @@ bdev_virtio_rw(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) req->lun[1] = 0; if (is_read) { - vreq->iov = bdev_io->u.read.iovs; - vreq->iovcnt = bdev_io->u.read.iovcnt; + vreq->iov = bdev_io->u.bdev.iovs; + vreq->iovcnt = bdev_io->u.bdev.iovcnt; if (disk->num_blocks > (1ULL << 32)) { req->cdb[0] = SPDK_SBC_READ_16; - to_be64(&req->cdb[2], bdev_io->u.read.offset_blocks); - to_be32(&req->cdb[10], bdev_io->u.read.num_blocks); + to_be64(&req->cdb[2], bdev_io->u.bdev.offset_blocks); + to_be32(&req->cdb[10], bdev_io->u.bdev.num_blocks); } else { req->cdb[0] = SPDK_SBC_READ_10; - to_be32(&req->cdb[2], bdev_io->u.read.offset_blocks); - to_be16(&req->cdb[7], bdev_io->u.read.num_blocks); + to_be32(&req->cdb[2], bdev_io->u.bdev.offset_blocks); + to_be16(&req->cdb[7], bdev_io->u.bdev.num_blocks); } } else { - vreq->iov = bdev_io->u.write.iovs; - vreq->iovcnt = bdev_io->u.write.iovcnt; + vreq->iov = bdev_io->u.bdev.iovs; + vreq->iovcnt = bdev_io->u.bdev.iovcnt; if (disk->num_blocks > (1ULL << 32)) { req->cdb[0] = SPDK_SBC_WRITE_16; - to_be64(&req->cdb[2], bdev_io->u.write.offset_blocks); - to_be32(&req->cdb[10], bdev_io->u.write.num_blocks); + to_be64(&req->cdb[2], bdev_io->u.bdev.offset_blocks); + to_be32(&req->cdb[10], bdev_io->u.bdev.num_blocks); } else { req->cdb[0] = SPDK_SBC_WRITE_10; - to_be32(&req->cdb[2], bdev_io->u.write.offset_blocks); - to_be16(&req->cdb[7], bdev_io->u.write.num_blocks); + to_be32(&req->cdb[2], bdev_io->u.bdev.offset_blocks); + to_be16(&req->cdb[7], bdev_io->u.bdev.num_blocks); } }