
This commmit introduces a new bdev type backed up by DAOS DFS. Design wise this bdev is a file named as the bdev itself in the DAOS POSIX container that uses daos event queue per io channel. Having an event queue per io channel is showing the best IO throughput. The implementation uses the independent pool and container connections per device's channel for the best IO throughput. The semantic of usage is the same as any other bdev type. To build SPDK with daos support, daos-devel package has to be installed. The current supported DAOS version is v2.X, please see the installatoin and setup guide here: https://docs.daos.io/v2.0/ $ ./configure --with-daos To run it, the target machine should have daos_agent up and running, as well as the pool and POSIX container ready to use, please see the detailed requirements here: https://docs.daos.io/v2.0/admin/hardware/. To export bdev over tcp: $ ./nvmf_tgt & $ ./scripts/rpc.py nvmf_create_transport -t TCP -u 2097152 -i 2097152 $ ./scripts/rpc.py bdev_daos_create daosdev0 <pool-label> <cont-label> 1048576 4096 $ ./scripts/rpc.py nvmf_create_subsystem nqn.2016-06.io.spdk1:cnode1 -a -s SPDK00000000000001 -d SPDK_Virtual_Controller_1 $ ./scripts/rpc.py nvmf_subsystem_add_ns nqn.2016-06.io.spdk1:cnode1 daosdev0 $ ./scripts/rpc.py nvmf_subsystem_add_listener nqn.2016-06.io.spdk1:cnode1 -t tcp -a <IP> -s 4420 On the initiator side, make sure that `nvme-tcp` module is loaded then connect drives, for instance: $ nvme connect-all -t tcp -a 172.31.91.61 -s 4420 $ nvme list Signed-off-by: Denis Barakhtanov <denis.barahtanov@croit.io> Change-Id: I51945465122e0fb96de4326db742169419966806 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12260 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
114 lines
3.2 KiB
Makefile
114 lines
3.2 KiB
Makefile
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright (c) Intel Corporation.
|
|
# All rights reserved.
|
|
# Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
#
|
|
|
|
BLOCKDEV_MODULES_LIST = bdev_malloc bdev_null bdev_nvme bdev_passthru bdev_lvol
|
|
BLOCKDEV_MODULES_LIST += bdev_raid bdev_error bdev_gpt bdev_split bdev_delay
|
|
BLOCKDEV_MODULES_LIST += bdev_zone_block
|
|
BLOCKDEV_MODULES_LIST += blobfs blobfs_bdev blob_bdev blob lvol vmd nvme
|
|
|
|
# Some bdev modules don't have pollers, so they can directly run in interrupt mode
|
|
INTR_BLOCKDEV_MODULES_LIST = bdev_malloc bdev_passthru bdev_error bdev_gpt bdev_split bdev_raid
|
|
# Logical volume, blobstore and blobfs can directly run in both interrupt mode and poll mode.
|
|
INTR_BLOCKDEV_MODULES_LIST += bdev_lvol blobfs blobfs_bdev blob_bdev blob lvol
|
|
|
|
ifeq ($(CONFIG_XNVME),y)
|
|
BLOCKDEV_MODULES_LIST += bdev_xnvme
|
|
endif
|
|
|
|
ifeq ($(CONFIG_VFIO_USER),y)
|
|
BLOCKDEV_MODULES_LIST += vfio_user
|
|
endif
|
|
|
|
ifeq ($(CONFIG_CRYPTO),y)
|
|
BLOCKDEV_MODULES_LIST += bdev_crypto
|
|
ifeq ($(CONFIG_CRYPTO_MLX5),y)
|
|
BLOCKDEV_MODULES_PRIVATE_LIBS += -lmlx5 -libverbs
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_OCF),y)
|
|
BLOCKDEV_MODULES_LIST += bdev_ocf
|
|
BLOCKDEV_MODULES_LIST += ocfenv
|
|
endif
|
|
|
|
ifeq ($(CONFIG_REDUCE),y)
|
|
BLOCKDEV_MODULES_LIST += bdev_compress reduce
|
|
BLOCKDEV_MODULES_PRIVATE_LIBS += -lpmem
|
|
ifeq ($(CONFIG_REDUCE_MLX5),y)
|
|
BLOCKDEV_MODULES_PRIVATE_LIBS += -lmlx5 -libverbs
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_RDMA),y)
|
|
BLOCKDEV_MODULES_LIST += rdma
|
|
BLOCKDEV_MODULES_PRIVATE_LIBS += -libverbs -lrdmacm
|
|
ifeq ($(CONFIG_RDMA_PROV),mlx5_dv)
|
|
BLOCKDEV_MODULES_PRIVATE_LIBS += -lmlx5
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(OS),Linux)
|
|
BLOCKDEV_MODULES_LIST += bdev_aio
|
|
BLOCKDEV_MODULES_PRIVATE_LIBS += -laio
|
|
INTR_BLOCKDEV_MODULES_LIST += bdev_aio
|
|
BLOCKDEV_MODULES_LIST += bdev_ftl ftl
|
|
ifeq ($(CONFIG_VIRTIO),y)
|
|
BLOCKDEV_MODULES_LIST += bdev_virtio virtio
|
|
endif
|
|
ifeq ($(CONFIG_ISCSI_INITIATOR),y)
|
|
BLOCKDEV_MODULES_LIST += bdev_iscsi
|
|
# Fedora installs libiscsi to /usr/lib64/iscsi for some reason.
|
|
BLOCKDEV_MODULES_PRIVATE_LIBS += -L/usr/lib64/iscsi -liscsi
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_URING),y)
|
|
BLOCKDEV_MODULES_LIST += bdev_uring
|
|
BLOCKDEV_MODULES_PRIVATE_LIBS += -luring
|
|
ifneq ($(strip $(CONFIG_URING_PATH)),)
|
|
CFLAGS += -I$(CONFIG_URING_PATH)
|
|
BLOCKDEV_MODULES_PRIVATE_LIBS += -L$(CONFIG_URING_PATH)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_RBD),y)
|
|
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
|
|
endif
|
|
|
|
SOCK_MODULES_LIST = sock_posix
|
|
|
|
ifeq ($(OS), Linux)
|
|
ifeq ($(CONFIG_URING),y)
|
|
SOCK_MODULES_LIST += sock_uring
|
|
endif
|
|
endif
|
|
|
|
ACCEL_MODULES_LIST = accel_ioat ioat
|
|
ifeq ($(CONFIG_IDXD),y)
|
|
ACCEL_MODULES_LIST += accel_dsa accel_iaa idxd
|
|
endif
|
|
|
|
SCHEDULER_MODULES_LIST = scheduler_dynamic
|
|
ifeq (y,$(DPDK_POWER))
|
|
SCHEDULER_MODULES_LIST += env_dpdk scheduler_dpdk_governor scheduler_gscheduler
|
|
endif
|
|
|
|
EVENT_BDEV_SUBSYSTEM = event_bdev event_accel event_vmd event_sock
|
|
|
|
ALL_MODULES_LIST = $(BLOCKDEV_MODULES_LIST) $(ACCEL_MODULES_LIST) $(SCHEDULER_MODULES_LIST) $(SOCK_MODULES_LIST)
|
|
SYS_LIBS += $(BLOCKDEV_MODULES_PRIVATE_LIBS)
|