diff --git a/CONFIG b/CONFIG index 8abbf58c5..e65dd970b 100644 --- a/CONFIG +++ b/CONFIG @@ -126,10 +126,6 @@ CONFIG_VIRTIO=y CONFIG_VFIO_USER=n CONFIG_VFIO_USER_DIR= -# Build with PMDK backends -CONFIG_PMDK=n -CONFIG_PMDK_DIR= - # Build with xNVMe CONFIG_XNVME=n diff --git a/configure b/configure index 9c60289ed..1c9c7980c 100755 --- a/configure +++ b/configure @@ -71,9 +71,6 @@ function usage() { echo " vfio-user initiator is always built-in in Linux." echo " example: /usr/src/libvfio-user" echo " --without-vfio-user No path required." - echo " --with-pmdk[=DIR] Build persistent memory bdev. (Deprecated) - example: /usr/share/pmdk" - echo " --without-pmdk No path required." echo " --with-vbdev-compress Build vbdev compression module and dependencies." echo " --without-vbdev-compress No path required." echo " --with-dpdk-compressdev Build accel DPDK compression module and dependencies." @@ -527,18 +524,6 @@ for i in "$@"; do --without-vfio-user) CONFIG[VFIO_USER]=n ;; - --with-pmdk) - CONFIG[PMDK]=y - CONFIG[PMDK_DIR]="" - ;; - --with-pmdk=*) - CONFIG[PMDK]=y - check_dir "$i" - CONFIG[PMDK_DIR]=$(readlink -f ${i#*=}) - ;; - --without-pmdk) - CONFIG[PMDK]=n - ;; --with-vbdev-compress) CONFIG[VBDEV_COMPRESS]=y ;; @@ -906,17 +891,6 @@ if [[ "${CONFIG[FC]}" = "y" ]]; then fi fi -if [[ "${CONFIG[PMDK]}" = "y" ]]; then - echo "WARNING: PMDK - bdev_pmem is deprecated." - echo "WARNING: PMDK - ACCEL_FLAG_PERSISTENT in accel_sw module is deprecated." - if ! echo -e '#include \nint main(void) { return 0; }\n' \ - | "${BUILD_CMD[@]}" -lpmemblk - 2> /dev/null; then - echo "--with-pmdk requires libpmemblk." - echo "Please install then re-run this script." - exit 1 - fi -fi - function dpdk_version() { # Check DPDK version to determine if mlx5_pci driver is supported local dpdk_ver="none" diff --git a/deprecation.md b/deprecation.md index efeaca5d6..c0ea61f7d 100644 --- a/deprecation.md +++ b/deprecation.md @@ -24,10 +24,6 @@ The tags can be matched with the level 4 headers below. PMDK is no longer supported and integrations with it in SPDK are now deprecated, and will be removed in SPDK 23.05. Please see: [UPDATE ON PMDK AND OUR LONG TERM SUPPORT STRATEGY](https://pmem.io/blog/2022/11/update-on-pmdk-and-our-long-term-support-strategy/). -#### `bdev_pmem` - -Deprecated `bdev_pmem` based on libpmemblk, it will be removed in SPDK 23.05. - #### `libreduce_pm_file` Reduce library will no longer depend on libpmem. `pm_file_dir` parameter in `spdk_reduce_vol_init()` diff --git a/doc/bdev.md b/doc/bdev.md index 6934f82ed..ac8ba2b83 100644 --- a/doc/bdev.md +++ b/doc/bdev.md @@ -533,43 +533,6 @@ Example commands `rpc.py bdev_passthru_delete pt` -## Pmem {#bdev_config_pmem} - -The SPDK pmem bdev driver uses pmemblk pool as the target for block I/O operations. For -details on Pmem memory please refer to PMDK documentation on http://pmem.io website. -First, user needs to configure SPDK to include PMDK support: - -`configure --with-pmdk` - -To create pmemblk pool for use with SPDK user should use `bdev_pmem_create_pool` RPC command. - -Example command - -`rpc.py bdev_pmem_create_pool /path/to/pmem_pool 25 4096` - -To get information on created pmem pool file user can use `bdev_pmem_get_pool_info` RPC command. - -Example command - -`rpc.py bdev_pmem_get_pool_info /path/to/pmem_pool` - -To remove pmem pool file user can use `bdev_pmem_delete_pool` RPC command. - -Example command - -`rpc.py bdev_pmem_delete_pool /path/to/pmem_pool` - -To create bdev based on pmemblk pool file user should use `bdev_pmem_create` RPC -command. - -Example command - -`rpc.py bdev_pmem_create /path/to/pmem_pool -n pmem` - -To remove a block device representation use the bdev_pmem_delete command. - -`rpc.py bdev_pmem_delete pmem` - ## RAID {#bdev_ug_raid} RAID virtual bdev module provides functionality to combine any SPDK bdevs into diff --git a/doc/jsonrpc.md b/doc/jsonrpc.md index faa45f797..8031abd41 100644 --- a/doc/jsonrpc.md +++ b/doc/jsonrpc.md @@ -5831,224 +5831,6 @@ Example response: } } ~~~ -### bdev_pmem_create_pool {#rpc_bdev_pmem_create_pool} - -Create a @ref bdev_config_pmem blk pool file. It is equivalent of following `pmempool create` command: - -~~~bash -pmempool create -s $((num_blocks * block_size)) blk $block_size $pmem_file -~~~ - -This method is available only if SPDK was built with PMDK support. - -#### Parameters - -Name | Optional | Type | Description ------------------------ | -------- | ----------- | ----------- -pmem_file | Required | string | Path to new pmem file -num_blocks | Required | number | Number of blocks -block_size | Required | number | Size of each block in bytes - -#### Example - -Example request: - -~~~json -{ - "params": { - "block_size": 512, - "num_blocks": 131072, - "pmem_file": "/tmp/pmem_file" - }, - "jsonrpc": "2.0", - "method": "bdev_pmem_create_pool", - "id": 1 -} -~~~ - -Example response: - -~~~json -{ - "jsonrpc": "2.0", - "id": 1, - "result": true -} -~~~ - -### bdev_pmem_get_pool_info {#rpc_bdev_pmem_get_pool_info} - -Retrieve basic information about PMDK memory pool. - -This method is available only if SPDK was built with PMDK support. - -#### Parameters - -Name | Optional | Type | Description ------------------------ | -------- | ----------- | ----------- -pmem_file | Required | string | Path to existing pmem file - -#### Result - -Array of objects describing memory pool: - -Name | Type | Description ------------------------ | ----------- | ----------- -num_blocks | number | Number of blocks -block_size | number | Size of each block in bytes - -#### Example - -Example request: - -~~~json -request: -{ - "params": { - "pmem_file": "/tmp/pmem_file" - }, - "jsonrpc": "2.0", - "method": "bdev_pmem_get_pool_info", - "id": 1 -} -~~~ - -Example response: - -~~~json -{ - "jsonrpc": "2.0", - "id": 1, - "result": [ - { - "block_size": 512, - "num_blocks": 129728 - } - ] -} -~~~ - -### bdev_pmem_delete_pool {#rpc_bdev_pmem_delete_pool} - -Delete pmem pool by removing file `pmem_file`. This method will fail if `pmem_file` is not a -valid pmem pool file. - -This method is available only if SPDK was built with PMDK support. - -#### Parameters - -Name | Optional | Type | Description ------------------------ | -------- | ----------- | ----------- -pmem_file | Required | string | Path to new pmem file - -#### Example - -Example request: - -~~~json -{ - "params": { - "pmem_file": "/tmp/pmem_file" - }, - "jsonrpc": "2.0", - "method": "bdev_pmem_delete_pool", - "id": 1 -} -~~~ - -Example response: - -~~~json -{ - "jsonrpc": "2.0", - "id": 1, - "result": true -} -~~~ - -### bdev_pmem_create {#rpc_bdev_pmem_create} - -Construct @ref bdev_config_pmem bdev. - -This method is available only if SPDK was built with PMDK support. - -#### Parameters - -Name | Optional | Type | Description ------------------------ | -------- | ----------- | ----------- -name | Required | string | Bdev name -pmem_file | Required | string | Path to existing pmem blk pool file - -#### Result - -Name of newly created bdev. - -#### Example - -Example request: - -~~~json -{ - "params": { - "pmem_file": "/tmp/pmem_file", - "name": "Pmem0" - }, - "jsonrpc": "2.0", - "method": "bdev_pmem_create", - "id": 1 -} -~~~ - -Example response: - -~~~json -{ - "jsonrpc": "2.0", - "id": 1, - "result": "Pmem0" -} -~~~ - -### bdev_pmem_delete {#rpc_bdev_pmem_delete} - -Delete @ref bdev_config_pmem bdev. This call will not remove backing pool files. - -This method is available only if SPDK was built with PMDK support. - -#### Result - -`true` if bdev with provided name was deleted or `false` otherwise. - -#### Parameters - -Name | Optional | Type | Description ------------------------ | -------- | ----------- | ----------- -name | Required | string | Bdev name - -#### Example - -Example request: - -~~~json -{ - "params": { - "name": "Pmem0" - }, - "jsonrpc": "2.0", - "method": "bdev_pmem_delete", - "id": 1 -} -~~~ - -Example response: - -~~~json -{ - "jsonrpc": "2.0", - "id": 1, - "result": true -} -~~~ ### bdev_passthru_create {#rpc_bdev_passthru_create} diff --git a/mk/spdk.common.mk b/mk/spdk.common.mk index 025441dc3..fcc5f7d29 100644 --- a/mk/spdk.common.mk +++ b/mk/spdk.common.mk @@ -158,12 +158,6 @@ SYS_LIBS += -L/usr/local/lib COMMON_CFLAGS += -I/usr/local/include endif -# Attach only if PMDK lib specified with configure -ifneq ($(CONFIG_PMDK_DIR),) -LIBS += -L$(CONFIG_PMDK_DIR)/src/nondebug -COMMON_CFLAGS += -I$(CONFIG_PMDK_DIR)/src/include -endif - ifeq ($(CONFIG_RDMA),y) SYS_LIBS += -libverbs -lrdmacm endif diff --git a/mk/spdk.lib_deps.mk b/mk/spdk.lib_deps.mk index 834675e69..565536a92 100644 --- a/mk/spdk.lib_deps.mk +++ b/mk/spdk.lib_deps.mk @@ -145,7 +145,6 @@ DEPDIRS-bdev_null := $(BDEV_DEPS_THREAD) DEPDIRS-bdev_nvme = $(BDEV_DEPS_THREAD) accel nvme trace DEPDIRS-bdev_ocf := $(BDEV_DEPS_THREAD) DEPDIRS-bdev_passthru := $(BDEV_DEPS_THREAD) -DEPDIRS-bdev_pmem := $(BDEV_DEPS_THREAD) DEPDIRS-bdev_raid := $(BDEV_DEPS_THREAD) DEPDIRS-bdev_rbd := $(BDEV_DEPS_THREAD) DEPDIRS-bdev_uring := $(BDEV_DEPS_THREAD) diff --git a/mk/spdk.modules.mk b/mk/spdk.modules.mk index edc6fe6af..b3c6a25e5 100644 --- a/mk/spdk.modules.mk +++ b/mk/spdk.modules.mk @@ -79,11 +79,6 @@ BLOCKDEV_MODULES_LIST += bdev_rbd BLOCKDEV_MODULES_PRIVATE_LIBS += -lrados -lrbd endif -ifeq ($(CONFIG_PMDK),y) -BLOCKDEV_MODULES_LIST += bdev_pmem -BLOCKDEV_MODULES_PRIVATE_LIBS += -lpmemblk -lpmem -endif - ifeq ($(CONFIG_DAOS),y) BLOCKDEV_MODULES_LIST += bdev_daos BLOCKDEV_MODULES_PRIVATE_LIBS += -ldaos -ldaos_common -ldfs -lgurt -luuid -ldl diff --git a/module/bdev/Makefile b/module/bdev/Makefile index 9963a6e8f..fbd295dba 100644 --- a/module/bdev/Makefile +++ b/module/bdev/Makefile @@ -22,7 +22,6 @@ ifeq ($(OS),Linux) DIRS-y += aio ftl DIRS-$(CONFIG_ISCSI_INITIATOR) += iscsi DIRS-$(CONFIG_VIRTIO) += virtio -DIRS-$(CONFIG_PMDK) += pmem endif DIRS-$(CONFIG_RBD) += rbd diff --git a/module/bdev/pmem/Makefile b/module/bdev/pmem/Makefile deleted file mode 100644 index a3b3bcd49..000000000 --- a/module/bdev/pmem/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-License-Identifier: BSD-3-Clause -# Copyright (C) 2015 Intel Corporation. -# All rights reserved. -# - -SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../..) -include $(SPDK_ROOT_DIR)/mk/spdk.common.mk - -SO_VER := 5 -SO_MINOR := 0 - -C_SRCS = bdev_pmem.c bdev_pmem_rpc.c -LIBNAME = bdev_pmem - -SPDK_MAP_FILE = $(SPDK_ROOT_DIR)/mk/spdk_blank.map - -include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/module/bdev/pmem/bdev_pmem.c b/module/bdev/pmem/bdev_pmem.c deleted file mode 100644 index 6026fb3b2..000000000 --- a/module/bdev/pmem/bdev_pmem.c +++ /dev/null @@ -1,412 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright (C) 2017 Intel Corporation. - * All rights reserved. - */ - -#include "spdk/string.h" -#include "spdk/likely.h" -#include "spdk/util.h" -#include "spdk/rpc.h" -#include "spdk/bdev_module.h" -#include "spdk/log.h" -#include "spdk/config.h" - -#include "bdev_pmem.h" -#include "libpmemblk.h" - -struct pmem_disk { - struct spdk_bdev disk; - PMEMblkpool *pool; - char pmem_file[NAME_MAX]; - TAILQ_ENTRY(pmem_disk) tailq; -}; - -static TAILQ_HEAD(, pmem_disk) g_pmem_disks = TAILQ_HEAD_INITIALIZER(g_pmem_disks); - -static int bdev_pmem_initialize(void); -static void bdev_pmem_finish(void); - -static struct spdk_bdev_module pmem_if = { - .name = "pmem", - .module_init = bdev_pmem_initialize, - .module_fini = bdev_pmem_finish, - .async_fini = true, - -}; - -SPDK_BDEV_MODULE_REGISTER(pmem, &pmem_if) - -typedef int(*spdk_bdev_pmem_io_request)(PMEMblkpool *pbp, void *buf, long long blockno); - -static int -_bdev_pmem_submit_io_read(PMEMblkpool *pbp, void *buf, long long blockno) -{ - return pmemblk_read(pbp, buf, blockno); -} - -static int -_bdev_pmem_submit_io_write(PMEMblkpool *pbp, void *buf, long long blockno) -{ - return pmemblk_write(pbp, buf, blockno); -} - -static int -bdev_pmem_destruct(void *ctx) -{ - struct pmem_disk *pdisk = ctx; - - TAILQ_REMOVE(&g_pmem_disks, pdisk, tailq); - free(pdisk->disk.name); - pmemblk_close(pdisk->pool); - free(pdisk); - - return 0; -} - -static int -bdev_pmem_check_iov_len(struct iovec *iovs, int iovcnt, size_t num_blocks, uint32_t block_size) -{ - size_t nbytes = num_blocks * block_size; - int i; - - for (i = 0; i < iovcnt; i++) { - if (spdk_unlikely(iovs[i].iov_base == NULL && iovs[i].iov_len != 0)) { - return -1; - } - - if (nbytes <= iovs[i].iov_len) { - return 0; - } - - if (spdk_unlikely(iovs[i].iov_len % block_size != 0)) { - return -1; - } - - nbytes -= iovs[i].iov_len; - } - - return -1; -} - -static void -bdev_pmem_submit_io(struct spdk_bdev_io *bdev_io, struct pmem_disk *pdisk, - struct spdk_io_channel *ch, - struct iovec *iov, int iovcnt, - uint64_t offset_blocks, size_t num_blocks, uint32_t block_size, - spdk_bdev_pmem_io_request fn) -{ - int rc; - size_t nbytes, offset, len; - enum spdk_bdev_io_status status; - - rc = bdev_pmem_check_iov_len(iov, iovcnt, num_blocks, block_size); - if (rc) { - status = SPDK_BDEV_IO_STATUS_FAILED; - goto end; - } - - SPDK_DEBUGLOG(bdev_pmem, "io %lu bytes from offset %#lx\n", - num_blocks, offset_blocks); - - for (nbytes = num_blocks * block_size; nbytes > 0; iov++) { - len = spdk_min(iov->iov_len, nbytes); - nbytes -= len; - - offset = 0; - while (offset != len) { - rc = fn(pdisk->pool, iov->iov_base + offset, offset_blocks); - if (rc != 0) { - SPDK_ERRLOG("pmemblk io failed: %d (%s)\n", errno, pmemblk_errormsg()); - status = SPDK_BDEV_IO_STATUS_FAILED; - goto end; - } - - offset += block_size; - offset_blocks++; - } - } - - assert(num_blocks == offset_blocks - bdev_io->u.bdev.offset_blocks); - status = SPDK_BDEV_IO_STATUS_SUCCESS; -end: - - spdk_bdev_io_complete(bdev_io, status); -} - -static void -bdev_pmem_write_zeros(struct spdk_bdev_io *bdev_io, struct pmem_disk *pdisk, - struct spdk_io_channel *ch, uint64_t offset_blocks, - uint64_t num_blocks, uint32_t block_size) -{ - int rc; - enum spdk_bdev_io_status status = SPDK_BDEV_IO_STATUS_SUCCESS; - - while (num_blocks > 0) { - rc = pmemblk_set_zero(pdisk->pool, offset_blocks); - if (rc != 0) { - SPDK_ERRLOG("pmemblk_set_zero failed: %d (%s)\n", errno, pmemblk_errormsg()); - status = SPDK_BDEV_IO_STATUS_FAILED; - break; - } - offset_blocks++; - num_blocks--; - } - spdk_bdev_io_complete(bdev_io, status); -} - -static void -bdev_pmem_io_get_buf_cb(struct spdk_io_channel *channel, struct spdk_bdev_io *bdev_io, - bool success) -{ - if (!success) { - spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); - return; - } - - bdev_pmem_submit_io(bdev_io, - bdev_io->bdev->ctxt, - channel, - bdev_io->u.bdev.iovs, - bdev_io->u.bdev.iovcnt, - bdev_io->u.bdev.offset_blocks, - bdev_io->u.bdev.num_blocks, - bdev_io->bdev->blocklen, - _bdev_pmem_submit_io_read); -} - -static void -bdev_pmem_submit_request(struct spdk_io_channel *channel, struct spdk_bdev_io *bdev_io) -{ - switch (bdev_io->type) { - case SPDK_BDEV_IO_TYPE_READ: - spdk_bdev_io_get_buf(bdev_io, bdev_pmem_io_get_buf_cb, - bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen); - break; - case SPDK_BDEV_IO_TYPE_WRITE: - bdev_pmem_submit_io(bdev_io, - bdev_io->bdev->ctxt, - channel, - bdev_io->u.bdev.iovs, - bdev_io->u.bdev.iovcnt, - bdev_io->u.bdev.offset_blocks, - bdev_io->u.bdev.num_blocks, - bdev_io->bdev->blocklen, - _bdev_pmem_submit_io_write); - break; - case SPDK_BDEV_IO_TYPE_UNMAP: - case SPDK_BDEV_IO_TYPE_WRITE_ZEROES: - bdev_pmem_write_zeros(bdev_io, - bdev_io->bdev->ctxt, - channel, - bdev_io->u.bdev.offset_blocks, - bdev_io->u.bdev.num_blocks, - bdev_io->bdev->blocklen); - break; - case SPDK_BDEV_IO_TYPE_FLUSH: - case SPDK_BDEV_IO_TYPE_RESET: - spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_SUCCESS); - break; - default: - spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); - } -} - -static bool -bdev_pmem_io_type_supported(void *ctx, enum spdk_bdev_io_type io_type) -{ - switch (io_type) { - case SPDK_BDEV_IO_TYPE_READ: - case SPDK_BDEV_IO_TYPE_WRITE: - case SPDK_BDEV_IO_TYPE_RESET: - case SPDK_BDEV_IO_TYPE_UNMAP: - case SPDK_BDEV_IO_TYPE_WRITE_ZEROES: - case SPDK_BDEV_IO_TYPE_FLUSH: - return true; - default: - return false; - } -} - -static struct spdk_io_channel * -bdev_pmem_get_io_channel(void *ctx) -{ - return spdk_get_io_channel(&g_pmem_disks); -} - -static int -bdev_pmem_dump_info_json(void *ctx, struct spdk_json_write_ctx *w) -{ - struct pmem_disk *pdisk = ctx; - - spdk_json_write_named_object_begin(w, "pmem"); - spdk_json_write_named_string(w, "pmem_file", pdisk->pmem_file); - spdk_json_write_object_end(w); - - return 0; -} - -static int -bdev_pmem_create_cb(void *io_device, void *ctx_buf) -{ - return 0; -} - -static void -bdev_pmem_destroy_cb(void *io_device, void *ctx_buf) -{ -} - -static void -bdev_pmem_write_config_json(struct spdk_bdev *bdev, struct spdk_json_write_ctx *w) -{ - struct pmem_disk *disk = bdev->ctxt; - - spdk_json_write_object_begin(w); - - spdk_json_write_named_string(w, "method", "bdev_pmem_create"); - - spdk_json_write_named_object_begin(w, "params"); - spdk_json_write_named_string(w, "name", bdev->name); - spdk_json_write_named_string(w, "pmem_file", disk->pmem_file); - spdk_json_write_object_end(w); - - spdk_json_write_object_end(w); -} - -static const struct spdk_bdev_fn_table pmem_fn_table = { - .destruct = bdev_pmem_destruct, - .submit_request = bdev_pmem_submit_request, - .io_type_supported = bdev_pmem_io_type_supported, - .get_io_channel = bdev_pmem_get_io_channel, - .dump_info_json = bdev_pmem_dump_info_json, - .write_config_json = bdev_pmem_write_config_json, -}; - -int -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 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; - } - - pdisk = calloc(1, sizeof(*pdisk)); - if (!pdisk) { - return -ENOMEM; - } - - snprintf(pdisk->pmem_file, sizeof(pdisk->pmem_file), "%s", pmem_file); - pdisk->pool = pmemblk_open(pmem_file, 0); - if (!pdisk->pool) { - SPDK_ERRLOG("Opening pmem pool '%s' failed: %d\n", pmem_file, errno); - free(pdisk); - return -errno; - } - - block_size = pmemblk_bsize(pdisk->pool); - num_blocks = pmemblk_nblock(pdisk->pool); - - if (block_size == 0) { - SPDK_ERRLOG("Block size must be more than 0 bytes\n"); - pmemblk_close(pdisk->pool); - free(pdisk); - return -EINVAL; - } - - if (num_blocks == 0) { - SPDK_ERRLOG("Disk must be more than 0 blocks\n"); - pmemblk_close(pdisk->pool); - free(pdisk); - return -EINVAL; - } - - pdisk->disk.name = strdup(name); - if (!pdisk->disk.name) { - pmemblk_close(pdisk->pool); - free(pdisk); - return -ENOMEM; - } - - pdisk->disk.product_name = "pmemblk disk"; - pdisk->disk.write_cache = 0; - pdisk->disk.blocklen = block_size; - pdisk->disk.blockcnt = num_blocks; - - pdisk->disk.ctxt = pdisk; - pdisk->disk.fn_table = &pmem_fn_table; - pdisk->disk.module = &pmem_if; - - rc = spdk_bdev_register(&pdisk->disk); - if (rc) { - pmemblk_close(pdisk->pool); - free(pdisk->disk.name); - free(pdisk); - return rc; - } - - TAILQ_INSERT_TAIL(&g_pmem_disks, pdisk, tailq); - - *bdev = &pdisk->disk; - - return 0; -} - -void -delete_pmem_disk(const char *name, spdk_delete_pmem_complete cb_fn, void *cb_arg) -{ - int rc; - - rc = spdk_bdev_unregister_by_name(name, &pmem_if, cb_fn, cb_arg); - if (rc != 0) { - cb_fn(cb_arg, rc); - } -} - -SPDK_LOG_DEPRECATION_REGISTER(bdev_pmem, "PMDK libpmemblk bdev_pmem integration", "SPDK 23.05", 0); - -static int -bdev_pmem_initialize(void) -{ - const char *err = pmemblk_check_version(PMEMBLK_MAJOR_VERSION, PMEMBLK_MINOR_VERSION); - - SPDK_LOG_DEPRECATED(bdev_pmem); - if (err != NULL) { - SPDK_ERRLOG("Invalid libpmemblk version (expected %d.%d): %s\n", PMEMBLK_MAJOR_VERSION, - PMEMBLK_MINOR_VERSION, err); - return -1; - } - -#ifdef SPDK_CONFIG_DEBUG - setenv("PMEMBLK_LOG_LEVEL", "1", 1); -#endif - spdk_io_device_register(&g_pmem_disks, bdev_pmem_create_cb, bdev_pmem_destroy_cb, 0, "pmem_bdev"); - - return 0; - -} - -static void -bdev_pmem_finish_done(void *io_device) -{ - spdk_bdev_module_fini_done(); -} - -static void -bdev_pmem_finish(void) -{ - spdk_io_device_unregister(&g_pmem_disks, bdev_pmem_finish_done); -} - -SPDK_LOG_REGISTER_COMPONENT(bdev_pmem) diff --git a/module/bdev/pmem/bdev_pmem.h b/module/bdev/pmem/bdev_pmem.h deleted file mode 100644 index d6320c84f..000000000 --- a/module/bdev/pmem/bdev_pmem.h +++ /dev/null @@ -1,36 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright (C) 2017 Intel Corporation. - * All rights reserved. - */ - -#ifndef SPDK_BDEV_PMEM_H -#define SPDK_BDEV_PMEM_H - -#include "spdk/bdev.h" - -typedef void (*spdk_delete_pmem_complete)(void *cb_arg, int bdeverrno); - -/** - * Create new pmem bdev. - * - * \param pmem_file Pointer to pmem pool file. - * \param name Bdev name. - * \param bdev output parameter for bdev when operation is successful. - * \return 0 on success. - * -EIO if pool check failed - * -EINVAL if input parameters check failed - * -ENOMEM if buffer cannot be allocated - */ -int create_pmem_disk(const char *pmem_file, const char *name, struct spdk_bdev **bdev); - -/** - * Delete pmem bdev. - * - * \param name Name of pmem bdev. - * \param cb_fn Function to call after deletion. - * \param cb_arg Argument to pass to cb_fn. - */ -void delete_pmem_disk(const char *name, spdk_delete_pmem_complete cb_fn, - void *cb_arg); - -#endif /* SPDK_BDEV_PMEM_H */ diff --git a/module/bdev/pmem/bdev_pmem_rpc.c b/module/bdev/pmem/bdev_pmem_rpc.c deleted file mode 100644 index b006c19df..000000000 --- a/module/bdev/pmem/bdev_pmem_rpc.c +++ /dev/null @@ -1,293 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright (C) 2017 Intel Corporation. - * All rights reserved. - */ - -#include "bdev_pmem.h" -#include "spdk/rpc.h" -#include "spdk/util.h" -#include "spdk/string.h" -#include "libpmemblk.h" - -#include "spdk/log.h" - -struct rpc_construct_pmem { - char *pmem_file; - char *name; -}; - -static void -free_rpc_bdev_pmem_create(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}, -}; - -static void -rpc_bdev_pmem_create(struct spdk_jsonrpc_request *request, - const struct spdk_json_val *params) -{ - struct rpc_construct_pmem req = {}; - struct spdk_json_write_ctx *w; - struct spdk_bdev *bdev; - int rc; - - if (spdk_json_decode_object(params, rpc_construct_pmem_decoders, - SPDK_COUNTOF(rpc_construct_pmem_decoders), - &req)) { - SPDK_DEBUGLOG(bdev_pmem, "spdk_json_decode_object failed\n"); - spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, - "spdk_json_decode_object failed"); - goto cleanup; - } - rc = create_pmem_disk(req.pmem_file, req.name, &bdev); - if (rc != 0) { - spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc)); - goto cleanup; - } - - w = spdk_jsonrpc_begin_result(request); - spdk_json_write_string(w, spdk_bdev_get_name(bdev)); - spdk_jsonrpc_end_result(request, w); - -cleanup: - free_rpc_bdev_pmem_create(&req); -} -SPDK_RPC_REGISTER("bdev_pmem_create", rpc_bdev_pmem_create, SPDK_RPC_RUNTIME) - -struct rpc_delete_pmem { - char *name; -}; - -static void -free_rpc_delete_pmem(struct rpc_delete_pmem *req) -{ - free(req->name); -} - -static const struct spdk_json_object_decoder rpc_delete_pmem_decoders[] = { - {"name", offsetof(struct rpc_delete_pmem, name), spdk_json_decode_string}, -}; - -static void -_rpc_bdev_pmem_delete_cb(void *cb_arg, int bdeverrno) -{ - struct spdk_jsonrpc_request *request = cb_arg; - - if (bdeverrno == 0) { - spdk_jsonrpc_send_bool_response(request, true); - } else { - spdk_jsonrpc_send_error_response(request, bdeverrno, spdk_strerror(-bdeverrno)); - } -} - -static void -rpc_bdev_pmem_delete(struct spdk_jsonrpc_request *request, - const struct spdk_json_val *params) -{ - struct rpc_delete_pmem req = {NULL}; - - if (spdk_json_decode_object(params, rpc_delete_pmem_decoders, - SPDK_COUNTOF(rpc_delete_pmem_decoders), - &req)) { - SPDK_DEBUGLOG(bdev_pmem, "spdk_json_decode_object failed\n"); - spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, - "spdk_json_decode_object failed"); - goto cleanup; - } - - delete_pmem_disk(req.name, _rpc_bdev_pmem_delete_cb, request); - -cleanup: - free_rpc_delete_pmem(&req); -} -SPDK_RPC_REGISTER("bdev_pmem_delete", rpc_bdev_pmem_delete, SPDK_RPC_RUNTIME) - -struct rpc_bdev_pmem_create_pool { - char *pmem_file; - uint64_t num_blocks; - uint32_t block_size; -}; - -static const struct spdk_json_object_decoder rpc_bdev_pmem_create_pool_decoders[] = { - {"pmem_file", offsetof(struct rpc_bdev_pmem_create_pool, pmem_file), spdk_json_decode_string}, - {"num_blocks", offsetof(struct rpc_bdev_pmem_create_pool, num_blocks), spdk_json_decode_uint64}, - {"block_size", offsetof(struct rpc_bdev_pmem_create_pool, block_size), spdk_json_decode_uint32}, -}; - -static void -free_rpc_bdev_pmem_create_pool(struct rpc_bdev_pmem_create_pool *req) -{ - free(req->pmem_file); -} - -static void -rpc_bdev_pmem_create_pool(struct spdk_jsonrpc_request *request, - const struct spdk_json_val *params) -{ - struct rpc_bdev_pmem_create_pool req = {}; - uint64_t pool_size; - PMEMblkpool *pbp; - - if (spdk_json_decode_object(params, rpc_bdev_pmem_create_pool_decoders, - SPDK_COUNTOF(rpc_bdev_pmem_create_pool_decoders), - &req)) { - SPDK_DEBUGLOG(bdev_pmem, "spdk_json_decode_object failed\n"); - spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, - "spdk_json_decode_object failed"); - goto cleanup; - } - - /* libpmemblk pool has to contain at least 256 blocks */ - if (req.num_blocks < 256) { - spdk_jsonrpc_send_error_response(request, -EINVAL, - "Pmem pool num_blocks must be at least 256"); - goto cleanup; - } - - pool_size = req.num_blocks * req.block_size; - if (pool_size < PMEMBLK_MIN_POOL) { - spdk_jsonrpc_send_error_response_fmt(request, -EINVAL, - "Pmem pool size must be at least %ld", PMEMBLK_MIN_POOL); - goto cleanup; - } - - pbp = pmemblk_create(req.pmem_file, req.block_size, pool_size, 0666); - if (pbp == NULL) { - const char *msg = pmemblk_errormsg(); - - SPDK_DEBUGLOG(bdev_pmem, "pmemblk_create() failed: %s\n", msg ? msg : "(logs disabled)"); - spdk_jsonrpc_send_error_response_fmt(request, -SPDK_JSONRPC_ERROR_INVALID_PARAMS, - "pmemblk_create failed: %s", msg ? msg : "(logs disabled)"); - goto cleanup; - } - - pmemblk_close(pbp); - - spdk_jsonrpc_send_bool_response(request, true); - -cleanup: - free_rpc_bdev_pmem_create_pool(&req); -} -SPDK_RPC_REGISTER("bdev_pmem_create_pool", rpc_bdev_pmem_create_pool, SPDK_RPC_RUNTIME) - -struct rpc_bdev_pmem_get_pool_info { - char *pmem_file; -}; - -static const struct spdk_json_object_decoder rpc_bdev_pmem_get_pool_info_decoders[] = { - {"pmem_file", offsetof(struct rpc_bdev_pmem_get_pool_info, pmem_file), spdk_json_decode_string}, -}; - -static void -free_rpc_bdev_pmem_get_pool_info(struct rpc_bdev_pmem_get_pool_info *req) -{ - free(req->pmem_file); -} - -static void -rpc_bdev_pmem_get_pool_info(struct spdk_jsonrpc_request *request, - const struct spdk_json_val *params) -{ - struct rpc_bdev_pmem_get_pool_info req = {}; - struct spdk_json_write_ctx *w; - size_t num_blocks, block_size; - PMEMblkpool *pbp; - - if (spdk_json_decode_object(params, rpc_bdev_pmem_get_pool_info_decoders, - SPDK_COUNTOF(rpc_bdev_pmem_get_pool_info_decoders), - &req)) { - spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, - "spdk_json_decode_object failed"); - goto cleanup; - } - - pbp = pmemblk_open(req.pmem_file, 0); - if (pbp == NULL) { - const char *msg = pmemblk_errormsg(); - - spdk_jsonrpc_send_error_response_fmt(request, -SPDK_JSONRPC_ERROR_INVALID_PARAMS, - "pmemblk_open failed: %s", msg ? msg : "(logs disabled)"); - goto cleanup; - } - - block_size = pmemblk_bsize(pbp); - num_blocks = pmemblk_nblock(pbp); - - pmemblk_close(pbp); - - /* Check pmem pool consistency */ - if (pmemblk_check(req.pmem_file, block_size) != 1) { - const char *msg = pmemblk_errormsg(); - - spdk_jsonrpc_send_error_response_fmt(request, -SPDK_JSONRPC_ERROR_INVALID_PARAMS, - "pmemblk_check failed: %s", msg ? msg : "(logs disabled)"); - goto cleanup; - } - - w = spdk_jsonrpc_begin_result(request); - spdk_json_write_array_begin(w); - spdk_json_write_object_begin(w); - spdk_json_write_named_uint64(w, "num_blocks", num_blocks); - spdk_json_write_named_uint64(w, "block_size", block_size); - spdk_json_write_object_end(w); - spdk_json_write_array_end(w); - spdk_jsonrpc_end_result(request, w); - -cleanup: - free_rpc_bdev_pmem_get_pool_info(&req); -} -SPDK_RPC_REGISTER("bdev_pmem_get_pool_info", rpc_bdev_pmem_get_pool_info, SPDK_RPC_RUNTIME) - -struct rpc_bdev_pmem_delete_pool { - char *pmem_file; -}; - -static const struct spdk_json_object_decoder rpc_bdev_pmem_delete_pool_decoders[] = { - {"pmem_file", offsetof(struct rpc_bdev_pmem_delete_pool, pmem_file), spdk_json_decode_string}, -}; - -static void -free_rpc_bdev_pmem_delete_pool(struct rpc_bdev_pmem_delete_pool *req) -{ - free(req->pmem_file); -} - -static void -rpc_bdev_pmem_delete_pool(struct spdk_jsonrpc_request *request, - const struct spdk_json_val *params) -{ - struct rpc_bdev_pmem_delete_pool req = {}; - int rc; - - if (spdk_json_decode_object(params, rpc_bdev_pmem_delete_pool_decoders, - SPDK_COUNTOF(rpc_bdev_pmem_delete_pool_decoders), - &req)) { - spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, - "spdk_json_decode_object failed"); - goto cleanup; - } - - /* Check if file is actually pmem pool */ - rc = pmemblk_check(req.pmem_file, 0); - if (rc != 1) { - const char *msg = pmemblk_errormsg(); - - spdk_jsonrpc_send_error_response_fmt(request, -SPDK_JSONRPC_ERROR_INVALID_PARAMS, - "pmemblk_check failed: %s", msg ? msg : "(logs disabled)"); - goto cleanup; - } - - unlink(req.pmem_file); - - spdk_jsonrpc_send_bool_response(request, true); - -cleanup: - free_rpc_bdev_pmem_delete_pool(&req); -} -SPDK_RPC_REGISTER("bdev_pmem_delete_pool", rpc_bdev_pmem_delete_pool, SPDK_RPC_RUNTIME) diff --git a/python/spdk/rpc/__init__.py b/python/spdk/rpc/__init__.py index 054154468..75a0feceb 100644 --- a/python/spdk/rpc/__init__.py +++ b/python/spdk/rpc/__init__.py @@ -25,7 +25,6 @@ from . import ublk from . import notify from . import nvme from . import nvmf -from . import pmem from . import subsystem from . import trace from . import vhost diff --git a/python/spdk/rpc/bdev.py b/python/spdk/rpc/bdev.py index de882e0f2..91b46958f 100644 --- a/python/spdk/rpc/bdev.py +++ b/python/spdk/rpc/bdev.py @@ -1272,33 +1272,6 @@ def bdev_iscsi_delete(client, name): return client.call('bdev_iscsi_delete', params) -def bdev_pmem_create(client, pmem_file, name): - """Construct a libpmemblk block device. - - Args: - pmem_file: path to pmemblk pool file - name: name of block device - - Returns: - Name of created block device. - """ - params = { - 'pmem_file': pmem_file, - 'name': name - } - return client.call('bdev_pmem_create', params) - - -def bdev_pmem_delete(client, name): - """Remove pmem bdev from the system. - - Args: - name: name of pmem bdev to delete - """ - params = {'name': name} - return client.call('bdev_pmem_delete', params) - - def bdev_passthru_create(client, base_bdev_name, name): """Construct a pass-through block device. diff --git a/python/spdk/rpc/pmem.py b/python/spdk/rpc/pmem.py deleted file mode 100644 index 59a01efbf..000000000 --- a/python/spdk/rpc/pmem.py +++ /dev/null @@ -1,34 +0,0 @@ -# SPDX-License-Identifier: BSD-3-Clause -# Copyright (C) 2017 Intel Corporation. -# All rights reserved. - - -def bdev_pmem_create_pool(client, pmem_file, num_blocks, block_size): - """Create pmem pool at specified path. - Args: - pmem_file: path at which to create pmem pool - num_blocks: number of blocks for created pmem pool file - block_size: block size for pmem pool file - """ - params = {'pmem_file': pmem_file, - 'num_blocks': num_blocks, - 'block_size': block_size} - return client.call('bdev_pmem_create_pool', params) - - -def bdev_pmem_get_pool_info(client, pmem_file): - """Get details about pmem pool. - Args: - pmem_file: path to pmem pool - """ - params = {'pmem_file': pmem_file} - return client.call('bdev_pmem_get_pool_info', params) - - -def bdev_pmem_delete_pool(client, pmem_file): - """Delete pmem pool. - Args: - pmem_file: path to pmem pool - """ - params = {'pmem_file': pmem_file} - return client.call('bdev_pmem_delete_pool', params) diff --git a/python/spdk/spdkcli/ui_node.py b/python/spdk/spdkcli/ui_node.py index 2d87c5c6d..8f03a95f8 100644 --- a/python/spdk/spdkcli/ui_node.py +++ b/python/spdk/spdkcli/ui_node.py @@ -53,8 +53,7 @@ class UINode(ConfigNode): command in ["create", "delete", "delete_all", "add_initiator", "allow_any_host", "bdev_split_create", "add_lun", "iscsi_target_node_add_pg_ig_maps", "remove_target", "add_secret", - "bdev_split_delete", "bdev_pmem_delete_pool", - "bdev_pmem_create_pool", "delete_secret_all", + "bdev_split_delete", "delete_secret_all", "delete_initiator", "set_auth", "delete_secret", "iscsi_target_node_remove_pg_ig_maps", "load_config", "load_subsystem_config"]: @@ -76,7 +75,6 @@ class UIBdevs(UINode): UINullBdev(self) UIErrorBdev(self) UISplitBdev(self) - UIPmemBdev(self) UIRbdBdev(self) UIiSCSIBdev(self) UIVirtioBlkBdev(self) @@ -424,44 +422,6 @@ class UISplitBdev(UIBdev): self.get_root().bdev_split_delete(base_bdev=base_bdev) -class UIPmemBdev(UIBdev): - def __init__(self, parent): - UIBdev.__init__(self, "pmemblk", parent) - - def delete(self, name): - self.get_root().bdev_pmem_delete(name=name) - - def ui_command_bdev_pmem_create_pool(self, pmem_file, total_size, block_size): - total_size = self.ui_eval_param(total_size, "number", None) - block_size = self.ui_eval_param(block_size, "number", None) - num_blocks = int((total_size * 1024 * 1024) / block_size) - - self.get_root().bdev_pmem_create_pool(pmem_file=pmem_file, - num_blocks=num_blocks, - block_size=block_size) - - def ui_command_bdev_pmem_delete_pool(self, pmem_file): - self.get_root().bdev_pmem_delete_pool(pmem_file=pmem_file) - - def ui_command_bdev_pmem_get_pool_info(self, pmem_file): - ret = self.get_root().bdev_pmem_get_pool_info(pmem_file=pmem_file) - self.shell.log.info(json.dumps(ret, indent=2)) - - def ui_command_create(self, pmem_file, name): - ret_name = self.get_root().bdev_pmem_create(pmem_file=pmem_file, - name=name) - self.shell.log.info(ret_name) - - def ui_command_delete(self, name): - """ - Deletes pmem bdev from configuration. - - Arguments: - name - Is a unique identifier of the pmem bdev to be deleted - UUID number or name alias. - """ - self.delete(name) - - class UIRbdBdev(UIBdev): def __init__(self, parent): UIBdev.__init__(self, "rbd", parent) diff --git a/python/spdk/spdkcli/ui_root.py b/python/spdk/spdkcli/ui_root.py index 5eb4e12ad..15035414d 100644 --- a/python/spdk/spdkcli/ui_root.py +++ b/python/spdk/spdkcli/ui_root.py @@ -208,30 +208,6 @@ class UIRoot(UINode): def bdev_lvol_delete_lvstore(self, **kwargs): rpc.lvol.bdev_lvol_delete_lvstore(self.client, **kwargs) - @verbose - def bdev_pmem_create_pool(self, **kwargs): - response = rpc.pmem.bdev_pmem_create_pool(self.client, **kwargs) - return response - - @verbose - def bdev_pmem_delete_pool(self, **kwargs): - rpc.pmem.bdev_pmem_delete_pool(self.client, **kwargs) - - @verbose - def bdev_pmem_get_pool_info(self, **kwargs): - response = rpc.pmem.bdev_pmem_get_pool_info(self.client, **kwargs) - return response - - @verbose - def bdev_pmem_create(self, **kwargs): - response = rpc.bdev.bdev_pmem_create(self.client, **kwargs) - return response - - @verbose - def bdev_pmem_delete(self, **kwargs): - response = rpc.bdev.bdev_pmem_delete(self.client, **kwargs) - return response - @verbose def create_rbd_bdev(self, **kwargs): response = rpc.bdev.bdev_rbd_create(self.client, **kwargs) diff --git a/scripts/pkgdep.sh b/scripts/pkgdep.sh index f66030fc5..ebe52012d 100755 --- a/scripts/pkgdep.sh +++ b/scripts/pkgdep.sh @@ -17,7 +17,7 @@ function usage() { echo " -h --help" echo " -a --all" echo " -d --developer-tools Install tools for developers (code styling, code coverage, etc.)" - echo " -p --pmem Additional dependencies for reduce, pmdk and pmdkobj" + echo " -p --pmem Additional dependencies for reduce" echo " -f --fuse Additional dependencies for FUSE and NVMe-CUSE" echo " -R --rbd Additional dependencies for RBD" echo " -r --rdma Additional dependencies for RDMA transport in NVMe over Fabrics" diff --git a/scripts/pkgdep/debian.sh b/scripts/pkgdep/debian.sh index 038905d45..2f6784598 100755 --- a/scripts/pkgdep/debian.sh +++ b/scripts/pkgdep/debian.sh @@ -59,7 +59,6 @@ if [[ $INSTALL_PMEM == "true" ]]; then # Additional dependencies for building pmem based backends if [[ $NAME == "Ubuntu" ]] && [[ $VERSION_ID_NUM -gt 1800 ]]; then apt-get install -y libpmem-dev - apt-get install -y libpmemblk-dev apt-get install -y libpmemobj-dev fi fi diff --git a/scripts/pkgdep/rhel.sh b/scripts/pkgdep/rhel.sh index 2bc864013..868821456 100755 --- a/scripts/pkgdep/rhel.sh +++ b/scripts/pkgdep/rhel.sh @@ -150,7 +150,6 @@ if [[ $INSTALL_DEV_TOOLS == "true" ]]; then fi if [[ $INSTALL_PMEM == "true" ]]; then # Additional dependencies for building pmem based backends - yum install -y libpmemblk-devel || true yum install -y libpmemobj-devel || true fi if [[ $INSTALL_FUSE == "true" ]]; then diff --git a/scripts/pkgdep/sles.sh b/scripts/pkgdep/sles.sh index 0a044a4af..72bd61d92 100755 --- a/scripts/pkgdep/sles.sh +++ b/scripts/pkgdep/sles.sh @@ -19,7 +19,6 @@ if [[ $INSTALL_DEV_TOOLS == "true" ]]; then fi if [[ $INSTALL_PMEM == "true" ]]; then # Additional dependencies for building pmem based backends - zypper install -y libpmemblk-devel zypper install -y libpmemobj-devel fi if [[ $INSTALL_FUSE == "true" ]]; then diff --git a/scripts/rpc.py b/scripts/rpc.py index 532b4fe93..f24d4b202 100755 --- a/scripts/rpc.py +++ b/scripts/rpc.py @@ -1110,24 +1110,6 @@ if __name__ == "__main__": p.add_argument('name', help='iSCSI bdev name') p.set_defaults(func=bdev_iscsi_delete) - def bdev_pmem_create(args): - print_json(rpc.bdev.bdev_pmem_create(args.client, - pmem_file=args.pmem_file, - name=args.name)) - - p = subparsers.add_parser('bdev_pmem_create', 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=True) - p.set_defaults(func=bdev_pmem_create) - - def bdev_pmem_delete(args): - rpc.bdev.bdev_pmem_delete(args.client, - name=args.name) - - p = subparsers.add_parser('bdev_pmem_delete', help='Delete a pmem bdev') - p.add_argument('name', help='pmem bdev name') - p.set_defaults(func=bdev_pmem_delete) - def bdev_passthru_create(args): print_json(rpc.bdev.bdev_passthru_create(args.client, base_bdev_name=args.base_bdev_name, @@ -2593,36 +2575,6 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse p.add_argument('-t3', '--crdt3', help='Command Retry Delay Time 3, in units of 100 milliseconds', type=int) p.set_defaults(func=nvmf_set_crdt) - # pmem - def bdev_pmem_create_pool(args): - num_blocks = int((args.total_size * 1024 * 1024) / args.block_size) - rpc.pmem.bdev_pmem_create_pool(args.client, - pmem_file=args.pmem_file, - num_blocks=num_blocks, - block_size=args.block_size) - - p = subparsers.add_parser('bdev_pmem_create_pool', help='Create pmem pool') - p.add_argument('pmem_file', help='Path to pmemblk pool file') - p.add_argument('total_size', help='Size of pmem bdev in MB (int > 0)', type=int) - p.add_argument('block_size', help='Block size for this pmem pool', type=int) - p.set_defaults(func=bdev_pmem_create_pool) - - def bdev_pmem_get_pool_info(args): - print_dict(rpc.pmem.bdev_pmem_get_pool_info(args.client, - pmem_file=args.pmem_file)) - - p = subparsers.add_parser('bdev_pmem_get_pool_info', help='Display pmem pool info and check consistency') - p.add_argument('pmem_file', help='Path to pmemblk pool file') - p.set_defaults(func=bdev_pmem_get_pool_info) - - def bdev_pmem_delete_pool(args): - rpc.pmem.bdev_pmem_delete_pool(args.client, - pmem_file=args.pmem_file) - - p = subparsers.add_parser('bdev_pmem_delete_pool', help='Delete pmem pool') - p.add_argument('pmem_file', help='Path to pmemblk pool file') - p.set_defaults(func=bdev_pmem_delete_pool) - # subsystem def framework_get_subsystems(args): print_dict(rpc.subsystem.framework_get_subsystems(args.client)) diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh index e2e35ff29..1eb4d8741 100755 --- a/test/common/autotest_common.sh +++ b/test/common/autotest_common.sh @@ -128,8 +128,6 @@ export SPDK_TEST_IOAT export SPDK_TEST_BLOBFS : ${SPDK_TEST_VHOST_INIT=0} export SPDK_TEST_VHOST_INIT -: ${SPDK_TEST_PMDK=0} -export SPDK_TEST_PMDK : ${SPDK_TEST_LVOL=0} export SPDK_TEST_LVOL : ${SPDK_TEST_VBDEV_COMPRESS=0} @@ -439,11 +437,6 @@ function get_config_params() { config_params+=' --with-nvme-cuse' fi - # for options with both dependencies and a test flag, set them here - if [ -f /usr/include/libpmemblk.h ] && [ $SPDK_TEST_PMDK -eq 1 ]; then - config_params+=' --with-pmdk' - fi - if [ -f /usr/include/libpmem.h ] && [ $SPDK_TEST_VBDEV_COMPRESS -eq 1 ]; then if ge "$(nasm --version | awk '{print $3}')" 2.14 && [[ $SPDK_TEST_ISAL -eq 1 ]]; then config_params+=' --with-vbdev-compress --with-dpdk-compressdev' diff --git a/test/spdkcli/match_files/spdkcli_raid.test.match b/test/spdkcli/match_files/spdkcli_raid.test.match index ad095f75f..bc684a0f7 100644 --- a/test/spdkcli/match_files/spdkcli_raid.test.match +++ b/test/spdkcli/match_files/spdkcli_raid.test.match @@ -8,7 +8,6 @@ o- bdevs ....................................................................... | o- Malloc2 $(S) [$(UUID), Size=8.0M, Claimed] o- null ............................................................................................................... [Bdevs: 0] o- nvme ............................................................................................................... [Bdevs: 0] - o- pmemblk ............................................................................................................ [Bdevs: 0] o- raid_volume ........................................................................................................ [Bdevs: 1] | o- testraid $(S) [Size=16.0M, Not claimed] o- rbd ................................................................................................................ [Bdevs: 0] diff --git a/test/spdkcli/match_files/spdkcli_vhost.test.match b/test/spdkcli/match_files/spdkcli_vhost.test.match index faed2b99b..65e2bdd0b 100644 --- a/test/spdkcli/match_files/spdkcli_vhost.test.match +++ b/test/spdkcli/match_files/spdkcli_vhost.test.match @@ -23,7 +23,6 @@ o- / ........................................................................... | o- nvme ............................................................................................................. [Bdevs: 1] $(OPT) | | o- Nvme0n1 $(S) [Size=$(S), Claimed] $(OPX) | | o- Nvme0n1 $(S) [$(UUID), Size=$(S), Claimed] - | o- pmemblk .......................................................................................................... [Bdevs: 0] | o- raid_volume ...................................................................................................... [Bdevs: 0] | o- rbd .............................................................................................................. [Bdevs: 0] | o- split_disk ....................................................................................................... [Bdevs: 4] diff --git a/test/spdkcli/match_files/spdkcli_virtio_pci.test.match b/test/spdkcli/match_files/spdkcli_virtio_pci.test.match index 26d00e168..934133745 100644 --- a/test/spdkcli/match_files/spdkcli_virtio_pci.test.match +++ b/test/spdkcli/match_files/spdkcli_virtio_pci.test.match @@ -8,7 +8,6 @@ o- bdevs ....................................................................... | o- Malloc1 ........................................................................................... [Size=32.0M, Not claimed] o- null ............................................................................................................... [Bdevs: 0] o- nvme ............................................................................................................... [Bdevs: 0] - o- pmemblk ............................................................................................................ [Bdevs: 0] o- raid_volume ........................................................................................................ [Bdevs: 0] o- rbd ................................................................................................................ [Bdevs: 0] o- split_disk ......................................................................................................... [Bdevs: 0]