From aa7a13afc7fbc0663c32833e4a5b3b3606d86fca Mon Sep 17 00:00:00 2001 From: paul luse Date: Wed, 5 Feb 2020 17:10:05 +0000 Subject: [PATCH] global: rename copy to accel The copy engine library, modules and public APIs have been renamed. Use of the word `copy` has been replaced with the word `accel` short for accelerator in preparation for adding new capabilities in the future. Additionally, APIs for what was previously called the `memcpy` engine have been renamed to identify the engine as a software accelerator. Signed-off-by: paul luse Change-Id: Ia607aa718416146fbba1e6792b8de0f66bd8a5de Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/576 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto Reviewed-by: Tomasz Zawadzki --- CHANGELOG.md | 7 + app/iscsi_tgt/Makefile | 4 +- app/nvmf_tgt/Makefile | 4 +- app/spdk_tgt/Makefile | 4 +- app/vhost/Makefile | 4 +- doc/jsonrpc.md | 6 +- examples/bdev/fio_plugin/Makefile | 4 +- examples/bdev/fio_plugin/fio_plugin.c | 2 +- examples/bdev/hello_world/Makefile | 4 +- examples/blob/cli/Makefile | 4 +- examples/blob/hello_world/Makefile | 4 +- examples/nvmf/nvmf/Makefile | 4 +- .../spdk/{copy_engine.h => accel_engine.h} | 66 ++-- .../{copy_engine.h => accel_engine.h} | 32 +- lib/Makefile | 2 +- lib/{copy => accel}/Makefile | 4 +- lib/accel/accel_engine.c | 320 ++++++++++++++++++ lib/copy/copy_engine.c | 318 ----------------- lib/rocksdb/spdk.rocksdb.mk | 4 +- mk/spdk.lib_deps.mk | 12 +- mk/spdk.modules.mk | 4 +- module/Makefile | 4 +- module/{copy => accel}/Makefile | 0 module/{copy => accel}/ioat/Makefile | 4 +- .../ioat/accel_engine_ioat.c} | 98 +++--- .../ioat/accel_engine_ioat.h} | 10 +- .../ioat/accel_engine_ioat_rpc.c} | 35 +- module/bdev/malloc/bdev_malloc.c | 28 +- module/event/subsystems/Makefile | 4 +- .../event/subsystems/{copy => accel}/Makefile | 4 +- .../subsystems/{copy/copy.c => accel/accel.c} | 24 +- module/event/subsystems/bdev/bdev.c | 2 +- scripts/config_converter.py | 4 +- scripts/rpc.py | 11 +- scripts/rpc/ioat.py | 7 +- test/app/bdev_svc/Makefile | 4 +- test/bdev/bdevio/Makefile | 4 +- test/bdev/bdevio/bdevio.c | 2 +- test/bdev/bdevperf/Makefile | 4 +- test/bdev/bdevperf/bdevperf.c | 2 +- test/blobfs/fuse/Makefile | 4 +- test/blobfs/mkfs/Makefile | 4 +- test/config_converter/spdk_config.json | 2 +- test/config_converter/spdk_config_virtio.json | 2 +- test/json_config/alias_rpc/conf.json | 2 +- test/json_config/clear_config.py | 2 +- .../unit/lib/event/subsystem.c/subsystem_ut.c | 6 +- test/vhost/fiotest/conf.json | 2 +- test/vhost/other/conf.json | 2 +- 49 files changed, 551 insertions(+), 539 deletions(-) rename include/spdk/{copy_engine.h => accel_engine.h} (61%) rename include/spdk_internal/{copy_engine.h => accel_engine.h} (79%) rename lib/{copy => accel}/Makefile (97%) create mode 100644 lib/accel/accel_engine.c delete mode 100644 lib/copy/copy_engine.c rename module/{copy => accel}/Makefile (100%) rename module/{copy => accel}/ioat/Makefile (95%) rename module/{copy/ioat/copy_engine_ioat.c => accel/ioat/accel_engine_ioat.c} (77%) rename module/{copy/ioat/copy_engine_ioat.h => accel/ioat/accel_engine_ioat.h} (87%) rename module/{copy/ioat/copy_engine_ioat_rpc.c => accel/ioat/accel_engine_ioat_rpc.c} (71%) rename module/event/subsystems/{copy => accel}/Makefile (97%) rename module/event/subsystems/{copy/copy.c => accel/accel.c} (77%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61a1cfc97..27feca7f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ ## v20.04: (Upcoming Release) +### copy + +The copy engine library, modules and public APIs have been renamed. Use of the word `copy` +has been replaced with the word `accel` short for accelerator in preparation for adding new +capabilities in the future. Additionally, APIs for what was previously called the `memcpy` +engine have been renamed to identify the engine as a software accelerator. + ### vmd A new function, `spdk_vmd_fini`, has been added. It releases all resources acquired by the VMD diff --git a/app/iscsi_tgt/Makefile b/app/iscsi_tgt/Makefile index bf3ea738c..0cb3c4d32 100644 --- a/app/iscsi_tgt/Makefile +++ b/app/iscsi_tgt/Makefile @@ -44,8 +44,8 @@ CFLAGS += -I$(SPDK_ROOT_DIR)/lib C_SRCS := iscsi_tgt.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_iscsi event_net event_scsi event_vmd event -SPDK_LIB_LIST += jsonrpc json rpc bdev_rpc bdev iscsi scsi copy trace conf +SPDK_LIB_LIST += event_bdev event_accel event_iscsi event_net event_scsi event_vmd event +SPDK_LIB_LIST += jsonrpc json rpc bdev_rpc bdev iscsi scsi accel trace conf SPDK_LIB_LIST += thread util log log_rpc app_rpc net sock notify ifeq ($(SPDK_ROOT_DIR)/lib/env_dpdk,$(CONFIG_ENV)) diff --git a/app/nvmf_tgt/Makefile b/app/nvmf_tgt/Makefile index 3334b765b..eed24a55c 100644 --- a/app/nvmf_tgt/Makefile +++ b/app/nvmf_tgt/Makefile @@ -40,8 +40,8 @@ APP = nvmf_tgt C_SRCS := nvmf_main.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_nvmf event_net event_vmd -SPDK_LIB_LIST += nvmf event log trace conf thread util bdev copy rpc jsonrpc json net sock +SPDK_LIB_LIST += event_bdev event_accel event_nvmf event_net event_vmd +SPDK_LIB_LIST += nvmf event log trace conf thread util bdev accel rpc jsonrpc json net sock SPDK_LIB_LIST += app_rpc log_rpc bdev_rpc notify ifeq ($(SPDK_ROOT_DIR)/lib/env_dpdk,$(CONFIG_ENV)) diff --git a/app/spdk_tgt/Makefile b/app/spdk_tgt/Makefile index eb9dd2e67..4f6eef013 100644 --- a/app/spdk_tgt/Makefile +++ b/app/spdk_tgt/Makefile @@ -50,8 +50,8 @@ endif endif endif -SPDK_LIB_LIST += event_bdev event_copy event_iscsi event_net event_scsi event_nvmf event_vmd event -SPDK_LIB_LIST += nvmf trace log conf thread util bdev iscsi scsi copy rpc jsonrpc json +SPDK_LIB_LIST += event_bdev event_accel event_iscsi event_net event_scsi event_nvmf event_vmd event +SPDK_LIB_LIST += nvmf trace log conf thread util bdev iscsi scsi accel rpc jsonrpc json SPDK_LIB_LIST += app_rpc log_rpc bdev_rpc net sock notify ifeq ($(SPDK_ROOT_DIR)/lib/env_dpdk,$(CONFIG_ENV)) diff --git a/app/vhost/Makefile b/app/vhost/Makefile index f4b6275cf..2106a23d3 100644 --- a/app/vhost/Makefile +++ b/app/vhost/Makefile @@ -46,8 +46,8 @@ ifeq ($(CONFIG_VHOST_INTERNAL_LIB),y) SPDK_LIB_LIST += rte_vhost endif -SPDK_LIB_LIST += event_bdev event_copy event_net event_scsi event_vmd event -SPDK_LIB_LIST += jsonrpc json rpc bdev_rpc bdev scsi copy trace conf +SPDK_LIB_LIST += event_bdev event_accel event_net event_scsi event_vmd event +SPDK_LIB_LIST += jsonrpc json rpc bdev_rpc bdev scsi accel trace conf SPDK_LIB_LIST += thread util log log_rpc app_rpc SPDK_LIB_LIST += event_nbd nbd net sock notify diff --git a/doc/jsonrpc.md b/doc/jsonrpc.md index 08c30a0fb..d52450356 100644 --- a/doc/jsonrpc.md +++ b/doc/jsonrpc.md @@ -279,7 +279,7 @@ Example response: "framework_get_subsystems", "framework_monitor_context_switch", "spdk_kill_instance", - "ioat_scan_copy_engine", + "ioat_scan_accel_engine", "bdev_virtio_attach_controller", "bdev_virtio_scsi_get_devices", "bdev_virtio_detach_controller", @@ -349,7 +349,7 @@ Example response: "id": 1, "result": [ { - "subsystem": "copy", + "subsystem": "accel", "depends_on": [] }, { @@ -365,7 +365,7 @@ Example response: { "subsystem": "bdev", "depends_on": [ - "copy" + "accel" ] }, { diff --git a/examples/bdev/fio_plugin/Makefile b/examples/bdev/fio_plugin/Makefile index fd1345d46..89e996866 100644 --- a/examples/bdev/fio_plugin/Makefile +++ b/examples/bdev/fio_plugin/Makefile @@ -43,7 +43,7 @@ CFLAGS += -I$(CONFIG_FIO_SOURCE_DIR) LDFLAGS += -shared -rdynamic -Wl,-z,nodelete SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += thread util bdev bdev_rpc conf copy rpc jsonrpc json log sock trace notify -SPDK_LIB_LIST += event event_bdev event_copy event_vmd +SPDK_LIB_LIST += thread util bdev bdev_rpc conf accel rpc jsonrpc json log sock trace notify +SPDK_LIB_LIST += event event_bdev event_accel event_vmd include $(SPDK_ROOT_DIR)/mk/spdk.app.mk diff --git a/examples/bdev/fio_plugin/fio_plugin.c b/examples/bdev/fio_plugin/fio_plugin.c index 566403f44..c45ee330d 100644 --- a/examples/bdev/fio_plugin/fio_plugin.c +++ b/examples/bdev/fio_plugin/fio_plugin.c @@ -34,7 +34,7 @@ #include "spdk/stdinc.h" #include "spdk/bdev.h" -#include "spdk/copy_engine.h" +#include "spdk/accel_engine.h" #include "spdk/conf.h" #include "spdk/env.h" #include "spdk/thread.h" diff --git a/examples/bdev/hello_world/Makefile b/examples/bdev/hello_world/Makefile index db2369546..dc26f45ed 100644 --- a/examples/bdev/hello_world/Makefile +++ b/examples/bdev/hello_world/Makefile @@ -38,7 +38,7 @@ APP = hello_bdev C_SRCS := hello_bdev.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_vmd -SPDK_LIB_LIST += bdev_rpc bdev copy event thread util conf trace log jsonrpc json rpc sock notify +SPDK_LIB_LIST += event_bdev event_accel event_vmd +SPDK_LIB_LIST += bdev_rpc bdev accel event thread util conf trace log jsonrpc json rpc sock notify include $(SPDK_ROOT_DIR)/mk/spdk.app.mk diff --git a/examples/blob/cli/Makefile b/examples/blob/cli/Makefile index 97091ddef..5f1ff09b5 100644 --- a/examples/blob/cli/Makefile +++ b/examples/blob/cli/Makefile @@ -39,8 +39,8 @@ C_SRCS := blobcli.c # Don't link bdev_lvol in blobcli - otherwise this utility cannot operate on an lvolstore SPDK_LIB_LIST = $(filter-out bdev_lvol,$(ALL_MODULES_LIST)) -SPDK_LIB_LIST += event_bdev event_copy event_vmd -SPDK_LIB_LIST += bdev copy event thread util conf trace \ +SPDK_LIB_LIST += event_bdev event_accel event_vmd +SPDK_LIB_LIST += bdev accel event thread util conf trace \ log jsonrpc json rpc sock notify include $(SPDK_ROOT_DIR)/mk/spdk.app.mk diff --git a/examples/blob/hello_world/Makefile b/examples/blob/hello_world/Makefile index b252bffc4..b0534420b 100644 --- a/examples/blob/hello_world/Makefile +++ b/examples/blob/hello_world/Makefile @@ -38,8 +38,8 @@ APP = hello_blob C_SRCS := hello_blob.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_vmd -SPDK_LIB_LIST += bdev copy event thread util conf trace \ +SPDK_LIB_LIST += event_bdev event_accel event_vmd +SPDK_LIB_LIST += bdev accel event thread util conf trace \ log jsonrpc json rpc sock notify include $(SPDK_ROOT_DIR)/mk/spdk.app.mk diff --git a/examples/nvmf/nvmf/Makefile b/examples/nvmf/nvmf/Makefile index 49030250f..a2574bde2 100644 --- a/examples/nvmf/nvmf/Makefile +++ b/examples/nvmf/nvmf/Makefile @@ -39,8 +39,8 @@ APP := nvmf C_SRCS := nvmf.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += nvmf thread util bdev conf copy rpc jsonrpc json log sock trace notify -SPDK_LIB_LIST += event event_bdev event_copy event_vmd +SPDK_LIB_LIST += nvmf thread util bdev conf accel rpc jsonrpc json log sock trace notify +SPDK_LIB_LIST += event event_bdev event_accel event_vmd ifeq ($(CONFIG_FC),y) ifneq ($(strip $(CONFIG_FC_PATH)),) diff --git a/include/spdk/copy_engine.h b/include/spdk/accel_engine.h similarity index 61% rename from include/spdk/copy_engine.h rename to include/spdk/accel_engine.h index 06dc15604..a5bd37e30 100644 --- a/include/spdk/copy_engine.h +++ b/include/spdk/accel_engine.h @@ -32,11 +32,11 @@ */ /** \file - * Memory copy offload engine abstraction layer + * Acceleration engine abstraction layer */ -#ifndef SPDK_COPY_ENGINE_H -#define SPDK_COPY_ENGINE_H +#ifndef SPDK_ACCEL_ENGINE_H +#define SPDK_ACCEL_ENGINE_H #include "spdk/stdinc.h" @@ -45,66 +45,66 @@ extern "C" { #endif /** - * Copy operation callback. + * Acceleration operation callback. * - * \param ref 'copy_req' passed to the corresponding spdk_copy_submit() call. + * \param ref 'accel_req' passed to the corresponding spdk_accel_submit* call. * \param status 0 if it completed successfully, or negative errno if it failed. */ -typedef void (*spdk_copy_completion_cb)(void *ref, int status); +typedef void (*spdk_accel_completion_cb)(void *ref, int status); /** - * Copy engine finish callback. + * Acceleration engine finish callback. * * \param cb_arg Callback argument. */ -typedef void (*spdk_copy_fini_cb)(void *cb_arg); +typedef void (*spdk_accel_fini_cb)(void *cb_arg); struct spdk_io_channel; -struct spdk_copy_task; +struct spdk_accel_task; /** - * Initialize the copy engine. + * Initialize the acceleration engine. * * \return 0 on success. */ -int spdk_copy_engine_initialize(void); +int spdk_accel_engine_initialize(void); /** - * Close the copy engine. + * Close the acceleration engine. * * \param cb_fn Called when the close operation completes. * \param cb_arg Argument passed to the callback function. */ -void spdk_copy_engine_finish(spdk_copy_fini_cb cb_fn, void *cb_arg); +void spdk_accel_engine_finish(spdk_accel_fini_cb cb_fn, void *cb_arg); /** - * Get the configuration for the copy engine. + * Get the configuration for the acceleration engine. * * \param fp The pointer to a file that will be written to the configuration. */ -void spdk_copy_engine_config_text(FILE *fp); +void spdk_accel_engine_config_text(FILE *fp); /** - * Close the copy engine module and perform any necessary cleanup. + * Close the acceleration engine module and perform any necessary cleanup. */ -void spdk_copy_engine_module_finish(void); +void spdk_accel_engine_module_finish(void); /** - * Get the I/O channel registered on the copy engine. + * Get the I/O channel registered on the acceleration engine. * * This I/O channel is used to submit copy request. * * \return a pointer to the I/O channel on success, or NULL on failure. */ -struct spdk_io_channel *spdk_copy_engine_get_io_channel(void); +struct spdk_io_channel *spdk_accel_engine_get_io_channel(void); /** * Submit a copy request. * - * \param copy_req Copy request task. - * \param ch I/O channel to submit request to the copy engine. This channel can - * be obtained by the function spdk_copy_engine_get_io_channel(). + * \param accel_req Accel request task. + * \param ch I/O channel to submit request to the accel engine. This channel can + * be obtained by the function spdk_accel_engine_get_io_channel(). * \param dst Destination to copy to. * \param src Source to copy from. * \param nbytes Length in bytes to copy. @@ -112,33 +112,33 @@ struct spdk_io_channel *spdk_copy_engine_get_io_channel(void); * * \return 0 on success, negative errno on failure. */ -int spdk_copy_submit(struct spdk_copy_task *copy_req, struct spdk_io_channel *ch, void *dst, - void *src, uint64_t nbytes, spdk_copy_completion_cb cb); +int spdk_accel_submit_copy(struct spdk_accel_task *accel_req, struct spdk_io_channel *ch, void *dst, + void *src, uint64_t nbytes, spdk_accel_completion_cb cb); /** * Submit a fill request. * * This operation will fill the destination buffer with the specified value. * - * \param copy_req Copy request task. - * \param ch I/O channel to submit request to the copy engine. This channel can - * be obtained by the function spdk_copy_engine_get_io_channel(). + * \param accel_req Accel request task. + * \param ch I/O channel to submit request to the accel engine. This channel can + * be obtained by the function spdk_accel_engine_get_io_channel(). * \param dst Destination to fill. * \param fill Constant byte to fill to the destination. * \param nbytes Length in bytes to fill. - * \param cb Called when this copy operation completes. + * \param cb Called when this fill operation completes. * * \return 0 on success, negative errno on failure. */ -int spdk_copy_submit_fill(struct spdk_copy_task *copy_req, struct spdk_io_channel *ch, - void *dst, uint8_t fill, uint64_t nbytes, spdk_copy_completion_cb cb); +int spdk_accel_submit_fill(struct spdk_accel_task *accel_req, struct spdk_io_channel *ch, + void *dst, uint8_t fill, uint64_t nbytes, spdk_accel_completion_cb cb); /** - * Get the size of copy task. + * Get the size of an acceleration task. * - * \return the size of copy task. + * \return the size of acceleration task. */ -size_t spdk_copy_task_size(void); +size_t spdk_accel_task_size(void); #ifdef __cplusplus } diff --git a/include/spdk_internal/copy_engine.h b/include/spdk_internal/accel_engine.h similarity index 79% rename from include/spdk_internal/copy_engine.h rename to include/spdk_internal/accel_engine.h index 6b8a13c41..f35b1a0ee 100644 --- a/include/spdk_internal/copy_engine.h +++ b/include/spdk_internal/accel_engine.h @@ -31,28 +31,28 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef SPDK_INTERNAL_COPY_ENGINE_H -#define SPDK_INTERNAL_COPY_ENGINE_H +#ifndef SPDK_INTERNAL_ACCEL_ENGINE_H +#define SPDK_INTERNAL_ACCEL_ENGINE_H #include "spdk/stdinc.h" -#include "spdk/copy_engine.h" +#include "spdk/accel_engine.h" #include "spdk/queue.h" -struct spdk_copy_task { - spdk_copy_completion_cb cb; - uint8_t offload_ctx[0]; +struct spdk_accel_task { + spdk_accel_completion_cb cb; + uint8_t offload_ctx[0]; }; -struct spdk_copy_engine { +struct spdk_accel_engine { int (*copy)(void *cb_arg, struct spdk_io_channel *ch, void *dst, void *src, - uint64_t nbytes, spdk_copy_completion_cb cb); + uint64_t nbytes, spdk_accel_completion_cb cb); int (*fill)(void *cb_arg, struct spdk_io_channel *ch, void *dst, uint8_t fill, - uint64_t nbytes, spdk_copy_completion_cb cb); + uint64_t nbytes, spdk_accel_completion_cb cb); struct spdk_io_channel *(*get_io_channel)(void); }; -struct spdk_copy_module_if { +struct spdk_accel_module_if { /** Initialization function for the module. Called by the spdk * application during startup. * @@ -74,14 +74,14 @@ struct spdk_copy_module_if { void (*config_text)(FILE *fp); size_t (*get_ctx_size)(void); - TAILQ_ENTRY(spdk_copy_module_if) tailq; + TAILQ_ENTRY(spdk_accel_module_if) tailq; }; -void spdk_copy_engine_register(struct spdk_copy_engine *copy_engine); -void spdk_copy_module_list_add(struct spdk_copy_module_if *copy_module); +void spdk_accel_engine_register(struct spdk_accel_engine *accel_engine); +void spdk_accel_module_list_add(struct spdk_accel_module_if *accel_module); -#define SPDK_COPY_MODULE_REGISTER(init_fn, fini_fn, config_fn, ctx_size_fn) \ - static struct spdk_copy_module_if init_fn ## _if = { \ +#define SPDK_ACCEL_MODULE_REGISTER(init_fn, fini_fn, config_fn, ctx_size_fn) \ + static struct spdk_accel_module_if init_fn ## _if = { \ .module_init = init_fn, \ .module_fini = fini_fn, \ .config_text = config_fn, \ @@ -89,7 +89,7 @@ void spdk_copy_module_list_add(struct spdk_copy_module_if *copy_module); }; \ __attribute__((constructor)) static void init_fn ## _init(void) \ { \ - spdk_copy_module_list_add(&init_fn ## _if); \ + spdk_accel_module_list_add(&init_fn ## _if); \ } #endif diff --git a/lib/Makefile b/lib/Makefile index e00b7ff56..12ff7844e 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -35,7 +35,7 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk include $(SPDK_ROOT_DIR)/mk/spdk.lib_deps.mk -DIRS-y += bdev blob blobfs conf copy event json jsonrpc \ +DIRS-y += bdev blob blobfs conf accel event json jsonrpc \ log log_rpc lvol net rpc sock thread trace util nvme vmd nvmf scsi \ ioat ut_mock iscsi notify ifeq ($(OS),Linux) diff --git a/lib/copy/Makefile b/lib/accel/Makefile similarity index 97% rename from lib/copy/Makefile rename to lib/accel/Makefile index 0012bd80d..6c351f0fa 100644 --- a/lib/copy/Makefile +++ b/lib/accel/Makefile @@ -34,7 +34,7 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/../..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk -LIBNAME = copy -C_SRCS = copy_engine.c +LIBNAME = accel +C_SRCS = accel_engine.c include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/lib/accel/accel_engine.c b/lib/accel/accel_engine.c new file mode 100644 index 000000000..e343c01cb --- /dev/null +++ b/lib/accel/accel_engine.c @@ -0,0 +1,320 @@ +/*- + * BSD LICENSE + * + * Copyright (c) Intel Corporation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "spdk/stdinc.h" + +#include "spdk_internal/accel_engine.h" + +#include "spdk/env.h" +#include "spdk/event.h" +#include "spdk/log.h" +#include "spdk/thread.h" + +static size_t g_max_accel_module_size = 0; + +static struct spdk_accel_engine *g_hw_accel_engine = NULL; +/* Software memcpy engine always exists */ +static struct spdk_accel_engine *g_sw_accel_engine = NULL; + +static TAILQ_HEAD(, spdk_accel_module_if) spdk_accel_module_list = + TAILQ_HEAD_INITIALIZER(spdk_accel_module_list); + +struct accel_io_channel { + struct spdk_accel_engine *engine; + struct spdk_io_channel *ch; +}; + +static struct spdk_accel_module_if *g_accel_engine_module = NULL; +static spdk_accel_fini_cb g_fini_cb_fn = NULL; +static void *g_fini_cb_arg = NULL; + +void +spdk_accel_engine_register(struct spdk_accel_engine *accel_engine) +{ + assert(g_hw_accel_engine == NULL); + g_hw_accel_engine = accel_engine; +} + +static void +spdk_sw_accel_register(struct spdk_accel_engine *accel_engine) +{ + assert(g_sw_accel_engine == NULL); + g_sw_accel_engine = accel_engine; +} + +static void +spdk_sw_accel_unregister(void) +{ + g_sw_accel_engine = NULL; +} + +static void +accel_engine_done(void *ref, int status) +{ + struct spdk_accel_task *req = (struct spdk_accel_task *)ref; + + req->cb(req, status); +} + +int +spdk_accel_submit_copy(struct spdk_accel_task *accel_req, struct spdk_io_channel *ch, + void *dst, void *src, uint64_t nbytes, spdk_accel_completion_cb cb) +{ + struct spdk_accel_task *req = accel_req; + struct accel_io_channel *accel_ch = spdk_io_channel_get_ctx(ch); + + req->cb = cb; + return accel_ch->engine->copy(req->offload_ctx, accel_ch->ch, dst, src, nbytes, + accel_engine_done); +} + +int +spdk_accel_submit_fill(struct spdk_accel_task *accel_req, struct spdk_io_channel *ch, + void *dst, uint8_t fill, uint64_t nbytes, spdk_accel_completion_cb cb) +{ + struct spdk_accel_task *req = accel_req; + struct accel_io_channel *accel_ch = spdk_io_channel_get_ctx(ch); + + req->cb = cb; + return accel_ch->engine->fill(req->offload_ctx, accel_ch->ch, dst, fill, nbytes, + accel_engine_done); +} + +/* Software memcpy default accel engine */ +static int +sw_accel_submit_copy(void *cb_arg, struct spdk_io_channel *ch, void *dst, void *src, + uint64_t nbytes, + spdk_accel_completion_cb cb) +{ + struct spdk_accel_task *accel_req; + + memcpy(dst, src, (size_t)nbytes); + + accel_req = (struct spdk_accel_task *)((uintptr_t)cb_arg - + offsetof(struct spdk_accel_task, offload_ctx)); + cb(accel_req, 0); + return 0; +} + +static int +sw_accel_submit_fill(void *cb_arg, struct spdk_io_channel *ch, void *dst, uint8_t fill, + uint64_t nbytes, + spdk_accel_completion_cb cb) +{ + struct spdk_accel_task *accel_req; + + memset(dst, fill, nbytes); + accel_req = (struct spdk_accel_task *)((uintptr_t)cb_arg - + offsetof(struct spdk_accel_task, offload_ctx)); + cb(accel_req, 0); + + return 0; +} + +static struct spdk_io_channel *sw_accel_get_io_channel(void); + +static struct spdk_accel_engine sw_accel_engine = { + .copy = sw_accel_submit_copy, + .fill = sw_accel_submit_fill, + .get_io_channel = sw_accel_get_io_channel, +}; + +static int +sw_accel_create_cb(void *io_device, void *ctx_buf) +{ + return 0; +} + +static void +sw_accel_destroy_cb(void *io_device, void *ctx_buf) +{ +} + +static struct spdk_io_channel *sw_accel_get_io_channel(void) +{ + return spdk_get_io_channel(&sw_accel_engine); +} + +static size_t +accel_engine_sw_get_ctx_size(void) +{ + return sizeof(struct spdk_accel_task); +} + +size_t +spdk_accel_task_size(void) +{ + return g_max_accel_module_size; +} + +void spdk_accel_module_list_add(struct spdk_accel_module_if *accel_module) +{ + TAILQ_INSERT_TAIL(&spdk_accel_module_list, accel_module, tailq); + if (accel_module->get_ctx_size && accel_module->get_ctx_size() > g_max_accel_module_size) { + g_max_accel_module_size = accel_module->get_ctx_size(); + } +} + +static int +accel_engine_create_cb(void *io_device, void *ctx_buf) +{ + struct accel_io_channel *accel_ch = ctx_buf; + + if (g_hw_accel_engine != NULL) { + accel_ch->ch = g_hw_accel_engine->get_io_channel(); + if (accel_ch->ch != NULL) { + accel_ch->engine = g_hw_accel_engine; + return 0; + } + } + + accel_ch->ch = g_sw_accel_engine->get_io_channel(); + assert(accel_ch->ch != NULL); + accel_ch->engine = g_sw_accel_engine; + return 0; +} + +static void +accel_engine_destroy_cb(void *io_device, void *ctx_buf) +{ + struct accel_io_channel *accel_ch = ctx_buf; + + spdk_put_io_channel(accel_ch->ch); +} + +struct spdk_io_channel * +spdk_accel_engine_get_io_channel(void) +{ + return spdk_get_io_channel(&spdk_accel_module_list); +} + +static int +accel_engine_sw_accel_init(void) +{ + spdk_sw_accel_register(&sw_accel_engine); + spdk_io_device_register(&sw_accel_engine, sw_accel_create_cb, sw_accel_destroy_cb, 0, + "sw_accel_engine"); + + return 0; +} + +static void +accel_engine_sw_accel_fini(void *ctxt) +{ + spdk_io_device_unregister(&sw_accel_engine, NULL); + spdk_sw_accel_unregister(); + + spdk_accel_engine_module_finish(); +} + +static void +spdk_accel_engine_module_initialize(void) +{ + struct spdk_accel_module_if *accel_engine_module; + + TAILQ_FOREACH(accel_engine_module, &spdk_accel_module_list, tailq) { + accel_engine_module->module_init(); + } +} + +int +spdk_accel_engine_initialize(void) +{ + spdk_accel_engine_module_initialize(); + /* + * We need a unique identifier for the accel engine framework, so use the + * spdk_accel_module_list address for this purpose. + */ + spdk_io_device_register(&spdk_accel_module_list, accel_engine_create_cb, accel_engine_destroy_cb, + sizeof(struct accel_io_channel), "accel_module"); + + return 0; +} + +static void +spdk_accel_engine_module_finish_cb(void) +{ + spdk_accel_fini_cb cb_fn = g_fini_cb_fn; + + cb_fn(g_fini_cb_arg); + g_fini_cb_fn = NULL; + g_fini_cb_arg = NULL; +} + +void +spdk_accel_engine_module_finish(void) +{ + if (!g_accel_engine_module) { + g_accel_engine_module = TAILQ_FIRST(&spdk_accel_module_list); + } else { + g_accel_engine_module = TAILQ_NEXT(g_accel_engine_module, tailq); + } + + if (!g_accel_engine_module) { + spdk_accel_engine_module_finish_cb(); + return; + } + + if (g_accel_engine_module->module_fini) { + spdk_thread_send_msg(spdk_get_thread(), g_accel_engine_module->module_fini, NULL); + } else { + spdk_accel_engine_module_finish(); + } +} + +void +spdk_accel_engine_finish(spdk_accel_fini_cb cb_fn, void *cb_arg) +{ + assert(cb_fn != NULL); + + g_fini_cb_fn = cb_fn; + g_fini_cb_arg = cb_arg; + + spdk_io_device_unregister(&spdk_accel_module_list, NULL); + spdk_accel_engine_module_finish(); +} + +void +spdk_accel_engine_config_text(FILE *fp) +{ + struct spdk_accel_module_if *accel_engine_module; + + TAILQ_FOREACH(accel_engine_module, &spdk_accel_module_list, tailq) { + if (accel_engine_module->config_text) { + accel_engine_module->config_text(fp); + } + } +} + +SPDK_ACCEL_MODULE_REGISTER(accel_engine_sw_accel_init, accel_engine_sw_accel_fini, + NULL, accel_engine_sw_get_ctx_size) diff --git a/lib/copy/copy_engine.c b/lib/copy/copy_engine.c deleted file mode 100644 index 81e956b84..000000000 --- a/lib/copy/copy_engine.c +++ /dev/null @@ -1,318 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright (c) Intel Corporation. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "spdk/stdinc.h" - -#include "spdk_internal/copy_engine.h" - -#include "spdk/env.h" -#include "spdk/event.h" -#include "spdk/log.h" -#include "spdk/thread.h" - -static size_t g_max_copy_module_size = 0; - -static struct spdk_copy_engine *hw_copy_engine = NULL; -/* Memcpy engine always exist */ -static struct spdk_copy_engine *mem_copy_engine = NULL; - -static TAILQ_HEAD(, spdk_copy_module_if) spdk_copy_module_list = - TAILQ_HEAD_INITIALIZER(spdk_copy_module_list); - -struct copy_io_channel { - struct spdk_copy_engine *engine; - struct spdk_io_channel *ch; -}; - -static struct spdk_copy_module_if *g_copy_engine_module = NULL; -static spdk_copy_fini_cb g_fini_cb_fn = NULL; -static void *g_fini_cb_arg = NULL; - -void -spdk_copy_engine_register(struct spdk_copy_engine *copy_engine) -{ - assert(hw_copy_engine == NULL); - hw_copy_engine = copy_engine; -} - -static void -spdk_memcpy_register(struct spdk_copy_engine *copy_engine) -{ - assert(mem_copy_engine == NULL); - mem_copy_engine = copy_engine; -} - -static void -spdk_memcpy_unregister(void) -{ - mem_copy_engine = NULL; -} - -static void -copy_engine_done(void *ref, int status) -{ - struct spdk_copy_task *req = (struct spdk_copy_task *)ref; - - req->cb(req, status); -} - -int -spdk_copy_submit(struct spdk_copy_task *copy_req, struct spdk_io_channel *ch, - void *dst, void *src, uint64_t nbytes, spdk_copy_completion_cb cb) -{ - struct spdk_copy_task *req = copy_req; - struct copy_io_channel *copy_ch = spdk_io_channel_get_ctx(ch); - - req->cb = cb; - return copy_ch->engine->copy(req->offload_ctx, copy_ch->ch, dst, src, nbytes, - copy_engine_done); -} - -int -spdk_copy_submit_fill(struct spdk_copy_task *copy_req, struct spdk_io_channel *ch, - void *dst, uint8_t fill, uint64_t nbytes, spdk_copy_completion_cb cb) -{ - struct spdk_copy_task *req = copy_req; - struct copy_io_channel *copy_ch = spdk_io_channel_get_ctx(ch); - - req->cb = cb; - return copy_ch->engine->fill(req->offload_ctx, copy_ch->ch, dst, fill, nbytes, - copy_engine_done); -} - -/* memcpy default copy engine */ -static int -mem_copy_submit(void *cb_arg, struct spdk_io_channel *ch, void *dst, void *src, uint64_t nbytes, - spdk_copy_completion_cb cb) -{ - struct spdk_copy_task *copy_req; - - memcpy(dst, src, (size_t)nbytes); - - copy_req = (struct spdk_copy_task *)((uintptr_t)cb_arg - - offsetof(struct spdk_copy_task, offload_ctx)); - cb(copy_req, 0); - return 0; -} - -static int -mem_copy_fill(void *cb_arg, struct spdk_io_channel *ch, void *dst, uint8_t fill, uint64_t nbytes, - spdk_copy_completion_cb cb) -{ - struct spdk_copy_task *copy_req; - - memset(dst, fill, nbytes); - copy_req = (struct spdk_copy_task *)((uintptr_t)cb_arg - - offsetof(struct spdk_copy_task, offload_ctx)); - cb(copy_req, 0); - - return 0; -} - -static struct spdk_io_channel *mem_get_io_channel(void); - -static struct spdk_copy_engine memcpy_copy_engine = { - .copy = mem_copy_submit, - .fill = mem_copy_fill, - .get_io_channel = mem_get_io_channel, -}; - -static int -memcpy_create_cb(void *io_device, void *ctx_buf) -{ - return 0; -} - -static void -memcpy_destroy_cb(void *io_device, void *ctx_buf) -{ -} - -static struct spdk_io_channel *mem_get_io_channel(void) -{ - return spdk_get_io_channel(&memcpy_copy_engine); -} - -static size_t -copy_engine_mem_get_ctx_size(void) -{ - return sizeof(struct spdk_copy_task); -} - -size_t -spdk_copy_task_size(void) -{ - return g_max_copy_module_size; -} - -void spdk_copy_module_list_add(struct spdk_copy_module_if *copy_module) -{ - TAILQ_INSERT_TAIL(&spdk_copy_module_list, copy_module, tailq); - if (copy_module->get_ctx_size && copy_module->get_ctx_size() > g_max_copy_module_size) { - g_max_copy_module_size = copy_module->get_ctx_size(); - } -} - -static int -copy_create_cb(void *io_device, void *ctx_buf) -{ - struct copy_io_channel *copy_ch = ctx_buf; - - if (hw_copy_engine != NULL) { - copy_ch->ch = hw_copy_engine->get_io_channel(); - if (copy_ch->ch != NULL) { - copy_ch->engine = hw_copy_engine; - return 0; - } - } - - copy_ch->ch = mem_copy_engine->get_io_channel(); - assert(copy_ch->ch != NULL); - copy_ch->engine = mem_copy_engine; - return 0; -} - -static void -copy_destroy_cb(void *io_device, void *ctx_buf) -{ - struct copy_io_channel *copy_ch = ctx_buf; - - spdk_put_io_channel(copy_ch->ch); -} - -struct spdk_io_channel * -spdk_copy_engine_get_io_channel(void) -{ - return spdk_get_io_channel(&spdk_copy_module_list); -} - -static int -copy_engine_mem_init(void) -{ - spdk_memcpy_register(&memcpy_copy_engine); - spdk_io_device_register(&memcpy_copy_engine, memcpy_create_cb, memcpy_destroy_cb, 0, - "memcpy_engine"); - - return 0; -} - -static void -copy_engine_mem_fini(void *ctxt) -{ - spdk_io_device_unregister(&memcpy_copy_engine, NULL); - spdk_memcpy_unregister(); - - spdk_copy_engine_module_finish(); -} - -static void -spdk_copy_engine_module_initialize(void) -{ - struct spdk_copy_module_if *copy_engine_module; - - TAILQ_FOREACH(copy_engine_module, &spdk_copy_module_list, tailq) { - copy_engine_module->module_init(); - } -} - -int -spdk_copy_engine_initialize(void) -{ - spdk_copy_engine_module_initialize(); - /* - * We need a unique identifier for the copy engine framework, so use the - * spdk_copy_module_list address for this purpose. - */ - spdk_io_device_register(&spdk_copy_module_list, copy_create_cb, copy_destroy_cb, - sizeof(struct copy_io_channel), "copy_module"); - - return 0; -} - -static void -spdk_copy_engine_module_finish_cb(void) -{ - spdk_copy_fini_cb cb_fn = g_fini_cb_fn; - - cb_fn(g_fini_cb_arg); - g_fini_cb_fn = NULL; - g_fini_cb_arg = NULL; -} - -void -spdk_copy_engine_module_finish(void) -{ - if (!g_copy_engine_module) { - g_copy_engine_module = TAILQ_FIRST(&spdk_copy_module_list); - } else { - g_copy_engine_module = TAILQ_NEXT(g_copy_engine_module, tailq); - } - - if (!g_copy_engine_module) { - spdk_copy_engine_module_finish_cb(); - return; - } - - if (g_copy_engine_module->module_fini) { - spdk_thread_send_msg(spdk_get_thread(), g_copy_engine_module->module_fini, NULL); - } else { - spdk_copy_engine_module_finish(); - } -} - -void -spdk_copy_engine_finish(spdk_copy_fini_cb cb_fn, void *cb_arg) -{ - assert(cb_fn != NULL); - - g_fini_cb_fn = cb_fn; - g_fini_cb_arg = cb_arg; - - spdk_io_device_unregister(&spdk_copy_module_list, NULL); - spdk_copy_engine_module_finish(); -} - -void -spdk_copy_engine_config_text(FILE *fp) -{ - struct spdk_copy_module_if *copy_engine_module; - - TAILQ_FOREACH(copy_engine_module, &spdk_copy_module_list, tailq) { - if (copy_engine_module->config_text) { - copy_engine_module->config_text(fp); - } - } -} - -SPDK_COPY_MODULE_REGISTER(copy_engine_mem_init, copy_engine_mem_fini, - NULL, copy_engine_mem_get_ctx_size) diff --git a/lib/rocksdb/spdk.rocksdb.mk b/lib/rocksdb/spdk.rocksdb.mk index 0ddbd0b3e..c026a602e 100644 --- a/lib/rocksdb/spdk.rocksdb.mk +++ b/lib/rocksdb/spdk.rocksdb.mk @@ -54,8 +54,8 @@ CXXFLAGS += -fno-sanitize=address endif SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_vmd -SPDK_LIB_LIST += bdev copy event util conf trace log jsonrpc json rpc sock thread notify +SPDK_LIB_LIST += event_bdev event_accel event_vmd +SPDK_LIB_LIST += bdev accel event util conf trace log jsonrpc json rpc sock thread notify AM_LINK += $(SPDK_LIB_LINKER_ARGS) $(ENV_LINKER_ARGS) AM_LINK += $(SYS_LIBS) diff --git a/mk/spdk.lib_deps.mk b/mk/spdk.lib_deps.mk index 1328c1744..9c6f2671e 100644 --- a/mk/spdk.lib_deps.mk +++ b/mk/spdk.lib_deps.mk @@ -56,7 +56,7 @@ DEPDIRS-reduce := log util DEPDIRS-thread := log util DEPDIRS-blob := log util thread -DEPDIRS-copy := thread +DEPDIRS-accel := thread DEPDIRS-jsonrpc := log util json DEPDIRS-virtio := log util json thread @@ -100,8 +100,8 @@ DEPDIRS-blob_bdev := log thread bdev # module/blobfs DEPDIRS-blobfs_bdev := $(BDEV_DEPS_THREAD) blob_bdev blobfs -# module/copy -DEPDIRS-copy_ioat := log ioat conf thread $(JSON_LIBS) copy +# module/accel +DEPDIRS-accel_ioat := log ioat conf thread $(JSON_LIBS) accel # module/env_dpdk DEPDIRS-env_dpdk_rpc := log $(JSON_LIBS) @@ -117,7 +117,7 @@ DEPDIRS-bdev_lvol := $(BDEV_DEPS) lvol blob blob_bdev DEPDIRS-bdev_rpc := $(BDEV_DEPS) DEPDIRS-bdev_error := $(BDEV_DEPS_CONF) -DEPDIRS-bdev_malloc := $(BDEV_DEPS_CONF) copy +DEPDIRS-bdev_malloc := $(BDEV_DEPS_CONF) accel DEPDIRS-bdev_split := $(BDEV_DEPS_CONF) DEPDIRS-bdev_compress := $(BDEV_DEPS_THREAD) reduce @@ -147,11 +147,11 @@ DEPDIRS-app_rpc := log util thread event $(JSON_LIBS) # These depdirs include subsystem interdependencies which # are not related to symbols, but are defined directly in # the SPDK event subsystem code. -DEPDIRS-event_copy := copy event +DEPDIRS-event_accel := accel event DEPDIRS-event_net := sock net event DEPDIRS-event_vmd := vmd conf $(JSON_LIBS) event log thread -DEPDIRS-event_bdev := bdev event event_copy event_vmd +DEPDIRS-event_bdev := bdev event event_accel event_vmd DEPDIRS-event_nbd := event nbd event_bdev DEPDIRS-event_nvmf := $(BDEV_DEPS_CONF_THREAD) event nvme nvmf event_bdev diff --git a/mk/spdk.modules.mk b/mk/spdk.modules.mk index c200a8207..30e88f836 100644 --- a/mk/spdk.modules.mk +++ b/mk/spdk.modules.mk @@ -99,6 +99,6 @@ SYS_LIBS += -Wl,--no-whole-archive SOCK_MODULES_LIST += sock_vpp endif -COPY_MODULES_LIST = copy_ioat ioat +ACCEL_MODULES_LIST = accel_ioat ioat -ALL_MODULES_LIST = $(BLOCKDEV_MODULES_LIST) $(COPY_MODULES_LIST) $(SOCK_MODULES_LIST) +ALL_MODULES_LIST = $(BLOCKDEV_MODULES_LIST) $(ACCEL_MODULES_LIST) $(SOCK_MODULES_LIST) diff --git a/module/Makefile b/module/Makefile index f94232c4f..5662634b7 100644 --- a/module/Makefile +++ b/module/Makefile @@ -34,13 +34,13 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk -DIRS-y = bdev blob blobfs copy event sock +DIRS-y = bdev blob blobfs accel event sock ifeq ($(SPDK_ROOT_DIR)/lib/env_dpdk,$(CONFIG_ENV)) DIRS-y += env_dpdk endif DEPDIRS-blob := -DEPDIRS-copy := +DEPDIRS-accel := DEPDIRS-env_dpdk := DEPDIRS-sock := DEPDIRS-bdev := blob diff --git a/module/copy/Makefile b/module/accel/Makefile similarity index 100% rename from module/copy/Makefile rename to module/accel/Makefile diff --git a/module/copy/ioat/Makefile b/module/accel/ioat/Makefile similarity index 95% rename from module/copy/ioat/Makefile rename to module/accel/ioat/Makefile index 3d19e38f2..d587ba5b0 100644 --- a/module/copy/ioat/Makefile +++ b/module/accel/ioat/Makefile @@ -34,7 +34,7 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk -LIBNAME = copy_ioat -C_SRCS = copy_engine_ioat.c copy_engine_ioat_rpc.c +LIBNAME = accel_ioat +C_SRCS = accel_engine_ioat.c accel_engine_ioat_rpc.c include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/module/copy/ioat/copy_engine_ioat.c b/module/accel/ioat/accel_engine_ioat.c similarity index 77% rename from module/copy/ioat/copy_engine_ioat.c rename to module/accel/ioat/accel_engine_ioat.c index aaa0daa14..3fc4c2e02 100644 --- a/module/copy/ioat/copy_engine_ioat.c +++ b/module/accel/ioat/accel_engine_ioat.c @@ -31,11 +31,11 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "copy_engine_ioat.h" +#include "accel_engine_ioat.h" #include "spdk/stdinc.h" -#include "spdk_internal/copy_engine.h" +#include "spdk_internal/accel_engine.h" #include "spdk_internal/log.h" #include "spdk/env.h" @@ -112,39 +112,39 @@ ioat_free_device(struct ioat_device *dev) } struct ioat_task { - spdk_copy_completion_cb cb; + spdk_accel_completion_cb cb; }; -static int copy_engine_ioat_init(void); -static void copy_engine_ioat_exit(void *ctx); -static void copy_engine_ioat_config_text(FILE *fp); +static int accel_engine_ioat_init(void); +static void accel_engine_ioat_exit(void *ctx); +static void accel_engine_ioat_config_text(FILE *fp); static size_t -copy_engine_ioat_get_ctx_size(void) +accel_engine_ioat_get_ctx_size(void) { - return sizeof(struct ioat_task) + sizeof(struct spdk_copy_task); + return sizeof(struct ioat_task) + sizeof(struct spdk_accel_task); } -SPDK_COPY_MODULE_REGISTER(copy_engine_ioat_init, copy_engine_ioat_exit, - copy_engine_ioat_config_text, - copy_engine_ioat_get_ctx_size) +SPDK_ACCEL_MODULE_REGISTER(accel_engine_ioat_init, accel_engine_ioat_exit, + accel_engine_ioat_config_text, + accel_engine_ioat_get_ctx_size) static void ioat_done(void *cb_arg) { - struct spdk_copy_task *copy_req; + struct spdk_accel_task *accel_req; struct ioat_task *ioat_task = cb_arg; - copy_req = (struct spdk_copy_task *) - ((uintptr_t)ioat_task - - offsetof(struct spdk_copy_task, offload_ctx)); + accel_req = (struct spdk_accel_task *) + ((uintptr_t)ioat_task - + offsetof(struct spdk_accel_task, offload_ctx)); - ioat_task->cb(copy_req, 0); + ioat_task->cb(accel_req, 0); } static int -ioat_copy_submit(void *cb_arg, struct spdk_io_channel *ch, void *dst, void *src, uint64_t nbytes, - spdk_copy_completion_cb cb) +ioat_submit_copy(void *cb_arg, struct spdk_io_channel *ch, void *dst, void *src, uint64_t nbytes, + spdk_accel_completion_cb cb) { struct ioat_task *ioat_task = (struct ioat_task *)cb_arg; struct ioat_io_channel *ioat_ch = spdk_io_channel_get_ctx(ch); @@ -157,8 +157,8 @@ ioat_copy_submit(void *cb_arg, struct spdk_io_channel *ch, void *dst, void *src, } static int -ioat_copy_submit_fill(void *cb_arg, struct spdk_io_channel *ch, void *dst, uint8_t fill, - uint64_t nbytes, spdk_copy_completion_cb cb) +ioat_submit_fill(void *cb_arg, struct spdk_io_channel *ch, void *dst, uint8_t fill, + uint64_t nbytes, spdk_accel_completion_cb cb) { struct ioat_task *ioat_task = (struct ioat_task *)cb_arg; struct ioat_io_channel *ioat_ch = spdk_io_channel_get_ctx(ch); @@ -183,9 +183,9 @@ ioat_poll(void *arg) static struct spdk_io_channel *ioat_get_io_channel(void); -static struct spdk_copy_engine ioat_copy_engine = { - .copy = ioat_copy_submit, - .fill = ioat_copy_submit_fill, +static struct spdk_accel_engine ioat_accel_engine = { + .copy = ioat_submit_copy, + .fill = ioat_submit_fill, .get_io_channel = ioat_get_io_channel, }; @@ -218,7 +218,7 @@ ioat_destroy_cb(void *io_device, void *ctx_buf) static struct spdk_io_channel * ioat_get_io_channel(void) { - return spdk_get_io_channel(&ioat_copy_engine); + return spdk_get_io_channel(&ioat_accel_engine); } static bool @@ -227,7 +227,7 @@ probe_cb(void *cb_ctx, struct spdk_pci_device *pci_dev) struct ioat_probe_ctx *ctx = cb_ctx; struct spdk_pci_addr pci_addr = spdk_pci_device_get_addr(pci_dev); - SPDK_INFOLOG(SPDK_LOG_COPY_IOAT, + SPDK_INFOLOG(SPDK_LOG_ACCEL_IOAT, " Found matching device at %04x:%02x:%02x.%x vendor:0x%04x device:0x%04x\n", pci_addr.domain, pci_addr.bus, @@ -265,13 +265,13 @@ attach_cb(void *cb_ctx, struct spdk_pci_device *pci_dev, struct spdk_ioat_chan * } void -copy_engine_ioat_enable_probe(void) +accel_engine_ioat_enable_probe(void) { g_ioat_enable = true; } static int -copy_engine_ioat_add_whitelist_device(const char *pci_bdf) +accel_engine_ioat_add_whitelist_device(const char *pci_bdf) { if (pci_bdf == NULL) { return -1; @@ -295,12 +295,12 @@ copy_engine_ioat_add_whitelist_device(const char *pci_bdf) } int -copy_engine_ioat_add_whitelist_devices(const char *pci_bdfs[], size_t num_pci_bdfs) +accel_engine_ioat_add_whitelist_devices(const char *pci_bdfs[], size_t num_pci_bdfs) { size_t i; for (i = 0; i < num_pci_bdfs; i++) { - if (copy_engine_ioat_add_whitelist_device(pci_bdfs[i]) < 0) { + if (accel_engine_ioat_add_whitelist_device(pci_bdfs[i]) < 0) { return -1; } } @@ -309,7 +309,7 @@ copy_engine_ioat_add_whitelist_devices(const char *pci_bdfs[], size_t num_pci_bd } static int -copy_engine_ioat_read_config_file_params(struct spdk_conf_section *sp) +accel_engine_ioat_read_config_file_params(struct spdk_conf_section *sp) { int i; char *val, *pci_bdf; @@ -337,7 +337,7 @@ copy_engine_ioat_read_config_file_params(struct spdk_conf_section *sp) break; } - if (copy_engine_ioat_add_whitelist_device(pci_bdf) < 0) { + if (accel_engine_ioat_add_whitelist_device(pci_bdf) < 0) { return -1; } } @@ -346,16 +346,16 @@ copy_engine_ioat_read_config_file_params(struct spdk_conf_section *sp) } static int -copy_engine_ioat_init(void) +accel_engine_ioat_init(void) { struct spdk_conf_section *sp; int rc; sp = spdk_conf_find_section(NULL, "Ioat"); if (sp != NULL) { - rc = copy_engine_ioat_read_config_file_params(sp); + rc = accel_engine_ioat_read_config_file_params(sp); if (rc != 0) { - SPDK_ERRLOG("copy_engine_ioat_read_config_file_params() failed\n"); + SPDK_ERRLOG("accel_engine_ioat_read_config_file_params() failed\n"); return rc; } } @@ -370,20 +370,20 @@ copy_engine_ioat_init(void) } g_ioat_initialized = true; - SPDK_INFOLOG(SPDK_LOG_COPY_IOAT, "Ioat Copy Engine Offload Enabled\n"); - spdk_copy_engine_register(&ioat_copy_engine); - spdk_io_device_register(&ioat_copy_engine, ioat_create_cb, ioat_destroy_cb, - sizeof(struct ioat_io_channel), "ioat_copy_engine"); + SPDK_INFOLOG(SPDK_LOG_ACCEL_IOAT, "Ioat Acceleration Engine Offload Enabled\n"); + spdk_accel_engine_register(&ioat_accel_engine); + spdk_io_device_register(&ioat_accel_engine, ioat_create_cb, ioat_destroy_cb, + sizeof(struct ioat_io_channel), "ioat_accel_engine"); return 0; } static void -copy_engine_ioat_exit(void *ctx) +accel_engine_ioat_exit(void *ctx) { struct ioat_device *dev; if (g_ioat_initialized) { - spdk_io_device_unregister(&ioat_copy_engine, NULL); + spdk_io_device_unregister(&ioat_accel_engine, NULL); } while (!TAILQ_EMPTY(&g_devices)) { @@ -393,35 +393,35 @@ copy_engine_ioat_exit(void *ctx) ioat_free_device(dev); free(dev); } - spdk_copy_engine_module_finish(); + spdk_accel_engine_module_finish(); } -#define COPY_ENGINE_IOAT_HEADER_TMPL \ +#define ACCEL_ENGINE_IOAT_HEADER_TMPL \ "[Ioat]\n" \ " # Users may not want to use offload even it is available.\n" \ " # Users may use the whitelist to initialize specified devices, IDS\n" \ " # uses BUS:DEVICE.FUNCTION to identify each Ioat channel.\n" -#define COPY_ENGINE_IOAT_ENABLE_TMPL \ +#define ACCEL_ENGINE_IOAT_ENABLE_TMPL \ " Enable %s\n" -#define COPY_ENGINE_IOAT_WHITELIST_TMPL \ +#define ACCEL_ENGINE_IOAT_WHITELIST_TMPL \ " Whitelist %.4" PRIx16 ":%.2" PRIx8 ":%.2" PRIx8 ".%" PRIx8 "\n" static void -copy_engine_ioat_config_text(FILE *fp) +accel_engine_ioat_config_text(FILE *fp) { int i; struct spdk_pci_addr *dev; - fprintf(fp, COPY_ENGINE_IOAT_HEADER_TMPL); - fprintf(fp, COPY_ENGINE_IOAT_ENABLE_TMPL, g_ioat_enable ? "Yes" : "No"); + fprintf(fp, ACCEL_ENGINE_IOAT_HEADER_TMPL); + fprintf(fp, ACCEL_ENGINE_IOAT_ENABLE_TMPL, g_ioat_enable ? "Yes" : "No"); for (i = 0; i < g_probe_ctx.num_whitelist_devices; i++) { dev = &g_probe_ctx.whitelist[i]; - fprintf(fp, COPY_ENGINE_IOAT_WHITELIST_TMPL, + fprintf(fp, ACCEL_ENGINE_IOAT_WHITELIST_TMPL, dev->domain, dev->bus, dev->dev, dev->func); } } -SPDK_LOG_REGISTER_COMPONENT("copy_ioat", SPDK_LOG_COPY_IOAT) +SPDK_LOG_REGISTER_COMPONENT("accel_ioat", SPDK_LOG_ACCEL_IOAT) diff --git a/module/copy/ioat/copy_engine_ioat.h b/module/accel/ioat/accel_engine_ioat.h similarity index 87% rename from module/copy/ioat/copy_engine_ioat.h rename to module/accel/ioat/accel_engine_ioat.h index ae69fb2d0..26a167eb6 100644 --- a/module/copy/ioat/copy_engine_ioat.h +++ b/module/accel/ioat/accel_engine_ioat.h @@ -31,14 +31,14 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef SPDK_COPY_ENGINE_IOAT_H -#define SPDK_COPY_ENGINE_IOAT_H +#ifndef SPDK_ACCEL_ENGINE_IOAT_H +#define SPDK_ACCEL_ENGINE_IOAT_H #include "spdk/stdinc.h" #define IOAT_MAX_CHANNELS 64 -int copy_engine_ioat_add_whitelist_devices(const char *pci_bdfs[], size_t num_pci_bdfs); -void copy_engine_ioat_enable_probe(void); +int accel_engine_ioat_add_whitelist_devices(const char *pci_bdfs[], size_t num_pci_bdfs); +void accel_engine_ioat_enable_probe(void); -#endif /* SPDK_COPY_ENGINE_IOAT_H */ +#endif /* SPDK_ACCEL_ENGINE_IOAT_H */ diff --git a/module/copy/ioat/copy_engine_ioat_rpc.c b/module/accel/ioat/accel_engine_ioat_rpc.c similarity index 71% rename from module/copy/ioat/copy_engine_ioat_rpc.c rename to module/accel/ioat/accel_engine_ioat_rpc.c index 8be2beda1..3f6c5f932 100644 --- a/module/copy/ioat/copy_engine_ioat_rpc.c +++ b/module/accel/ioat/accel_engine_ioat_rpc.c @@ -31,7 +31,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "copy_engine_ioat.h" +#include "accel_engine_ioat.h" #include "spdk/rpc.h" #include "spdk/util.h" @@ -61,55 +61,56 @@ free_rpc_pci_whitelist(struct rpc_pci_whitelist *list) } } -struct rpc_ioat_scan_copy_engine { +struct rpc_ioat_scan_accel_engine { struct rpc_pci_whitelist pci_whitelist; }; static void -free_rpc_ioat_scan_copy_engine(struct rpc_ioat_scan_copy_engine *p) +free_rpc_ioat_scan_accel_engine(struct rpc_ioat_scan_accel_engine *p) { free_rpc_pci_whitelist(&p->pci_whitelist); } -static const struct spdk_json_object_decoder rpc_ioat_scan_copy_engine_decoder[] = { - {"pci_whitelist", offsetof(struct rpc_ioat_scan_copy_engine, pci_whitelist), decode_rpc_pci_whitelist}, +static const struct spdk_json_object_decoder rpc_ioat_scan_accel_engine_decoder[] = { + {"pci_whitelist", offsetof(struct rpc_ioat_scan_accel_engine, pci_whitelist), decode_rpc_pci_whitelist}, }; static void -spdk_rpc_ioat_scan_copy_engine(struct spdk_jsonrpc_request *request, - const struct spdk_json_val *params) +spdk_rpc_ioat_scan_accel_engine(struct spdk_jsonrpc_request *request, + const struct spdk_json_val *params) { - struct rpc_ioat_scan_copy_engine req = {}; + struct rpc_ioat_scan_accel_engine req = {}; struct spdk_json_write_ctx *w; int rc; if (params != NULL) { - if (spdk_json_decode_object(params, rpc_ioat_scan_copy_engine_decoder, - SPDK_COUNTOF(rpc_ioat_scan_copy_engine_decoder), + if (spdk_json_decode_object(params, rpc_ioat_scan_accel_engine_decoder, + SPDK_COUNTOF(rpc_ioat_scan_accel_engine_decoder), &req)) { - free_rpc_ioat_scan_copy_engine(&req); + free_rpc_ioat_scan_accel_engine(&req); SPDK_ERRLOG("spdk_json_decode_object() failed\n"); spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters"); return; } - rc = copy_engine_ioat_add_whitelist_devices((const char **)req.pci_whitelist.bdfs, + rc = accel_engine_ioat_add_whitelist_devices((const char **)req.pci_whitelist.bdfs, req.pci_whitelist.num_bdfs); - free_rpc_ioat_scan_copy_engine(&req); + free_rpc_ioat_scan_accel_engine(&req); if (rc < 0) { - SPDK_ERRLOG("copy_engine_ioat_add_whitelist_devices() failed\n"); + SPDK_ERRLOG("accel_engine_ioat_add_whitelist_devices() failed\n"); spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters"); return; } } - copy_engine_ioat_enable_probe(); + accel_engine_ioat_enable_probe(); w = spdk_jsonrpc_begin_result(request); spdk_json_write_bool(w, true); spdk_jsonrpc_end_result(request, w); } -SPDK_RPC_REGISTER("ioat_scan_copy_engine", spdk_rpc_ioat_scan_copy_engine, SPDK_RPC_STARTUP) -SPDK_RPC_REGISTER_ALIAS_DEPRECATED(ioat_scan_copy_engine, scan_ioat_copy_engine) +SPDK_RPC_REGISTER("ioat_scan_accel_engine", spdk_rpc_ioat_scan_accel_engine, SPDK_RPC_STARTUP) +SPDK_RPC_REGISTER_ALIAS_DEPRECATED(ioat_scan_accel_engine, ioat_scan_copy_engine) +SPDK_RPC_REGISTER_ALIAS_DEPRECATED(ioat_scan_accel_engine, scan_ioat_copy_engine) diff --git a/module/bdev/malloc/bdev_malloc.c b/module/bdev/malloc/bdev_malloc.c index 0d577eed9..2c10c2424 100644 --- a/module/bdev/malloc/bdev_malloc.c +++ b/module/bdev/malloc/bdev_malloc.c @@ -38,7 +38,7 @@ #include "spdk/conf.h" #include "spdk/endian.h" #include "spdk/env.h" -#include "spdk/copy_engine.h" +#include "spdk/accel_engine.h" #include "spdk/json.h" #include "spdk/thread.h" #include "spdk/queue.h" @@ -59,15 +59,15 @@ struct malloc_task { }; static struct malloc_task * -__malloc_task_from_copy_task(struct spdk_copy_task *ct) +__malloc_task_from_copy_task(struct spdk_accel_task *ct) { return (struct malloc_task *)((uintptr_t)ct - sizeof(struct malloc_task)); } -static struct spdk_copy_task * +static struct spdk_accel_task * __copy_task_from_malloc_task(struct malloc_task *mt) { - return (struct spdk_copy_task *)((uintptr_t)mt + sizeof(struct malloc_task)); + return (struct spdk_accel_task *)((uintptr_t)mt + sizeof(struct malloc_task)); } static void @@ -98,7 +98,7 @@ static void bdev_malloc_get_spdk_running_config(FILE *fp); static int bdev_malloc_get_ctx_size(void) { - return sizeof(struct malloc_task) + spdk_copy_task_size(); + return sizeof(struct malloc_task) + spdk_accel_task_size(); } static struct spdk_bdev_module malloc_if = { @@ -171,9 +171,9 @@ bdev_malloc_readv(struct malloc_disk *mdisk, struct spdk_io_channel *ch, task->num_outstanding = iovcnt; for (i = 0; i < iovcnt; i++) { - res = spdk_copy_submit(__copy_task_from_malloc_task(task), - ch, iov[i].iov_base, - src, iov[i].iov_len, malloc_done); + res = spdk_accel_submit_copy(__copy_task_from_malloc_task(task), + ch, iov[i].iov_base, + src, iov[i].iov_len, malloc_done); if (res != 0) { malloc_done(__copy_task_from_malloc_task(task), res); @@ -206,9 +206,9 @@ bdev_malloc_writev(struct malloc_disk *mdisk, struct spdk_io_channel *ch, task->num_outstanding = iovcnt; for (i = 0; i < iovcnt; i++) { - res = spdk_copy_submit(__copy_task_from_malloc_task(task), - ch, dst, iov[i].iov_base, - iov[i].iov_len, malloc_done); + res = spdk_accel_submit_copy(__copy_task_from_malloc_task(task), + ch, dst, iov[i].iov_base, + iov[i].iov_len, malloc_done); if (res != 0) { malloc_done(__copy_task_from_malloc_task(task), res); @@ -228,8 +228,8 @@ bdev_malloc_unmap(struct malloc_disk *mdisk, task->status = SPDK_BDEV_IO_STATUS_SUCCESS; task->num_outstanding = 1; - return spdk_copy_submit_fill(__copy_task_from_malloc_task(task), ch, - mdisk->malloc_buf + offset, 0, byte_count, malloc_done); + return spdk_accel_submit_fill(__copy_task_from_malloc_task(task), ch, + mdisk->malloc_buf + offset, 0, byte_count, malloc_done); } static int64_t @@ -358,7 +358,7 @@ bdev_malloc_io_type_supported(void *ctx, enum spdk_bdev_io_type io_type) static struct spdk_io_channel * bdev_malloc_get_io_channel(void *ctx) { - return spdk_copy_engine_get_io_channel(); + return spdk_accel_engine_get_io_channel(); } static void diff --git a/module/event/subsystems/Makefile b/module/event/subsystems/Makefile index d29b33f0e..58e47a601 100644 --- a/module/event/subsystems/Makefile +++ b/module/event/subsystems/Makefile @@ -34,7 +34,7 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk -DIRS-y += bdev copy iscsi net nvmf scsi vmd +DIRS-y += bdev accel iscsi net nvmf scsi vmd ifeq ($(OS),Linux) DIRS-y += nbd @@ -46,7 +46,7 @@ DIRS-$(CONFIG_VHOST) += vhost # the subsystem dependency tree defined within the event subsystem C files # themselves. Should that tree change, these dependencies should change # accordingly. -DEPDIRS-bdev := copy vmd +DEPDIRS-bdev := accel vmd DEPDIRS-iscsi := scsi DEPDIRS-nbd := bdev DEPDIRS-nvmf := bdev diff --git a/module/event/subsystems/copy/Makefile b/module/event/subsystems/accel/Makefile similarity index 97% rename from module/event/subsystems/copy/Makefile rename to module/event/subsystems/accel/Makefile index 691eee2a1..ad62e9c63 100644 --- a/module/event/subsystems/copy/Makefile +++ b/module/event/subsystems/accel/Makefile @@ -34,7 +34,7 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../../..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk -C_SRCS = copy.c -LIBNAME = event_copy +C_SRCS = accel.c +LIBNAME = event_accel include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/module/event/subsystems/copy/copy.c b/module/event/subsystems/accel/accel.c similarity index 77% rename from module/event/subsystems/copy/copy.c rename to module/event/subsystems/accel/accel.c index 9bc6e2811..27163ee8b 100644 --- a/module/event/subsystems/copy/copy.c +++ b/module/event/subsystems/accel/accel.c @@ -33,38 +33,38 @@ #include "spdk/stdinc.h" -#include "spdk/copy_engine.h" +#include "spdk/accel_engine.h" #include "spdk_internal/event.h" #include "spdk/env.h" static void -spdk_copy_engine_subsystem_initialize(void) +spdk_accel_engine_subsystem_initialize(void) { int rc; - rc = spdk_copy_engine_initialize(); + rc = spdk_accel_engine_initialize(); spdk_subsystem_init_next(rc); } static void -spdk_copy_engine_subsystem_finish_done(void *cb_arg) +spdk_accel_engine_subsystem_finish_done(void *cb_arg) { spdk_subsystem_fini_next(); } static void -spdk_copy_engine_subsystem_finish(void) +spdk_accel_engine_subsystem_finish(void) { - spdk_copy_engine_finish(spdk_copy_engine_subsystem_finish_done, NULL); + spdk_accel_engine_finish(spdk_accel_engine_subsystem_finish_done, NULL); } -static struct spdk_subsystem g_spdk_subsystem_copy = { - .name = "copy", - .init = spdk_copy_engine_subsystem_initialize, - .fini = spdk_copy_engine_subsystem_finish, - .config = spdk_copy_engine_config_text, +static struct spdk_subsystem g_spdk_subsystem_accel = { + .name = "accel", + .init = spdk_accel_engine_subsystem_initialize, + .fini = spdk_accel_engine_subsystem_finish, + .config = spdk_accel_engine_config_text, }; -SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_copy); +SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_accel); diff --git a/module/event/subsystems/bdev/bdev.c b/module/event/subsystems/bdev/bdev.c index 078c691a6..28099531b 100644 --- a/module/event/subsystems/bdev/bdev.c +++ b/module/event/subsystems/bdev/bdev.c @@ -79,5 +79,5 @@ static struct spdk_subsystem g_spdk_subsystem_bdev = { }; SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_bdev); -SPDK_SUBSYSTEM_DEPEND(bdev, copy) +SPDK_SUBSYSTEM_DEPEND(bdev, accel) SPDK_SUBSYSTEM_DEPEND(bdev, vmd) diff --git a/scripts/config_converter.py b/scripts/config_converter.py index caaed5e66..4fa65a9d7 100755 --- a/scripts/config_converter.py +++ b/scripts/config_converter.py @@ -36,7 +36,7 @@ nvmf_dict["subsystems"] = [] # dictionary with new config that will be written to new json config file subsystem = { - "copy": None, + "accel": None, "interface": None, "net_framework": None, "bdev": bdev_dict, @@ -61,7 +61,7 @@ no_yes_map = {"no": False, "No": False, "Yes": True, "yes": True} def generate_new_json_config(): json_subsystem = [ - {'subsystem': "copy", 'config': None}, + {'subsystem': "accel", 'config': None}, {"subsystem": "interface", "config": None}, {"subsystem": "net_framework", "config": None}, {"subsystem": "bdev", "config": []}, diff --git a/scripts/rpc.py b/scripts/rpc.py index 2660d3a72..c0a0b2118 100755 --- a/scripts/rpc.py +++ b/scripts/rpc.py @@ -2100,18 +2100,19 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse p.set_defaults(func=bdev_ocssd_delete) # ioat - def ioat_scan_copy_engine(args): + def ioat_scan_accel_engine(args): pci_whitelist = [] if args.pci_whitelist: for w in args.pci_whitelist.strip().split(" "): pci_whitelist.append(w) - rpc.ioat.ioat_scan_copy_engine(args.client, pci_whitelist) + rpc.ioat.ioat_scan_accel_engine(args.client, pci_whitelist) - p = subparsers.add_parser('ioat_scan_copy_engine', aliases=['scan_ioat_copy_engine'], - help='Set scan and enable IOAT copy engine offload.') + p = subparsers.add_parser('ioat_scan_accel_engine', + aliases=['ioat_scan_copy_engine', 'scan_ioat_copy_engine'], + help='Set scan and enable IOAT accel engine offload.') p.add_argument('-w', '--pci-whitelist', help="""Whitespace-separated list of PCI addresses in domain:bus:device.function format or domain.bus.device.function format""") - p.set_defaults(func=ioat_scan_copy_engine) + p.set_defaults(func=ioat_scan_accel_engine) # opal def bdev_nvme_opal_init(args): diff --git a/scripts/rpc/ioat.py b/scripts/rpc/ioat.py index 27891c750..ae43a3c3f 100644 --- a/scripts/rpc/ioat.py +++ b/scripts/rpc/ioat.py @@ -1,9 +1,10 @@ from .helpers import deprecated_alias +@deprecated_alias('ioat_scan_copy_engine') @deprecated_alias('scan_ioat_copy_engine') -def ioat_scan_copy_engine(client, pci_whitelist): - """Scan and enable IOAT copy engine. +def ioat_scan_accel_engine(client, pci_whitelist): + """Scan and enable IOAT accel engine. Args: pci_whitelist: Python list of PCI addresses in @@ -13,4 +14,4 @@ def ioat_scan_copy_engine(client, pci_whitelist): params = {} if pci_whitelist: params['pci_whitelist'] = pci_whitelist - return client.call('ioat_scan_copy_engine', params) + return client.call('ioat_scan_accel_engine', params) diff --git a/test/app/bdev_svc/Makefile b/test/app/bdev_svc/Makefile index 4ce725a13..4e6ce2111 100644 --- a/test/app/bdev_svc/Makefile +++ b/test/app/bdev_svc/Makefile @@ -40,8 +40,8 @@ APP = bdev_svc C_SRCS := bdev_svc.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_vmd -SPDK_LIB_LIST += nvmf event log trace conf thread util bdev copy rpc jsonrpc json sock blobfs_bdev +SPDK_LIB_LIST += event_bdev event_accel event_vmd +SPDK_LIB_LIST += nvmf event log trace conf thread util bdev accel rpc jsonrpc json sock blobfs_bdev SPDK_LIB_LIST += app_rpc log_rpc bdev_rpc notify ifeq ($(OS),Linux) diff --git a/test/bdev/bdevio/Makefile b/test/bdev/bdevio/Makefile index 84b6abb47..660315de7 100644 --- a/test/bdev/bdevio/Makefile +++ b/test/bdev/bdevio/Makefile @@ -40,8 +40,8 @@ APP = bdevio C_SRCS := bdevio.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_vmd -SPDK_LIB_LIST += app_rpc bdev bdev_rpc copy event trace log conf thread util rpc jsonrpc json sock notify +SPDK_LIB_LIST += event_bdev event_accel event_vmd +SPDK_LIB_LIST += app_rpc bdev bdev_rpc accel event trace log conf thread util rpc jsonrpc json sock notify LIBS += -lcunit diff --git a/test/bdev/bdevio/bdevio.c b/test/bdev/bdevio/bdevio.c index ce9d873b0..bfc987a03 100644 --- a/test/bdev/bdevio/bdevio.c +++ b/test/bdev/bdevio/bdevio.c @@ -34,7 +34,7 @@ #include "spdk/stdinc.h" #include "spdk/bdev.h" -#include "spdk/copy_engine.h" +#include "spdk/accel_engine.h" #include "spdk/env.h" #include "spdk/log.h" #include "spdk/thread.h" diff --git a/test/bdev/bdevperf/Makefile b/test/bdev/bdevperf/Makefile index 3f9ad380b..730d081c3 100644 --- a/test/bdev/bdevperf/Makefile +++ b/test/bdev/bdevperf/Makefile @@ -40,8 +40,8 @@ APP = bdevperf C_SRCS := bdevperf.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_vmd -SPDK_LIB_LIST += bdev copy event trace log conf thread util sock notify +SPDK_LIB_LIST += event_bdev event_accel event_vmd +SPDK_LIB_LIST += bdev accel event trace log conf thread util sock notify SPDK_LIB_LIST += rpc jsonrpc json app_rpc log_rpc bdev_rpc ifeq ($(OS),Linux) diff --git a/test/bdev/bdevperf/bdevperf.c b/test/bdev/bdevperf/bdevperf.c index f96ca9593..ef0c0b078 100644 --- a/test/bdev/bdevperf/bdevperf.c +++ b/test/bdev/bdevperf/bdevperf.c @@ -34,7 +34,7 @@ #include "spdk/stdinc.h" #include "spdk/bdev.h" -#include "spdk/copy_engine.h" +#include "spdk/accel_engine.h" #include "spdk/endian.h" #include "spdk/env.h" #include "spdk/event.h" diff --git a/test/blobfs/fuse/Makefile b/test/blobfs/fuse/Makefile index aa23cedb4..75f19cf88 100644 --- a/test/blobfs/fuse/Makefile +++ b/test/blobfs/fuse/Makefile @@ -40,8 +40,8 @@ APP = fuse C_SRCS := fuse.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_vmd -SPDK_LIB_LIST += bdev copy event thread util conf trace \ +SPDK_LIB_LIST += event_bdev event_accel event_vmd +SPDK_LIB_LIST += bdev accel event thread util conf trace \ log jsonrpc json rpc sock notify blobfs_bdev # libfuse3 is required internally by blobfs_bdev diff --git a/test/blobfs/mkfs/Makefile b/test/blobfs/mkfs/Makefile index 81a4b944e..51d8af5d4 100644 --- a/test/blobfs/mkfs/Makefile +++ b/test/blobfs/mkfs/Makefile @@ -40,8 +40,8 @@ APP = mkfs C_SRCS := mkfs.c SPDK_LIB_LIST = $(ALL_MODULES_LIST) -SPDK_LIB_LIST += event_bdev event_copy event_vmd -SPDK_LIB_LIST += bdev copy event thread util conf trace \ +SPDK_LIB_LIST += event_bdev event_accel event_vmd +SPDK_LIB_LIST += bdev accel event thread util conf trace \ log jsonrpc json rpc sock notify blobfs_bdev # libfuse3 is required internally by blobfs_bdev diff --git a/test/config_converter/spdk_config.json b/test/config_converter/spdk_config.json index b40e98d8c..af8dcfbcc 100644 --- a/test/config_converter/spdk_config.json +++ b/test/config_converter/spdk_config.json @@ -1,7 +1,7 @@ { "subsystems": [ { - "subsystem": "copy", + "subsystem": "accel", "config": null }, { diff --git a/test/config_converter/spdk_config_virtio.json b/test/config_converter/spdk_config_virtio.json index 733523a27..f9608311c 100644 --- a/test/config_converter/spdk_config_virtio.json +++ b/test/config_converter/spdk_config_virtio.json @@ -1,7 +1,7 @@ { "subsystems": [ { - "subsystem": "copy", + "subsystem": "accel", "config": null }, { diff --git a/test/json_config/alias_rpc/conf.json b/test/json_config/alias_rpc/conf.json index 63268efdb..54a4b0230 100644 --- a/test/json_config/alias_rpc/conf.json +++ b/test/json_config/alias_rpc/conf.json @@ -1,7 +1,7 @@ { "subsystems": [ { - "subsystem": "copy", + "subsystem": "accel", "config": null }, { diff --git a/test/json_config/clear_config.py b/test/json_config/clear_config.py index c40151e75..332e9466e 100755 --- a/test/json_config/clear_config.py +++ b/test/json_config/clear_config.py @@ -132,7 +132,7 @@ def clear_net_framework_subsystem(args, net_framework_config): pass -def clear_copy_subsystem(args, copy_config): +def clear_accel_subsystem(args, accel_config): pass diff --git a/test/unit/lib/event/subsystem.c/subsystem_ut.c b/test/unit/lib/event/subsystem.c/subsystem_ut.c index dd7cf4147..897aa2353 100644 --- a/test/unit/lib/event/subsystem.c/subsystem_ut.c +++ b/test/unit/lib/event/subsystem.c/subsystem_ut.c @@ -115,13 +115,13 @@ subsystem_sort_test_depends_on_multiple(void) set_up_subsystem(&g_ut_subsystems[4], "rpc"); set_up_subsystem(&g_ut_subsystems[5], "scsi"); set_up_subsystem(&g_ut_subsystems[6], "interface"); - set_up_subsystem(&g_ut_subsystems[7], "copy"); + set_up_subsystem(&g_ut_subsystems[7], "accel"); for (i = 0; i < 8; i++) { spdk_add_subsystem(&g_ut_subsystems[i]); } - set_up_depends(&g_ut_subsystem_deps[0], "bdev", "copy"); + set_up_depends(&g_ut_subsystem_deps[0], "bdev", "accel"); set_up_depends(&g_ut_subsystem_deps[1], "scsi", "bdev"); set_up_depends(&g_ut_subsystem_deps[2], "rpc", "interface"); set_up_depends(&g_ut_subsystem_deps[3], "sock", "interface"); @@ -143,7 +143,7 @@ subsystem_sort_test_depends_on_multiple(void) TAILQ_REMOVE(&g_subsystems, subsystem, tailq); subsystem = TAILQ_FIRST(&g_subsystems); - CU_ASSERT(strcmp(subsystem->name, "copy") == 0); + CU_ASSERT(strcmp(subsystem->name, "accel") == 0); TAILQ_REMOVE(&g_subsystems, subsystem, tailq); subsystem = TAILQ_FIRST(&g_subsystems); diff --git a/test/vhost/fiotest/conf.json b/test/vhost/fiotest/conf.json index 5b66d32de..e0eb0b844 100644 --- a/test/vhost/fiotest/conf.json +++ b/test/vhost/fiotest/conf.json @@ -1,7 +1,7 @@ { "subsystems": [ { - "subsystem": "copy", + "subsystem": "accel", "config": null }, { diff --git a/test/vhost/other/conf.json b/test/vhost/other/conf.json index 5bfe22c23..b3e08b4ed 100644 --- a/test/vhost/other/conf.json +++ b/test/vhost/other/conf.json @@ -1,7 +1,7 @@ { "subsystems": [ { - "subsystem": "copy", + "subsystem": "accel", "config": null }, {