pmem: bdev names for pmem bdevs
Signed-off-by: Piotr Pelplinski <piotr.pelplinski@intel.com> Change-Id: Ifbb02f99cd2e5752b2bc9091733b87ddadec11a4 Reviewed-on: https://review.gerrithub.io/383895 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
5447fb12a9
commit
e5b0dd6ead
@ -290,7 +290,7 @@ static const struct spdk_bdev_fn_table pmem_fn_table = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
int
|
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;
|
uint64_t num_blocks;
|
||||||
uint32_t block_size;
|
uint32_t block_size;
|
||||||
@ -330,9 +330,11 @@ spdk_create_pmem_disk(const char *pmem_file, struct spdk_bdev **bdev)
|
|||||||
free(pdisk);
|
free(pdisk);
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
}
|
}
|
||||||
|
if (name) {
|
||||||
|
pdisk->disk.name = spdk_sprintf_alloc("%s", name);
|
||||||
pdisk->disk.name = spdk_sprintf_alloc("pmem%d", pmem_disk_count);
|
} else {
|
||||||
|
pdisk->disk.name = spdk_sprintf_alloc("pmem%d", pmem_disk_count);
|
||||||
|
}
|
||||||
|
|
||||||
if (!pdisk->disk.name) {
|
if (!pdisk->disk.name) {
|
||||||
pmemblk_close(pdisk->pool);
|
pmemblk_close(pdisk->pool);
|
||||||
|
@ -36,6 +36,6 @@
|
|||||||
|
|
||||||
#include "spdk/bdev.h"
|
#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 */
|
#endif /* SPDK_BDEV_PMEM_H */
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
struct rpc_construct_pmem {
|
struct rpc_construct_pmem {
|
||||||
char *pmem_file;
|
char *pmem_file;
|
||||||
|
char *name;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
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[] = {
|
static const struct spdk_json_object_decoder rpc_construct_pmem_decoders[] = {
|
||||||
{"pmem_file", offsetof(struct rpc_construct_pmem, pmem_file), spdk_json_decode_string},
|
{"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
|
static void
|
||||||
@ -70,7 +72,7 @@ spdk_rpc_construct_pmem_bdev(struct spdk_jsonrpc_request *request,
|
|||||||
rc = EINVAL;
|
rc = EINVAL;
|
||||||
goto invalid;
|
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) {
|
if (rc != 0) {
|
||||||
goto invalid;
|
goto invalid;
|
||||||
}
|
}
|
||||||
|
@ -211,10 +211,13 @@ p.set_defaults(func=delete_pmem_pool)
|
|||||||
|
|
||||||
def construct_pmem_bdev(args):
|
def construct_pmem_bdev(args):
|
||||||
params = {'pmem_file': args.pmem_file}
|
params = {'pmem_file': args.pmem_file}
|
||||||
|
if args.name:
|
||||||
|
params['name'] = args.name
|
||||||
print_array(jsonrpc_call('construct_pmem_bdev', params))
|
print_array(jsonrpc_call('construct_pmem_bdev', params))
|
||||||
|
|
||||||
p = subparsers.add_parser('construct_pmem_bdev', help='Add a bdev with pmem backend')
|
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('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)
|
p.set_defaults(func=construct_pmem_bdev)
|
||||||
|
|
||||||
def construct_null_bdev(args):
|
def construct_null_bdev(args):
|
||||||
|
@ -385,45 +385,45 @@ ut_pmem_open_close(void)
|
|||||||
pools_cnt = g_opened_pools;
|
pools_cnt = g_opened_pools;
|
||||||
|
|
||||||
/* Try opening with NULL name */
|
/* 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_PTR_NULL(bdev);
|
||||||
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
||||||
CU_ASSERT_NOT_EQUAL(rc, 0);
|
CU_ASSERT_NOT_EQUAL(rc, 0);
|
||||||
|
|
||||||
/* Open non-existent pool */
|
/* 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_PTR_NULL(bdev);
|
||||||
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
||||||
CU_ASSERT_NOT_EQUAL(rc, 0);
|
CU_ASSERT_NOT_EQUAL(rc, 0);
|
||||||
|
|
||||||
/* Open inconsistent pool */
|
/* 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_PTR_NULL(bdev);
|
||||||
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
||||||
CU_ASSERT_NOT_EQUAL(rc, 0);
|
CU_ASSERT_NOT_EQUAL(rc, 0);
|
||||||
|
|
||||||
/* Open consistent pool fail the open from unknown reason. */
|
/* Open consistent pool fail the open from unknown reason. */
|
||||||
g_pmemblk_open_allow_open = false;
|
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;
|
g_pmemblk_open_allow_open = true;
|
||||||
CU_ASSERT_PTR_NULL(bdev);
|
CU_ASSERT_PTR_NULL(bdev);
|
||||||
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
||||||
CU_ASSERT_NOT_EQUAL(rc, 0);
|
CU_ASSERT_NOT_EQUAL(rc, 0);
|
||||||
|
|
||||||
/* Open pool with nblocks = 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_PTR_NULL(bdev);
|
||||||
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
||||||
CU_ASSERT_NOT_EQUAL(rc, 0);
|
CU_ASSERT_NOT_EQUAL(rc, 0);
|
||||||
|
|
||||||
/* Open pool with bsize = 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_PTR_NULL(bdev);
|
||||||
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
CU_ASSERT_EQUAL(pools_cnt, g_opened_pools);
|
||||||
CU_ASSERT_NOT_EQUAL(rc, 0);
|
CU_ASSERT_NOT_EQUAL(rc, 0);
|
||||||
|
|
||||||
/* Open good pool */
|
/* 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);
|
SPDK_CU_ASSERT_FATAL(bdev != NULL);
|
||||||
CU_ASSERT_TRUE(g_pool_ok.is_open);
|
CU_ASSERT_TRUE(g_pool_ok.is_open);
|
||||||
CU_ASSERT_EQUAL(pools_cnt + 1, g_opened_pools);
|
CU_ASSERT_EQUAL(pools_cnt + 1, g_opened_pools);
|
||||||
@ -454,7 +454,7 @@ ut_pmem_write_read(void)
|
|||||||
{ 0, 4 * g_pool_ok.bsize },
|
{ 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);
|
CU_ASSERT_EQUAL(rc, 0);
|
||||||
|
|
||||||
SPDK_CU_ASSERT_FATAL(g_pool_ok.nblock > 40);
|
SPDK_CU_ASSERT_FATAL(g_pool_ok.nblock > 40);
|
||||||
@ -628,7 +628,7 @@ ut_pmem_reset(void)
|
|||||||
struct spdk_bdev *bdev;
|
struct spdk_bdev *bdev;
|
||||||
int rc;
|
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);
|
CU_ASSERT_EQUAL(rc, 0);
|
||||||
SPDK_CU_ASSERT_FATAL(bdev != NULL);
|
SPDK_CU_ASSERT_FATAL(bdev != NULL);
|
||||||
|
|
||||||
@ -648,7 +648,7 @@ ut_pmem_unmap_write_zero(int16_t io_type)
|
|||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
CU_ASSERT(io_type == SPDK_BDEV_IO_TYPE_UNMAP || io_type == SPDK_BDEV_IO_TYPE_WRITE_ZEROES);
|
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);
|
CU_ASSERT_EQUAL(rc, 0);
|
||||||
SPDK_CU_ASSERT_FATAL(bdev != NULL);
|
SPDK_CU_ASSERT_FATAL(bdev != NULL);
|
||||||
SPDK_CU_ASSERT_FATAL(g_pool_ok.nblock > 40);
|
SPDK_CU_ASSERT_FATAL(g_pool_ok.nblock > 40);
|
||||||
|
Loading…
Reference in New Issue
Block a user