Commit e5b0dd6e authored by Piotr Pelplinski's avatar Piotr Pelplinski Committed by Daniel Verkamp
Browse files

pmem: bdev names for pmem bdevs



Signed-off-by: default avatarPiotr Pelplinski <piotr.pelplinski@intel.com>
Change-Id: Ifbb02f99cd2e5752b2bc9091733b87ddadec11a4

Reviewed-on: https://review.gerrithub.io/383895


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 5447fb12
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -290,7 +290,7 @@ static const struct spdk_bdev_fn_table pmem_fn_table = {
};

int
spdk_create_pmem_disk(const char *pmem_file, struct spdk_bdev **bdev)
spdk_create_pmem_disk(const char *pmem_file, char *name, struct spdk_bdev **bdev)
{
	uint64_t num_blocks;
	uint32_t block_size;
@@ -330,9 +330,11 @@ spdk_create_pmem_disk(const char *pmem_file, 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);
	}

	if (!pdisk->disk.name) {
		pmemblk_close(pdisk->pool);
+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, struct spdk_bdev **bdev);
int spdk_create_pmem_disk(const char *pmem_file, char *name, struct spdk_bdev **bdev);

#endif /* SPDK_BDEV_PMEM_H */
+3 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@

struct rpc_construct_pmem {
	char *pmem_file;
	char *name;
};

static void
@@ -51,6 +52,7 @@ free_rpc_construct_pmem_bdev(struct rpc_construct_pmem *req)

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},
};

static void
@@ -70,7 +72,7 @@ spdk_rpc_construct_pmem_bdev(struct spdk_jsonrpc_request *request,
		rc = EINVAL;
		goto invalid;
	}
	rc = spdk_create_pmem_disk(req.pmem_file, &bdev);
	rc = spdk_create_pmem_disk(req.pmem_file, req.name, &bdev);
	if (rc != 0) {
		goto invalid;
	}
+3 −0
Original line number Diff line number Diff line
@@ -211,10 +211,13 @@ 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
    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.set_defaults(func=construct_pmem_bdev)

def construct_null_bdev(args):
+10 −10
Original line number Diff line number Diff line
@@ -385,45 +385,45 @@ ut_pmem_open_close(void)
	pools_cnt = g_opened_pools;

	/* Try opening with NULL name */
	rc = spdk_create_pmem_disk(NULL, &bdev);
	rc = spdk_create_pmem_disk(NULL, NULL, &bdev);
	CU_ASSERT_PTR_NULL(bdev);
	CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
	CU_ASSERT_NOT_EQUAL(rc, 0);

	/* Open non-existent pool */
	rc = spdk_create_pmem_disk("non existent pool", &bdev);
	rc = spdk_create_pmem_disk("non existent pool", NULL, &bdev);
	CU_ASSERT_PTR_NULL(bdev);
	CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
	CU_ASSERT_NOT_EQUAL(rc, 0);

	/* Open inconsistent pool */
	rc = spdk_create_pmem_disk(g_pool_inconsistent.name, &bdev);
	rc = spdk_create_pmem_disk(g_pool_inconsistent.name, NULL, &bdev);
	CU_ASSERT_PTR_NULL(bdev);
	CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
	CU_ASSERT_NOT_EQUAL(rc, 0);

	/* Open consistent pool fail the open from unknown reason. */
	g_pmemblk_open_allow_open = false;
	rc = spdk_create_pmem_disk(g_pool_inconsistent.name, &bdev);
	rc = spdk_create_pmem_disk(g_pool_inconsistent.name, NULL, &bdev);
	g_pmemblk_open_allow_open = true;
	CU_ASSERT_PTR_NULL(bdev);
	CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
	CU_ASSERT_NOT_EQUAL(rc, 0);

	/* Open pool with nblocks = 0 */
	rc = spdk_create_pmem_disk(g_pool_nblock_0.name, &bdev);
	rc = spdk_create_pmem_disk(g_pool_nblock_0.name, NULL, &bdev);
	CU_ASSERT_PTR_NULL(bdev);
	CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
	CU_ASSERT_NOT_EQUAL(rc, 0);

	/* Open pool with bsize = 0 */
	rc = spdk_create_pmem_disk(g_pool_bsize_0.name, &bdev);
	rc = spdk_create_pmem_disk(g_pool_bsize_0.name, NULL, &bdev);
	CU_ASSERT_PTR_NULL(bdev);
	CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
	CU_ASSERT_NOT_EQUAL(rc, 0);

	/* Open good  pool */
	rc = spdk_create_pmem_disk(g_pool_ok.name, &bdev);
	rc = spdk_create_pmem_disk(g_pool_ok.name, NULL, &bdev);
	SPDK_CU_ASSERT_FATAL(bdev != NULL);
	CU_ASSERT_TRUE(g_pool_ok.is_open);
	CU_ASSERT_EQUAL(pools_cnt + 1, g_opened_pools);
@@ -454,7 +454,7 @@ ut_pmem_write_read(void)
		{ 0, 4 * g_pool_ok.bsize },
	};

	rc = spdk_create_pmem_disk(g_pool_ok.name, &bdev);
	rc = spdk_create_pmem_disk(g_pool_ok.name, NULL, &bdev);
	CU_ASSERT_EQUAL(rc, 0);

	SPDK_CU_ASSERT_FATAL(g_pool_ok.nblock > 40);
@@ -628,7 +628,7 @@ ut_pmem_reset(void)
	struct spdk_bdev *bdev;
	int rc;

	rc = spdk_create_pmem_disk(g_pool_ok.name, &bdev);
	rc = spdk_create_pmem_disk(g_pool_ok.name, NULL, &bdev);
	CU_ASSERT_EQUAL(rc, 0);
	SPDK_CU_ASSERT_FATAL(bdev != NULL);

@@ -648,7 +648,7 @@ ut_pmem_unmap_write_zero(int16_t io_type)
	int rc;

	CU_ASSERT(io_type == SPDK_BDEV_IO_TYPE_UNMAP || io_type == SPDK_BDEV_IO_TYPE_WRITE_ZEROES);
	rc = spdk_create_pmem_disk(g_pool_ok.name, &bdev);
	rc = spdk_create_pmem_disk(g_pool_ok.name, NULL, &bdev);
	CU_ASSERT_EQUAL(rc, 0);
	SPDK_CU_ASSERT_FATAL(bdev != NULL);
	SPDK_CU_ASSERT_FATAL(g_pool_ok.nblock > 40);