Commit 0404c306 authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

bdev: make construct RPCs return the bdev names



When creating a bdev via the RPC interface, there was no way to know
what name it was assigned (other than predicting it based on the
numbering scheme).  Change all of the relevant RPC interfaces to return
an array of bdev names so they can be used to construct LUNs/subsystems
dynamically in scripts.

Change-Id: I8e03349bdc81afd3d69247396a20df5fcf050f40
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 93de96b4
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -339,7 +339,7 @@ static void aio_free_disk(struct file_disk *fdisk)
	free(fdisk);
}

struct file_disk *
struct spdk_bdev *
create_aio_disk(char *fname)
{
	struct file_disk *fdisk;
@@ -375,7 +375,7 @@ create_aio_disk(char *fname)
	spdk_io_device_register(&fdisk->disk, blockdev_aio_create_cb, blockdev_aio_destroy_cb,
				sizeof(struct blockdev_aio_io_channel));
	spdk_bdev_register(&fdisk->disk);
	return fdisk;
	return &fdisk->disk;

error_return:
	blockdev_aio_close(fdisk);
@@ -385,7 +385,7 @@ error_return:

static int blockdev_aio_initialize(void)
{
	struct file_disk *fdisk;
	struct spdk_bdev *bdev;
	int i;
	const char *val = NULL;
	char *file;
@@ -410,9 +410,9 @@ static int blockdev_aio_initialize(void)
				return -1;
			}

			fdisk = create_aio_disk(file);
			bdev = create_aio_disk(file);

			if (fdisk == NULL && !skip_missing) {
			if (bdev == NULL && !skip_missing) {
				return -1;
			}
		}
+1 −1
Original line number Diff line number Diff line
@@ -69,6 +69,6 @@ struct file_disk {
	TAILQ_HEAD(, blockdev_aio_task) sync_completion_list;
};

struct file_disk *create_aio_disk(char *fname);
struct spdk_bdev *create_aio_disk(char *fname);

#endif // SPDK_BLOCKDEV_AIO_H
+6 −2
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ spdk_rpc_construct_aio_bdev(struct spdk_jsonrpc_server_conn *conn,
{
	struct rpc_construct_aio req = {};
	struct spdk_json_write_ctx *w;
	struct spdk_bdev *bdev;

	if (spdk_json_decode_object(params, rpc_construct_aio_decoders,
				    sizeof(rpc_construct_aio_decoders) / sizeof(*rpc_construct_aio_decoders),
@@ -64,7 +65,8 @@ spdk_rpc_construct_aio_bdev(struct spdk_jsonrpc_server_conn *conn,
		goto invalid;
	}

	if (create_aio_disk(req.fname) == NULL) {
	bdev = create_aio_disk(req.fname);
	if (bdev == NULL) {
		goto invalid;
	}

@@ -75,7 +77,9 @@ spdk_rpc_construct_aio_bdev(struct spdk_jsonrpc_server_conn *conn,
	}

	w = spdk_jsonrpc_begin_result(conn, id);
	spdk_json_write_bool(w, true);
	spdk_json_write_array_begin(w);
	spdk_json_write_string(w, bdev->name);
	spdk_json_write_array_end(w);
	spdk_jsonrpc_end_result(conn, w);
	return;

+5 −5
Original line number Diff line number Diff line
@@ -364,7 +364,7 @@ static const struct spdk_bdev_fn_table malloc_fn_table = {
	.get_io_channel		= blockdev_malloc_get_io_channel,
};

struct malloc_disk *create_malloc_disk(uint64_t num_blocks, uint32_t block_size)
struct spdk_bdev *create_malloc_disk(uint64_t num_blocks, uint32_t block_size)
{
	struct malloc_disk	*mdisk;

@@ -415,7 +415,7 @@ struct malloc_disk *create_malloc_disk(uint64_t num_blocks, uint32_t block_size)
	mdisk->next = g_malloc_disk_head;
	g_malloc_disk_head = mdisk;

	return mdisk;
	return &mdisk->disk;
}

static void free_malloc_disk(struct malloc_disk *mdisk)
@@ -429,7 +429,7 @@ static int blockdev_malloc_initialize(void)
	struct spdk_conf_section *sp = spdk_conf_find_section(NULL, "Malloc");
	int NumberOfLuns, LunSizeInMB, BlockSize, i;
	uint64_t size;
	struct malloc_disk *mdisk;
	struct spdk_bdev *bdev;

	if (sp != NULL) {
		NumberOfLuns = spdk_conf_section_get_intval(sp, "NumberOfLuns");
@@ -445,8 +445,8 @@ static int blockdev_malloc_initialize(void)
		}
		size = (uint64_t)LunSizeInMB * 1024 * 1024;
		for (i = 0; i < NumberOfLuns; i++) {
			mdisk = create_malloc_disk(size / BlockSize, BlockSize);
			if (mdisk == NULL) {
			bdev = create_malloc_disk(size / BlockSize, BlockSize);
			if (bdev == NULL) {
				SPDK_ERRLOG("Could not create malloc disk\n");
				return EINVAL;
			}
+2 −2
Original line number Diff line number Diff line
@@ -36,8 +36,8 @@

#include <stdint.h>

struct malloc_disk;
#include "spdk/bdev.h"

struct malloc_disk *create_malloc_disk(uint64_t num_blocks, uint32_t block_size);
struct spdk_bdev *create_malloc_disk(uint64_t num_blocks, uint32_t block_size);

#endif /* SPDK_BLOCKDEV_MALLOC_H */
Loading