xnvme: update submodule to v0.5.0

This updates the xNVMe submodule to v0.5.0 and adjusts the Makefile,
disabling a backend (libvfn) introduced in v0.5.0 which is not of
interest.

With xNVMe v0.5.0 two things important for the bdev_xnvme has changed:

* The 'libaio' backend implementation responds to 'opts.poll_io'. It
  does so by 'xnvme_queue_poke()' returning immediatly instead of
  waiting for at least one outstanding IO to complete or for a timeout
  to occur. This dramatically improves the IO-rate and reduces latency.

* Prior to xNVMe v0.5.0, the liburing library was vendored and "bundled"
  into the xNVMe library. This library-bundling can cause linker issue
  and is thus replaced by linking "properly" with liburing on the system
  via pkg-config discovery.

  To make sure linker can properly link libxnvme.a's content we need to
  make sure we point at system's -luring during the build. Effectively,
  this can now work together with --with-uring[=/uring].

This change is made in preparation to adding the 'conserve_cpu' option
which makes use of 'opts.poll_io' for 'io_mechanism=libaio'.

Signed-off-by: Simon A. F. Lund <simon.lund@samsung.com>
Signed-off-by: Michal Berger <michal.berger@intel.com>
Change-Id: Ibd6e620679a3991a4a8642bb39390a61284aac74
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14677
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
This commit is contained in:
Simon A. F. Lund 2022-09-24 15:35:48 +02:00 committed by Tomasz Zawadzki
parent fecffda6ec
commit 877573897a
4 changed files with 10 additions and 3 deletions

2
configure vendored
View File

@ -1077,7 +1077,7 @@ elif [[ "${CONFIG[PGO_USE]}" = "y" ]]; then
fi fi
fi fi
if [[ "${CONFIG[URING]}" = "y" ]]; then if [[ "${CONFIG[URING]}" = "y" || "${CONFIG[XNVME]}" = "y" ]]; then
if [[ -n "${CONFIG[URING_PATH]}" ]]; then if [[ -n "${CONFIG[URING_PATH]}" ]]; then
check_dir "${CONFIG[URING_PATH]}" check_dir "${CONFIG[URING_PATH]}"
elif ! echo -e '#include <liburing.h>\nint main(void) { return 0; }\n' \ elif ! echo -e '#include <liburing.h>\nint main(void) { return 0; }\n' \

View File

@ -220,6 +220,9 @@ XNVME_INCLUDE_DIR=$(XNVME_DIR)/include
CFLAGS += -I$(XNVME_INCLUDE_DIR) CFLAGS += -I$(XNVME_INCLUDE_DIR)
LDFLAGS += -L$(XNVME_INSTALL_DIR) LDFLAGS += -L$(XNVME_INSTALL_DIR)
SYS_LIBS += -lxnvme SYS_LIBS += -lxnvme
ifneq ($(CONFIG_URING), y)
SYS_LIBS += -luring
endif
endif endif
ifeq ($(CONFIG_DAOS),y) ifeq ($(CONFIG_DAOS),y)

2
xnvme

@ -1 +1 @@
Subproject commit e507f2d1791163d0c2757f1b973cd2cf6dfcb573 Subproject commit 59cca28a61ae3154ba1731ca2ee7daa402ec5e2e

View File

@ -11,7 +11,11 @@ include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
all: all:
(cd $(SPDK_ROOT_DIR)/xnvme && \ (cd $(SPDK_ROOT_DIR)/xnvme && \
export PKG_CONFIG_PATH=$$PKG_CONFIG_PATH:/usr/lib/pkgconfig:/usr/lib64/pkgconfig && \ export PKG_CONFIG_PATH=$$PKG_CONFIG_PATH:/usr/lib/pkgconfig:/usr/lib64/pkgconfig && \
meson setup builddir -Dwith-spdk=false -Dwith-fio=false -Dshared_library=false && \ meson setup builddir \
-Dwith-spdk=false \
-Dwith-fio=false \
-Dwith-libvfn=false \
-Dshared_library=false && \
meson compile -C builddir && \ meson compile -C builddir && \
cd -) cd -)