Commit 56f61c8f authored by Daniel Verkamp's avatar Daniel Verkamp Committed by Jim Harris
Browse files

bdev/pmem: require name in construct_pmem_bdev RPC



Change-Id: I3cbb52cd9a4201704423b49eae74935b8a33b0fd
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389903


Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
parent deb69440
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ Example:
~~~
It is possible to create pmem bdev using SPDK RPC:
~~~
./scripts/rpc.py construct_pmem_bdev /path/to/pmem_pool
./scripts/rpc.py construct_pmem_bdev -n bdev_name /path/to/pmem_pool
~~~

## Null {#bdev_config_null}
+9 −10
Original line number Diff line number Diff line
@@ -51,8 +51,6 @@ struct pmem_disk {

static TAILQ_HEAD(, pmem_disk) g_pmem_disks = TAILQ_HEAD_INITIALIZER(g_pmem_disks);

static int pmem_disk_count = 0;

static int bdev_pmem_initialize(void);
static void bdev_pmem_finish(void);

@@ -284,13 +282,20 @@ static const struct spdk_bdev_fn_table pmem_fn_table = {
};

int
spdk_create_pmem_disk(const char *pmem_file, char *name, struct spdk_bdev **bdev)
spdk_create_pmem_disk(const char *pmem_file, const char *name, struct spdk_bdev **bdev)
{
	uint64_t num_blocks;
	uint32_t block_size;
	struct pmem_disk *pdisk;
	int rc;

	*bdev = NULL;

	if (name == NULL) {
		SPDK_ERRLOG("Missing name parameter for spdk_create_pmem_disk()\n");
		return EINVAL;
	}

	if (pmemblk_check(pmem_file, 0) != 1) {
		SPDK_ERRLOG("Pool '%s' check failed: %s\n", pmem_file, pmemblk_errormsg());
		return EIO;
@@ -325,12 +330,8 @@ spdk_create_pmem_disk(const char *pmem_file, char *name, struct spdk_bdev **bdev
		free(pdisk);
		return EINVAL;
	}
	if (name) {
		pdisk->disk.name = spdk_sprintf_alloc("%s", name);
	} else {
		pdisk->disk.name = spdk_sprintf_alloc("pmem%d", pmem_disk_count);
	}

	pdisk->disk.name = strdup(name);
	if (!pdisk->disk.name) {
		pmemblk_close(pdisk->pool);
		free(pdisk);
@@ -338,8 +339,6 @@ spdk_create_pmem_disk(const char *pmem_file, char *name, struct spdk_bdev **bdev
	}

	pdisk->disk.product_name = "pmemblk disk";
	pmem_disk_count++;

	pdisk->disk.write_cache = 0;
	pdisk->disk.blocklen = block_size;
	pdisk->disk.blockcnt = num_blocks;
+1 −1
Original line number Diff line number Diff line
@@ -36,6 +36,6 @@

#include "spdk/bdev.h"

int spdk_create_pmem_disk(const char *pmem_file, char *name, struct spdk_bdev **bdev);
int spdk_create_pmem_disk(const char *pmem_file, const char *name, struct spdk_bdev **bdev);

#endif /* SPDK_BDEV_PMEM_H */
+2 −1
Original line number Diff line number Diff line
@@ -48,11 +48,12 @@ static void
free_rpc_construct_pmem_bdev(struct rpc_construct_pmem *req)
{
	free(req->pmem_file);
	free(req->name);
}

static const struct spdk_json_object_decoder rpc_construct_pmem_decoders[] = {
	{"pmem_file", offsetof(struct rpc_construct_pmem, pmem_file), spdk_json_decode_string},
	{"name", offsetof(struct rpc_construct_pmem, name), spdk_json_decode_string, true},
	{"name", offsetof(struct rpc_construct_pmem, name), spdk_json_decode_string},
};

static void
+5 −4
Original line number Diff line number Diff line
@@ -210,14 +210,15 @@ p.set_defaults(func=delete_pmem_pool)


def construct_pmem_bdev(args):
    params = {'pmem_file': args.pmem_file}
    if args.name:
        params['name'] = args.name
    params = {
        'pmem_file': args.pmem_file,
        'name': args.name
    }
    print_array(jsonrpc_call('construct_pmem_bdev', params))

p = subparsers.add_parser('construct_pmem_bdev', help='Add a bdev with pmem backend')
p.add_argument('pmem_file', help='Path to pmemblk pool file')
p.add_argument('-n', '--name', help='Block device name', required=False)
p.add_argument('-n', '--name', help='Block device name', required=True)
p.set_defaults(func=construct_pmem_bdev)

def construct_null_bdev(args):
Loading