Commit 1a2de824 authored by Jim Harris's avatar Jim Harris Committed by Changpeng Liu
Browse files

examples/hello_blob: use io_unit_size instead of page_size



Blobstore now supports 512B reads/writes to blobs, if the
backing device is formatted for 512B LBAs.  The hello_blob
example app was never updated to account for this - so when
running against a backing device with 512B LBAs, it would
fail since it was only reading/writing 1 blob io_unit (512B)
but was comparing a page size (4KB).

Clean up a typo too while we're here.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I6cfeeff1c160a24d4c10b68b9dd93717ed79f212

Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/450069


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent 4fad4b86
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ struct hello_context_t {
	struct spdk_io_channel *channel;
	uint8_t *read_buff;
	uint8_t *write_buff;
	uint64_t page_size;
	uint64_t io_unit_size;
	int rc;
};

@@ -159,7 +159,7 @@ read_complete(void *arg1, int bserrno)

	/* Now let's make sure things match. */
	match_res = memcmp(hello_context->write_buff, hello_context->read_buff,
			   hello_context->page_size);
			   hello_context->io_unit_size);
	if (match_res) {
		unload_bs(hello_context, "Error in data compare", -1);
		return;
@@ -179,7 +179,7 @@ read_blob(struct hello_context_t *hello_context)
{
	SPDK_NOTICELOG("entry\n");

	hello_context->read_buff = spdk_malloc(hello_context->page_size,
	hello_context->read_buff = spdk_malloc(hello_context->io_unit_size,
					       0x1000, NULL, SPDK_ENV_LCORE_ID_ANY,
					       SPDK_MALLOC_DMA);
	if (hello_context->read_buff == NULL) {
@@ -223,9 +223,9 @@ blob_write(struct hello_context_t *hello_context)

	/*
	 * Buffers for data transfer need to be allocated via SPDK. We will
	 * tranfer 1 page of 4K aligned data at offset 0 in the blob.
	 * transfer 1 io_unit of 4K aligned data at offset 0 in the blob.
	 */
	hello_context->write_buff = spdk_malloc(hello_context->page_size,
	hello_context->write_buff = spdk_malloc(hello_context->io_unit_size,
						0x1000, NULL, SPDK_ENV_LCORE_ID_ANY,
						SPDK_MALLOC_DMA);
	if (hello_context->write_buff == NULL) {
@@ -233,7 +233,7 @@ blob_write(struct hello_context_t *hello_context)
			  -ENOMEM);
		return;
	}
	memset(hello_context->write_buff, 0x5a, hello_context->page_size);
	memset(hello_context->write_buff, 0x5a, hello_context->io_unit_size);

	/* Now we have to allocate a channel. */
	hello_context->channel = spdk_bs_alloc_io_channel(hello_context->bs);
@@ -243,7 +243,7 @@ blob_write(struct hello_context_t *hello_context)
		return;
	}

	/* Let's perform the write, 1 page at offset 0. */
	/* Let's perform the write, 1 io_unit at offset 0. */
	spdk_blob_io_write(hello_context->blob, hello_context->channel,
			   hello_context->write_buff,
			   0, 1, write_complete, hello_context);
@@ -379,10 +379,10 @@ bs_init_complete(void *cb_arg, struct spdk_blob_store *bs,
	hello_context->bs = bs;
	SPDK_NOTICELOG("blobstore: %p\n", hello_context->bs);
	/*
	 * We will use the page size in allocating buffers, etc., later
	 * We will use the io_unit size in allocating buffers, etc., later
	 * so we'll just save it in out context buffer here.
	 */
	hello_context->page_size = spdk_bs_get_page_size(hello_context->bs);
	hello_context->io_unit_size = spdk_bs_get_io_unit_size(hello_context->bs);

	/*
	 * The blostore has been initialized, let's create a blob.