From c1d08cabf5af87fea93345e357065e30fb75b99a Mon Sep 17 00:00:00 2001 From: tongkunkun Date: Wed, 7 Jun 2023 11:20:28 +0800 Subject: [PATCH] backport features from upstream Signed-off-by: tongkunkun --- ...dma-ctrlr-creating-qpair-memory-leak.patch | 35 +++++ 0041-spdk_top-fix-up-usage-text.patch | 39 +++++ ...ild-add-missing-log-dep-for-env_dpdk.patch | 32 ++++ ...f-add-remote_nic_ips-field-to-config.patch | 118 ++++++++++++++ 0044-doc-Stop-generating-latex-docs.patch | 34 ++++ ...-in-offset_blocks-in-append-callback.patch | 37 +++++ ...emove-kernel-modules-extra-as-FUSE-d.patch | 42 +++++ ...build-set-buildtype-for-debug-builds.patch | 57 +++++++ ...ld-add-support-for-mingw-cross-build.patch | 47 ++++++ ...on-t-use-SPDK-log-levels-where-syslo.patch | 53 +++++++ ...gn-start_valid-if-we-fetched-a-new-S.patch | 57 +++++++ ...-accelerated-engine-to-compute-the-d.patch | 147 ++++++++++++++++++ ...efactor-the-code-in-uring_sock_close.patch | 54 +++++++ 0053-nvme_rdma_ut-Fix-GCC-4.8.5-warning.patch | 41 +++++ ..._record-modify-help-case-to-return-0.patch | 36 +++++ ...use-the-install-directory-for-the-li.patch | 36 +++++ spdk.spec | 22 ++- 17 files changed, 886 insertions(+), 1 deletion(-) create mode 100644 0040-nvme-rdma-Fix-rdma-ctrlr-creating-qpair-memory-leak.patch create mode 100644 0041-spdk_top-fix-up-usage-text.patch create mode 100644 0042-build-add-missing-log-dep-for-env_dpdk.patch create mode 100644 0043-scripts-nvmf_perf-add-remote_nic_ips-field-to-config.patch create mode 100644 0044-doc-Stop-generating-latex-docs.patch create mode 100644 0045-bdev-ocssd-fill-in-offset_blocks-in-append-callback.patch create mode 100644 0046-scripts-pkgdep-Remove-kernel-modules-extra-as-FUSE-d.patch create mode 100644 0047-dpdkbuild-set-buildtype-for-debug-builds.patch create mode 100644 0048-dpdkbuild-add-support-for-mingw-cross-build.patch create mode 100644 0049-NVMf-vfio-user-don-t-use-SPDK-log-levels-where-syslo.patch create mode 100644 0050-nvme-only-reassign-start_valid-if-we-fetched-a-new-S.patch create mode 100644 0051-lib-nvmf-Use-the-accelerated-engine-to-compute-the-d.patch create mode 100644 0052-sock-uring-Refactor-the-code-in-uring_sock_close.patch create mode 100644 0053-nvme_rdma_ut-Fix-GCC-4.8.5-warning.patch create mode 100644 0054-app-trace_record-modify-help-case-to-return-0.patch create mode 100644 0055-mk-libvfio-user-use-the-install-directory-for-the-li.patch diff --git a/0040-nvme-rdma-Fix-rdma-ctrlr-creating-qpair-memory-leak.patch b/0040-nvme-rdma-Fix-rdma-ctrlr-creating-qpair-memory-leak.patch new file mode 100644 index 0000000..e7c7d85 --- /dev/null +++ b/0040-nvme-rdma-Fix-rdma-ctrlr-creating-qpair-memory-leak.patch @@ -0,0 +1,35 @@ +From 6b3ec9683e98013a5c14d535dc879d2030558273 Mon Sep 17 00:00:00 2001 +From: Mao Jiang +Date: Thu, 28 Jan 2021 09:44:53 +0800 +Subject: [PATCH] nvme/rdma: Fix rdma ctrlr creating qpair memory leak + +Change-Id: Ie94cacac0b8dcf90b0243e8d568bb728dc7d3045 +Signed-off-by: Mao Jiang +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6126 +Tested-by: SPDK CI Jenkins +Reviewed-by: Changpeng Liu +Reviewed-by: +Reviewed-by: Aleksey Marchuk +Reviewed-by: Shuhei Matsumoto +Reviewed-by: Ziye Yang +Reviewed-by: Jim Harris +Community-CI: Mellanox Build Bot +--- + lib/nvme/nvme_rdma.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c +index 47023c083..ab6870bdb 100644 +--- a/lib/nvme/nvme_rdma.c ++++ b/lib/nvme/nvme_rdma.c +@@ -1615,6 +1615,7 @@ nvme_rdma_ctrlr_create_qpair(struct spdk_nvme_ctrlr *ctrlr, + qpair = &rqpair->qpair; + rc = nvme_qpair_init(qpair, qid, ctrlr, qprio, num_requests); + if (rc != 0) { ++ nvme_rdma_free(rqpair); + return NULL; + } + +-- +2.34.1 + diff --git a/0041-spdk_top-fix-up-usage-text.patch b/0041-spdk_top-fix-up-usage-text.patch new file mode 100644 index 0000000..249e7a4 --- /dev/null +++ b/0041-spdk_top-fix-up-usage-text.patch @@ -0,0 +1,39 @@ +From 1ed57e1fb6ba33565f7efedde585b51dbb8644cb Mon Sep 17 00:00:00 2001 +From: Jim Harris +Date: Mon, 8 Feb 2021 21:06:27 +0000 +Subject: [PATCH] spdk_top: fix up usage() text + +spdk_top is a JSON-RPC client, so -r specifies the +RPC connect address, not listen address. Also add +missing close parenthesis while we're here. + +Signed-off-by: Jim Harris +Change-Id: I6a910df647a3f5eee4df088a2dcf79bc6d7cc087 +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6326 +Tested-by: SPDK CI Jenkins +Reviewed-by: Paul Luse +Reviewed-by: Changpeng Liu +Reviewed-by: +Reviewed-by: Tomasz Zawadzki +Reviewed-by: Aleksey Marchuk +Community-CI: Mellanox Build Bot +--- + app/spdk_top/spdk_top.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/app/spdk_top/spdk_top.c b/app/spdk_top/spdk_top.c +index fda42158a..157d8f7a6 100644 +--- a/app/spdk_top/spdk_top.c ++++ b/app/spdk_top/spdk_top.c +@@ -2454,7 +2454,7 @@ usage(const char *program_name) + printf("%s [options]", program_name); + printf("\n"); + printf("options:\n"); +- printf(" -r RPC listen address (default: /var/tmp/spdk.sock\n"); ++ printf(" -r RPC connect address (default: /var/tmp/spdk.sock)\n"); + printf(" -h show this usage\n"); + } + +-- +2.34.1 + diff --git a/0042-build-add-missing-log-dep-for-env_dpdk.patch b/0042-build-add-missing-log-dep-for-env_dpdk.patch new file mode 100644 index 0000000..7f2f905 --- /dev/null +++ b/0042-build-add-missing-log-dep-for-env_dpdk.patch @@ -0,0 +1,32 @@ +From 0e0805b55132c169582801ffa56c37490f071c44 Mon Sep 17 00:00:00 2001 +From: Jacek Kalwas +Date: Fri, 12 Feb 2021 13:34:35 -0500 +Subject: [PATCH] build: add missing log dep for env_dpdk + +Signed-off-by: Jacek Kalwas +Change-Id: Ieab3a3851eea9c6c9db2ddbf74d59b17128c3f0f +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6403 +Tested-by: SPDK CI Jenkins +Reviewed-by: Jim Harris +Reviewed-by: Tomasz Zawadzki +Community-CI: Mellanox Build Bot +--- + mk/spdk.lib_deps.mk | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/mk/spdk.lib_deps.mk b/mk/spdk.lib_deps.mk +index a6c7825b7..fe7bfac52 100644 +--- a/mk/spdk.lib_deps.mk ++++ b/mk/spdk.lib_deps.mk +@@ -44,6 +44,8 @@ DEPDIRS-env_ocf := + DEPDIRS-log := + DEPDIRS-rte_vhost := + ++DEPDIRS-env_dpdk := log ++ + DEPDIRS-ioat := log + DEPDIRS-idxd := log util + DEPDIRS-sock := log $(JSON_LIBS) +-- +2.34.1 + diff --git a/0043-scripts-nvmf_perf-add-remote_nic_ips-field-to-config.patch b/0043-scripts-nvmf_perf-add-remote_nic_ips-field-to-config.patch new file mode 100644 index 0000000..acf1214 --- /dev/null +++ b/0043-scripts-nvmf_perf-add-remote_nic_ips-field-to-config.patch @@ -0,0 +1,118 @@ +From c4a330c937ed265c75ec5de604cec50446aa4b32 Mon Sep 17 00:00:00 2001 +From: Karol Latecki +Date: Thu, 28 Jan 2021 16:16:01 +0100 +Subject: [PATCH] scripts/nvmf_perf: add remote_nic_ips field to configuration + +So far the information about remote target IP addresses was +stored in "nic_ips" attribute. Add a new "remote_nic_ips" +attribute to be able to differantiate which IPs are local +to given Server class object. + +Change-Id: I03dac140241341996674b350c51c18da6e2ee447 +Signed-off-by: Karol Latecki +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6205 +Tested-by: SPDK CI Jenkins +Reviewed-by: Michal Berger +Reviewed-by: Jim Harris +Reviewed-by: Tomasz Zawadzki +--- + scripts/perf/nvmf/README.md | 4 ++++ + scripts/perf/nvmf/run_nvmf.py | 19 ++++++++++--------- + 2 files changed, 14 insertions(+), 9 deletions(-) + +diff --git a/scripts/perf/nvmf/README.md b/scripts/perf/nvmf/README.md +index 2c82f4945..d0f9a0598 100644 +--- a/scripts/perf/nvmf/README.md ++++ b/scripts/perf/nvmf/README.md +@@ -73,6 +73,10 @@ Management IP address used for SSH communication with initiator server. + + ### nic_ips + ++List of IP addresses local to initiator. ++ ++### remote_nic_ips ++ + List of target IP addresses to which the initiator should try to connect. + + ### mode +diff --git a/scripts/perf/nvmf/run_nvmf.py b/scripts/perf/nvmf/run_nvmf.py +index daae8779a..885a06ded 100755 +--- a/scripts/perf/nvmf/run_nvmf.py ++++ b/scripts/perf/nvmf/run_nvmf.py +@@ -21,12 +21,13 @@ from common import * + + + class Server: +- def __init__(self, name, username, password, mode, nic_ips, transport): ++ def __init__(self, name, username, password, mode, nic_ips, transport, remote_nic_ips=None): + self.name = name + self.mode = mode + self.username = username + self.password = password + self.nic_ips = nic_ips ++ self.remote_nic_ips = remote_nic_ips + self.transport = transport.lower() + + if not re.match("^[A-Za-z0-9]*$", name): +@@ -319,11 +320,11 @@ class Target(Server): + + + class Initiator(Server): +- def __init__(self, name, username, password, mode, nic_ips, ip, transport="rdma", cpu_frequency=None, ++ def __init__(self, name, username, password, mode, nic_ips, ip, remote_nic_ips, transport="rdma", cpu_frequency=None, + nvmecli_bin="nvme", workspace="/tmp/spdk", cpus_allowed=None, + cpus_allowed_policy="shared", fio_bin="/usr/src/fio/fio"): + +- super(Initiator, self).__init__(name, username, password, mode, nic_ips, transport) ++ super(Initiator, self).__init__(name, username, password, mode, nic_ips, transport, remote_nic_ips) + + self.ip = ip + self.spdk_dir = workspace +@@ -428,7 +429,7 @@ ramp_time={ramp_time} + runtime={run_time} + """ + if "spdk" in self.mode: +- subsystems = self.discover_subsystems(self.nic_ips, subsys_no) ++ subsystems = self.discover_subsystems(self.remote_nic_ips, subsys_no) + bdev_conf = self.gen_spdk_bdev_conf(subsystems) + self.remote_call("echo '%s' > %s/bdev.conf" % (bdev_conf, self.spdk_dir)) + ioengine = "%s/build/fio/spdk_bdev" % self.spdk_dir +@@ -763,11 +764,11 @@ class SPDKTarget(Target): + + + class KernelInitiator(Initiator): +- def __init__(self, name, username, password, mode, nic_ips, ip, transport, ++ def __init__(self, name, username, password, mode, nic_ips, remote_nic_ips, ip, transport, + cpus_allowed=None, cpus_allowed_policy="shared", + cpu_frequency=None, fio_bin="/usr/src/fio/fio", **kwargs): + +- super(KernelInitiator, self).__init__(name, username, password, mode, nic_ips, ip, transport, ++ super(KernelInitiator, self).__init__(name, username, password, mode, nic_ips, ip, remote_nic_ips, transport, + cpus_allowed=cpus_allowed, cpus_allowed_policy=cpus_allowed_policy, + cpu_frequency=cpu_frequency, fio_bin=fio_bin) + +@@ -824,10 +825,10 @@ class KernelInitiator(Initiator): + + + class SPDKInitiator(Initiator): +- def __init__(self, name, username, password, mode, nic_ips, ip, transport="rdma", ++ def __init__(self, name, username, password, mode, nic_ips, remote_nic_ips, ip, transport="rdma", + num_cores=1, cpus_allowed=None, cpus_allowed_policy="shared", + cpu_frequency=None, fio_bin="/usr/src/fio/fio", **kwargs): +- super(SPDKInitiator, self).__init__(name, username, password, mode, nic_ips, ip, transport, ++ super(SPDKInitiator, self).__init__(name, username, password, mode, nic_ips, ip, remote_nic_ips, transport, + cpus_allowed=cpus_allowed, cpus_allowed_policy=cpus_allowed_policy, + cpu_frequency=cpu_frequency, fio_bin=fio_bin) + +@@ -969,7 +970,7 @@ if __name__ == "__main__": + configs = [] + for i in initiators: + if i.mode == "kernel": +- i.kernel_init_connect(i.nic_ips, target_obj.subsys_no) ++ i.kernel_init_connect(i.remote_nic_ips, target_obj.subsys_no) + + cfg = i.gen_fio_config(rw, fio_rw_mix_read, block_size, io_depth, target_obj.subsys_no, + fio_num_jobs, fio_ramp_time, fio_run_time) +-- +2.34.1 + diff --git a/0044-doc-Stop-generating-latex-docs.patch b/0044-doc-Stop-generating-latex-docs.patch new file mode 100644 index 0000000..d0d8345 --- /dev/null +++ b/0044-doc-Stop-generating-latex-docs.patch @@ -0,0 +1,34 @@ +From 1d8861e58f7330d3ba63daab29d4697bed096cdb Mon Sep 17 00:00:00 2001 +From: Ben Walker +Date: Wed, 9 Sep 2020 07:53:56 -0700 +Subject: [PATCH] doc: Stop generating latex docs + +We only publish them as HTML + +Signed-off-by: Ben Walker +Change-Id: I88daf01556271bf87e5bff45608fb068523cb0c2 +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6452 +Tested-by: SPDK CI Jenkins +Community-CI: Mellanox Build Bot +Reviewed-by: Jim Harris +Reviewed-by: Shuhei Matsumoto +--- + doc/Doxyfile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/doc/Doxyfile b/doc/Doxyfile +index d17f0a497..cba68b6f6 100644 +--- a/doc/Doxyfile ++++ b/doc/Doxyfile +@@ -1664,7 +1664,7 @@ EXTRA_SEARCH_MAPPINGS = + # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. + # The default value is: YES. + +-GENERATE_LATEX = YES ++GENERATE_LATEX = NO + + # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a + # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +-- +2.34.1 + diff --git a/0045-bdev-ocssd-fill-in-offset_blocks-in-append-callback.patch b/0045-bdev-ocssd-fill-in-offset_blocks-in-append-callback.patch new file mode 100644 index 0000000..b3bc50b --- /dev/null +++ b/0045-bdev-ocssd-fill-in-offset_blocks-in-append-callback.patch @@ -0,0 +1,37 @@ +From 8aa989e2ba6cd5e2426bd19acb9b271e2d46d8c0 Mon Sep 17 00:00:00 2001 +From: Konrad Sztyber +Date: Wed, 17 Feb 2021 11:29:44 +0100 +Subject: [PATCH] bdev/ocssd: fill in offset_blocks in append callback + +The user only specifies the starting address of a zone to which to +append to and the actual location is expected to be returned in +bdev_io->u.bdev.offset_blocks. + +Signed-off-by: Konrad Sztyber +Change-Id: Icc2e9f5461a746d19686d5288075f03d09bf1b19 +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6441 +Community-CI: Broadcom CI +Community-CI: Mellanox Build Bot +Reviewed-by: Niklas Cassel +Reviewed-by: Jim Harris +Reviewed-by: Shuhei Matsumoto +Tested-by: SPDK CI Jenkins +--- + module/bdev/nvme/bdev_ocssd.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/module/bdev/nvme/bdev_ocssd.c b/module/bdev/nvme/bdev_ocssd.c +index 52c68e73e..cea6de4ce 100644 +--- a/module/bdev/nvme/bdev_ocssd.c ++++ b/module/bdev/nvme/bdev_ocssd.c +@@ -476,6 +476,7 @@ bdev_ocssd_append_cb(void *ctx, const struct spdk_nvme_cpl *cpl) + struct bdev_ocssd_zone *zone = ocdev_io->io.zone; + struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(ctx); + ++ bdev_io->u.bdev.offset_blocks = zone->write_pointer; + zone->write_pointer += bdev_io->u.bdev.num_blocks; + assert(zone->write_pointer <= zone->slba + zone->capacity); + +-- +2.34.1 + diff --git a/0046-scripts-pkgdep-Remove-kernel-modules-extra-as-FUSE-d.patch b/0046-scripts-pkgdep-Remove-kernel-modules-extra-as-FUSE-d.patch new file mode 100644 index 0000000..fdbeab2 --- /dev/null +++ b/0046-scripts-pkgdep-Remove-kernel-modules-extra-as-FUSE-d.patch @@ -0,0 +1,42 @@ +From 83adcc14c92b819042da1723bd3a6e392c34ca76 Mon Sep 17 00:00:00 2001 +From: Michal Berger +Date: Tue, 16 Feb 2021 19:01:47 +0100 +Subject: [PATCH] scripts/pkgdep: Remove kernel-modules-extra as FUSE + dependency + +Rationale behind e663dc82ad which put this package as a dependency +into pkgdep was that it shouldn't be exclusive to vm_setup.sh. + +However, this particular package causes unnecessary kernel upgrades +whenever newer version is detected by dnf|yum. This behavior is out of +pkgdep's scope and as such similar upgrades should be performed via +vm_setup.sh only where its sole purpose is to configure system on a +wider spectrum. + +Signed-off-by: Michal Berger +Change-Id: I066105f95834f3f8d436b9ff52ec1f2bf97844af +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6437 +Tested-by: SPDK CI Jenkins +Community-CI: Mellanox Build Bot +Reviewed-by: Jim Harris +Reviewed-by: Tomasz Zawadzki +--- + scripts/pkgdep/rhel.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/pkgdep/rhel.sh b/scripts/pkgdep/rhel.sh +index b2be71b67..7b0c764fe 100755 +--- a/scripts/pkgdep/rhel.sh ++++ b/scripts/pkgdep/rhel.sh +@@ -120,7 +120,7 @@ if [[ $INSTALL_PMEM == "true" ]]; then + fi + if [[ $INSTALL_FUSE == "true" ]]; then + # Additional dependencies for FUSE and NVMe-CUSE +- yum install -y kernel-modules-extra fuse3-devel ++ yum install -y fuse3-devel + fi + if [[ $INSTALL_RDMA == "true" ]]; then + # Additional dependencies for RDMA transport in NVMe over Fabrics +-- +2.34.1 + diff --git a/0047-dpdkbuild-set-buildtype-for-debug-builds.patch b/0047-dpdkbuild-set-buildtype-for-debug-builds.patch new file mode 100644 index 0000000..7e19435 --- /dev/null +++ b/0047-dpdkbuild-set-buildtype-for-debug-builds.patch @@ -0,0 +1,57 @@ +From 619b8e373304ba4829109d062b1c5784ecdc29f5 Mon Sep 17 00:00:00 2001 +From: Nick Connolly +Date: Tue, 23 Feb 2021 09:57:14 +0000 +Subject: [PATCH] dpdkbuild: set --buildtype for debug builds + +When ./configure --enable-debug is specified, meson is invoked using +the default 'release' buildtype and '-O0 -g' is added to DPDK_CFLAGS. +Instead, specify --buildtype=debug so that meson knows it is a debug +build, will return the correct value from get_option('buildtype') and +can choose the appropriate toolset options to enable symbolic debugging. +Using --buildtype=debug generates unoptimised code which matches +the current intent. + +Tested by building with and without --enable-debug and verifying that +meson reports 'debug' for the debug build. + +Signed-off-by: Nick Connolly +Change-Id: Iabb79cd2051145e03fea8fd749cfb18b78e625a0 +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6497 +Community-CI: Broadcom CI +Community-CI: Mellanox Build Bot +Tested-by: SPDK CI Jenkins +Reviewed-by: Jim Harris +Reviewed-by: Aleksey Marchuk +--- + dpdkbuild/Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/dpdkbuild/Makefile b/dpdkbuild/Makefile +index 4a045cbb2..5e073b347 100644 +--- a/dpdkbuild/Makefile ++++ b/dpdkbuild/Makefile +@@ -45,6 +45,10 @@ DPDK_KMODS = true + endif + DPDK_OPTS += -Denable_kmods=$(DPDK_KMODS) + ++ifeq ($(CONFIG_DEBUG),y) ++DPDK_OPTS += --buildtype=debug ++endif ++ + # the drivers we use + DPDK_DRIVERS = bus bus/pci bus/vdev mempool/ring + +@@ -79,10 +83,6 @@ endif + + DPDK_CFLAGS += -fPIC + +-ifeq ($(CONFIG_DEBUG),y) +-DPDK_CFLAGS += -O0 -g +-endif +- + ifeq ($(CONFIG_WERROR),y) + DPDK_CFLAGS += -Werror + else +-- +2.34.1 + diff --git a/0048-dpdkbuild-add-support-for-mingw-cross-build.patch b/0048-dpdkbuild-add-support-for-mingw-cross-build.patch new file mode 100644 index 0000000..fa66d14 --- /dev/null +++ b/0048-dpdkbuild-add-support-for-mingw-cross-build.patch @@ -0,0 +1,47 @@ +From 8436569a7010a795c87f35b6909a8b8b96d054ed Mon Sep 17 00:00:00 2001 +From: Nick Connolly +Date: Tue, 23 Feb 2021 10:13:16 +0000 +Subject: [PATCH] dpdkbuild: add support for mingw cross build + +If CONFIG_CROSS_PREFIX includes 'mingw', then specify --cross-file +'config/x86/cross-mingw' which is used as part of regular DPDK +testing, so is being maintained. For any other non-null prefix, default +to the current error message that automatic cross builds are not +supported. + +Tested by running ./configure --cross-prefix=x86_64-w64-mingw32 +and verified that 'make' in dpdkbuild used the cross tools. + +Signed-off-by: Nick Connolly +Change-Id: I75c401dfe8422f6c5f1bbe631695e7ae6118f723 +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6530 +Community-CI: Broadcom CI +Community-CI: Mellanox Build Bot +Tested-by: SPDK CI Jenkins +Reviewed-by: Jim Harris +Reviewed-by: Aleksey Marchuk +--- + dpdkbuild/Makefile | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/dpdkbuild/Makefile b/dpdkbuild/Makefile +index 3c058b80e..4a045cbb2 100644 +--- a/dpdkbuild/Makefile ++++ b/dpdkbuild/Makefile +@@ -69,9 +69,13 @@ endif + DPDK_OPTS += -Dmachine=$(TARGET_ARCHITECTURE) + + ifneq ($(CONFIG_CROSS_PREFIX),) ++ifeq ($(findstring mingw,$(CONFIG_CROSS_PREFIX)),mingw) ++DPDK_OPTS += --cross-file $(SPDK_ROOT_DIR)/dpdk/config/x86/cross-mingw ++else + $(error Automatic DPDK cross build is not supported. Please compile DPDK manually \ + with e.g. `meson build --cross-file config/arm/arm64_armv8_linux_gcc`) + endif ++endif + + DPDK_CFLAGS += -fPIC + +-- +2.34.1 + diff --git a/0049-NVMf-vfio-user-don-t-use-SPDK-log-levels-where-syslo.patch b/0049-NVMf-vfio-user-don-t-use-SPDK-log-levels-where-syslo.patch new file mode 100644 index 0000000..0ddbc3f --- /dev/null +++ b/0049-NVMf-vfio-user-don-t-use-SPDK-log-levels-where-syslo.patch @@ -0,0 +1,53 @@ +From 53ff83c24e84cd0ed301d895bf78035469e6183e Mon Sep 17 00:00:00 2001 +From: Thanos Makatos +Date: Mon, 22 Feb 2021 12:37:28 -0500 +Subject: [PATCH] NVMf/vfio-user: don't use SPDK log levels where syslog(3) log + levels should be used + +Signed-off-by: Thanos Makatos +Change-Id: Ia198b509e396a4635af9f9133e6dc40fc34c4ac1 +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6522 +Community-CI: Broadcom CI +Community-CI: Mellanox Build Bot +Tested-by: SPDK CI Jenkins +Reviewed-by: Jim Harris +Reviewed-by: Changpeng Liu +Reviewed-by: Shuhei Matsumoto +--- + lib/nvmf/vfio_user.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/lib/nvmf/vfio_user.c b/lib/nvmf/vfio_user.c +index 85cfe7c7c..4e6b1ea4a 100644 +--- a/lib/nvmf/vfio_user.c ++++ b/lib/nvmf/vfio_user.c +@@ -1339,12 +1339,12 @@ vfio_user_log(vfu_ctx_t *vfu_ctx, int level, char const *msg) + { + struct nvmf_vfio_user_endpoint *endpoint = vfu_get_private(vfu_ctx); + +- if (level >= SPDK_LOG_DEBUG) { +- SPDK_DEBUGLOG(nvmf_vfio, "%s: %s", endpoint_id(endpoint), msg); +- } else if (level >= SPDK_LOG_NOTICE) { +- SPDK_NOTICELOG("%s: %s", endpoint_id(endpoint), msg); ++ if (level >= LOG_DEBUG) { ++ SPDK_DEBUGLOG(nvmf_vfio, "%s: %s\n", endpoint_id(endpoint), msg); ++ } else if (level >= LOG_NOTICE) { ++ SPDK_NOTICELOG("%s: %s\n", endpoint_id(endpoint), msg); + } else { +- SPDK_ERRLOG("%s: %s", endpoint_id(endpoint), msg); ++ SPDK_ERRLOG("%s: %s\n", endpoint_id(endpoint), msg); + } + } + +@@ -1620,7 +1620,7 @@ nvmf_vfio_user_listen(struct spdk_nvmf_transport *transport, + goto out; + } + vfu_setup_log(endpoint->vfu_ctx, vfio_user_log, +- SPDK_DEBUGLOG_FLAG_ENABLED("nvmf_vfio") ? SPDK_LOG_DEBUG : SPDK_LOG_ERROR); ++ SPDK_DEBUGLOG_FLAG_ENABLED("nvmf_vfio") ? LOG_DEBUG : LOG_ERR); + + err = vfio_user_dev_info_fill(endpoint); + if (err < 0) { +-- +2.34.1 + diff --git a/0050-nvme-only-reassign-start_valid-if-we-fetched-a-new-S.patch b/0050-nvme-only-reassign-start_valid-if-we-fetched-a-new-S.patch new file mode 100644 index 0000000..98825e0 --- /dev/null +++ b/0050-nvme-only-reassign-start_valid-if-we-fetched-a-new-S.patch @@ -0,0 +1,57 @@ +From 1f49ee235f29ecb409b91ab3b2e22a837f33e950 Mon Sep 17 00:00:00 2001 +From: Niklas Cassel +Date: Fri, 19 Feb 2021 14:14:51 +0000 +Subject: [PATCH] nvme: only reassign start_valid if we fetched a new SGE + +For a SGL using PRPs, there is always an alignment check of the start +address in the beginning of the loop. This is stored in start_valid. + +If the start is indeed valid, we might fetch a new SGE, +and then perform a second alignment check on this new SGE. + +However, this second alignment check is done unconditionally, +meaning that for the last SGE in a request, we check if the +same start address is aligned twice. + +Only perform the second alignment check if we actually fetched +a new SGE. + +Signed-off-by: Niklas Cassel +Change-Id: I9df8038c650b0879f838d1d9d895e8dd7172840d +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6493 +Community-CI: Mellanox Build Bot +Tested-by: SPDK CI Jenkins +Reviewed-by: Jim Harris +Reviewed-by: Shuhei Matsumoto +Reviewed-by: Aleksey Marchuk +--- + lib/nvme/nvme_ns_cmd.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/lib/nvme/nvme_ns_cmd.c b/lib/nvme/nvme_ns_cmd.c +index d3e27c7db..6441853df 100644 +--- a/lib/nvme/nvme_ns_cmd.c ++++ b/lib/nvme/nvme_ns_cmd.c +@@ -253,13 +253,13 @@ _nvme_ns_cmd_split_request_prp(struct spdk_nvme_ns *ns, + req_current_length += sge_length; + if (req_current_length < req->payload_size) { + next_sge_fn(sgl_cb_arg, (void **)&address, &sge_length); ++ /* ++ * If the next SGE is not page aligned, we will need to create a ++ * child request for what we have so far, and then start a new ++ * child request for the next SGE. ++ */ ++ start_valid = _is_page_aligned(address, page_size); + } +- /* +- * If the next SGE is not page aligned, we will need to create a child +- * request for what we have so far, and then start a new child request for +- * the next SGE. +- */ +- start_valid = _is_page_aligned(address, page_size); + } + + if (start_valid && end_valid && !last_sge) { +-- +2.34.1 + diff --git a/0051-lib-nvmf-Use-the-accelerated-engine-to-compute-the-d.patch b/0051-lib-nvmf-Use-the-accelerated-engine-to-compute-the-d.patch new file mode 100644 index 0000000..25a525a --- /dev/null +++ b/0051-lib-nvmf-Use-the-accelerated-engine-to-compute-the-d.patch @@ -0,0 +1,147 @@ +From be57e2a6ec668f644985e40c7eac917ef66be0d9 Mon Sep 17 00:00:00 2001 +From: Ziye Yang +Date: Thu, 21 Jan 2021 19:49:41 +0800 +Subject: [PATCH] lib/nvmf: Use the accelerated engine to compute the data + digest. + +This patch is used to leverage accelerated engine to compute +the data digest in the following case: + +1 DIF is not used. +2 The data to compute is aligned with size 4, i.e, %4 = 0. + +Signed-off-by: Ziye Yang +Change-Id: I51fb6e3ab04391062b244cba6e249c8e20d3180f +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6014 +Community-CI: Broadcom CI +Community-CI: Mellanox Build Bot +Tested-by: SPDK CI Jenkins +Reviewed-by: Changpeng Liu +Reviewed-by: Shuhei Matsumoto +Reviewed-by: Aleksey Marchuk +Reviewed-by: Ben Walker +--- + include/spdk_internal/nvme_tcp.h | 1 + + lib/nvmf/tcp.c | 58 +++++++++++++++++++++++++------- + 2 files changed, 46 insertions(+), 13 deletions(-) + +diff --git a/include/spdk_internal/nvme_tcp.h b/include/spdk_internal/nvme_tcp.h +index a1a05c4b6..8d2e20515 100644 +--- a/include/spdk_internal/nvme_tcp.h ++++ b/include/spdk_internal/nvme_tcp.h +@@ -102,6 +102,7 @@ struct nvme_tcp_pdu { + bool has_hdgst; + bool ddgst_enable; + uint32_t header_digest_crc32; ++ uint32_t data_digest_crc32; + uint8_t data_digest[SPDK_NVME_TCP_DIGEST_LEN]; + + uint8_t ch_valid_bytes; +diff --git a/lib/nvmf/tcp.c b/lib/nvmf/tcp.c +index cc2e971f7..13fb043f6 100644 +--- a/lib/nvmf/tcp.c ++++ b/lib/nvmf/tcp.c +@@ -815,13 +815,6 @@ _tcp_write_pdu(struct nvme_tcp_pdu *pdu) + uint32_t mapped_length = 0; + ssize_t rc; + struct spdk_nvmf_tcp_qpair *tqpair = pdu->qpair; +- uint32_t crc32c; +- +- /* Data Digest */ +- if (pdu->data_len > 0 && g_nvme_tcp_ddgst[pdu->hdr.common.pdu_type] && tqpair->host_ddgst_enable) { +- crc32c = nvme_tcp_pdu_calc_data_digest(pdu); +- MAKE_DIGEST_WORD(pdu->data_digest, crc32c); +- } + + pdu->sock_req.iovcnt = nvme_tcp_build_iovs(pdu->iov, SPDK_COUNTOF(pdu->iov), pdu, + tqpair->host_hdgst_enable, tqpair->host_ddgst_enable, +@@ -842,20 +835,59 @@ _tcp_write_pdu(struct nvme_tcp_pdu *pdu) + } + } + ++static void ++data_crc32_accel_done(void *cb_arg, int status) ++{ ++ struct nvme_tcp_pdu *pdu = cb_arg; ++ ++ if (spdk_unlikely(status)) { ++ SPDK_ERRLOG("Failed to compute the data digest for pdu =%p\n", pdu); ++ _pdu_write_done(pdu, status); ++ return; ++ } ++ ++ pdu->data_digest_crc32 ^= SPDK_CRC32C_XOR; ++ MAKE_DIGEST_WORD(pdu->data_digest, pdu->data_digest_crc32); ++ ++ _tcp_write_pdu(pdu); ++} ++ ++static void ++pdu_data_crc32_compute(struct nvme_tcp_pdu *pdu) ++{ ++ struct spdk_nvmf_tcp_qpair *tqpair = pdu->qpair; ++ uint32_t crc32c; ++ ++ /* Data Digest */ ++ if (pdu->data_len > 0 && g_nvme_tcp_ddgst[pdu->hdr.common.pdu_type] && tqpair->host_ddgst_enable) { ++ /* Only suport this limitated case for the first step */ ++ if (spdk_likely(!pdu->dif_ctx && (pdu->data_len % SPDK_NVME_TCP_DIGEST_ALIGNMENT == 0))) { ++ spdk_accel_submit_crc32cv(tqpair->accel_channel, &pdu->data_digest_crc32, ++ pdu->data_iov, pdu->data_iovcnt, 0, data_crc32_accel_done, pdu); ++ return; ++ } ++ ++ crc32c = nvme_tcp_pdu_calc_data_digest(pdu); ++ MAKE_DIGEST_WORD(pdu->data_digest, crc32c); ++ } ++ ++ _tcp_write_pdu(pdu); ++} ++ + static void + header_crc32_accel_done(void *cb_arg, int status) + { + struct nvme_tcp_pdu *pdu = cb_arg; + +- pdu->header_digest_crc32 = pdu->header_digest_crc32 ^ SPDK_CRC32C_XOR; ++ pdu->header_digest_crc32 ^= SPDK_CRC32C_XOR; + MAKE_DIGEST_WORD((uint8_t *)pdu->hdr.raw + pdu->hdr.common.hlen, pdu->header_digest_crc32); + if (spdk_unlikely(status)) { +- SPDK_ERRLOG("Failed to finish the crc32 work\n"); ++ SPDK_ERRLOG("Failed to compute header digest on pdu=%p\n", pdu); + _pdu_write_done(pdu, status); + return; + } + +- _tcp_write_pdu(pdu); ++ pdu_data_crc32_compute(pdu); + } + + static void +@@ -883,7 +915,7 @@ nvmf_tcp_qpair_write_pdu(struct spdk_nvmf_tcp_qpair *tqpair, + return; + } + +- _tcp_write_pdu(pdu); ++ pdu_data_crc32_compute(pdu); + } + + static int +@@ -1705,12 +1737,12 @@ nvmf_tcp_icreq_handle(struct spdk_nvmf_tcp_transport *ttransport, + /* Not fatal. */ + } + +- if (tqpair->host_hdgst_enable) { ++ if (tqpair->host_hdgst_enable || tqpair->host_ddgst_enable) { + tqpair->accel_channel = spdk_accel_engine_get_io_channel(); + if (spdk_unlikely(!tqpair->accel_channel)) { + fes = SPDK_NVME_TCP_TERM_REQ_FES_HDGST_ERROR; + error_offset = offsetof(struct spdk_nvme_tcp_ic_req, dgst); +- SPDK_ERRLOG("Unabled to get accel_channel for tqpair=%p, failed to enable header digest\n", ++ SPDK_ERRLOG("Unabled to get accel_channel for tqpair=%p, failed to enable digest for header or data\n", + tqpair); + goto end; + } +-- +2.34.1 + diff --git a/0052-sock-uring-Refactor-the-code-in-uring_sock_close.patch b/0052-sock-uring-Refactor-the-code-in-uring_sock_close.patch new file mode 100644 index 0000000..3318cb6 --- /dev/null +++ b/0052-sock-uring-Refactor-the-code-in-uring_sock_close.patch @@ -0,0 +1,54 @@ +From 2f1cd867f3dedb1213e700eb042ba8c62a2afe9f Mon Sep 17 00:00:00 2001 +From: Ziye Yang +Date: Wed, 24 Feb 2021 23:28:54 +0800 +Subject: [PATCH] sock/uring: Refactor the code in uring_sock_close + +Use the same style compared the code in posix_sock_close. +Thus if we cannot close sock->fd, i.e., we leak the fd, +but we can still free the memory related with uring sock. + +Signed-off-by: Ziye Yang +Change-Id: Id2f0e8a2c7065f100c2b009e76a49b528fd221b6 +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6539 +Tested-by: SPDK CI Jenkins +Community-CI: Mellanox Build Bot +Reviewed-by: Shuhei Matsumoto +Reviewed-by: Aleksey Marchuk +--- + module/sock/uring/uring.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/module/sock/uring/uring.c b/module/sock/uring/uring.c +index f80a709b8..e050ca954 100644 +--- a/module/sock/uring/uring.c ++++ b/module/sock/uring/uring.c +@@ -585,19 +585,20 @@ static int + uring_sock_close(struct spdk_sock *_sock) + { + struct spdk_uring_sock *sock = __uring_sock(_sock); +- int rc; + + assert(TAILQ_EMPTY(&_sock->pending_reqs)); + assert(sock->group == NULL); + ++ /* If the socket fails to close, the best choice is to ++ * leak the fd but continue to free the rest of the sock ++ * memory. */ ++ close(sock->fd); ++ + spdk_pipe_destroy(sock->recv_pipe); + free(sock->recv_buf); +- rc = close(sock->fd); +- if (rc == 0) { +- free(sock); +- } ++ free(sock); + +- return rc; ++ return 0; + } + + static ssize_t +-- +2.34.1 + diff --git a/0053-nvme_rdma_ut-Fix-GCC-4.8.5-warning.patch b/0053-nvme_rdma_ut-Fix-GCC-4.8.5-warning.patch new file mode 100644 index 0000000..e54d9b5 --- /dev/null +++ b/0053-nvme_rdma_ut-Fix-GCC-4.8.5-warning.patch @@ -0,0 +1,41 @@ +From b7115d46fe263d91544c24660a11cdd19b4cc646 Mon Sep 17 00:00:00 2001 +From: Alexey Marchuk +Date: Fri, 5 Feb 2021 20:46:16 +0300 +Subject: [PATCH] nvme_rdma_ut: Fix GCC 4.8.5 warning + +nvme_rdma_ut.c:370:9: warning: missing braces around initializer [-Wmissing-braces] + struct nvme_rdma_qpair rqpair = {0}; + ^ +Designated initializers is used with scalar value +while the first element of nvme_rdma_qpair is +a structure + +Change-Id: I5a4e76612ccbd2c84283fe3ae2c57b9ea98591cf +Signed-off-by: Alexey Marchuk +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6305 +Tested-by: SPDK CI Jenkins +Community-CI: Mellanox Build Bot +Reviewed-by: Ben Walker +Reviewed-by: Shuhei Matsumoto +Reviewed-by: Jim Harris +Reviewed-by: +--- + test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c b/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c +index b3c0336d5..c27db303a 100644 +--- a/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c ++++ b/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c +@@ -365,7 +365,7 @@ test_nvme_rdma_build_contig_inline_request(void) + static void + test_nvme_rdma_alloc_reqs(void) + { +- struct nvme_rdma_qpair rqpair = {0}; ++ struct nvme_rdma_qpair rqpair = {}; + int rc; + + memset(&g_nvme_hooks, 0, sizeof(g_nvme_hooks)); +-- +2.34.1 + diff --git a/0054-app-trace_record-modify-help-case-to-return-0.patch b/0054-app-trace_record-modify-help-case-to-return-0.patch new file mode 100644 index 0000000..77fd7d1 --- /dev/null +++ b/0054-app-trace_record-modify-help-case-to-return-0.patch @@ -0,0 +1,36 @@ +From 097d1979b1a4d411721093f17cb8e2b354d11aa9 Mon Sep 17 00:00:00 2001 +From: wanghailiangx +Date: Mon, 25 Jan 2021 09:24:04 -0500 +Subject: [PATCH] app/trace_record: modify help case to return 0 + +Case 'h' or 'H' should return 0, this is a normal return. + +Change-Id: I872cdeeaab8bbe0efac8a8f959c1bd88f159b0b8 +Signed-off-by: wanghailiangx +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6064 +Tested-by: SPDK CI Jenkins +Community-CI: Mellanox Build Bot +Reviewed-by: Jim Harris +Reviewed-by: Aleksey Marchuk +Reviewed-by: Xiaodong Liu +Reviewed-by: Ben Walker +--- + app/trace_record/trace_record.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/app/trace_record/trace_record.c b/app/trace_record/trace_record.c +index ac815b020..e17bcb5b1 100644 +--- a/app/trace_record/trace_record.c ++++ b/app/trace_record/trace_record.c +@@ -613,6 +613,8 @@ int main(int argc, char **argv) + file_name = optarg; + break; + case 'h': ++ usage(); ++ exit(EXIT_SUCCESS); + default: + usage(); + exit(1); +-- +2.34.1 + diff --git a/0055-mk-libvfio-user-use-the-install-directory-for-the-li.patch b/0055-mk-libvfio-user-use-the-install-directory-for-the-li.patch new file mode 100644 index 0000000..b594db9 --- /dev/null +++ b/0055-mk-libvfio-user-use-the-install-directory-for-the-li.patch @@ -0,0 +1,36 @@ +From ae9f80354ada144c49087419e870883482b3e9df Mon Sep 17 00:00:00 2001 +From: Changpeng Liu +Date: Fri, 19 Feb 2021 17:04:45 +0800 +Subject: [PATCH] mk/libvfio-user: use the install directory for the link path + +Previously the libvfio-user didn't install the static library to +the install directory, with that fix in libvfio-user, we can use +the install directory now. + +Change-Id: I3f232395a6dc3bf6d7d3937b245eb10c4b6a0e26 +Signed-off-by: Changpeng Liu +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6470 +Tested-by: SPDK CI Jenkins +Community-CI: Mellanox Build Bot +Reviewed-by: Ben Walker +Reviewed-by: Jim Harris +--- + mk/spdk.common.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mk/spdk.common.mk b/mk/spdk.common.mk +index 5656b0b7b..c78b42f17 100644 +--- a/mk/spdk.common.mk ++++ b/mk/spdk.common.mk +@@ -180,7 +180,7 @@ VFIO_USER_BUILD_TYPE=release + endif + VFIO_USER_INSTALL_DIR=$(VFIO_USER_DIR)/build + VFIO_USER_INCLUDE_DIR=$(VFIO_USER_INSTALL_DIR)/usr/local/include +-VFIO_USER_LIBRARY_DIR=$(VFIO_USER_DIR)/build/$(VFIO_USER_BUILD_TYPE)/lib ++VFIO_USER_LIBRARY_DIR=$(VFIO_USER_INSTALL_DIR)/usr/local/lib64 + CFLAGS += -I$(VFIO_USER_INCLUDE_DIR) + LDFLAGS += -L$(VFIO_USER_LIBRARY_DIR) + SYS_LIBS += -Wl,-Bstatic -lvfio-user -Wl,-Bdynamic -ljson-c +-- +2.34.1 + diff --git a/spdk.spec b/spdk.spec index dd058e3..05409b4 100644 --- a/spdk.spec +++ b/spdk.spec @@ -4,7 +4,7 @@ Name: spdk Version: 21.01.1 -Release: 14 +Release: 15 Summary: Set of libraries and utilities for high performance user-mode storage License: BSD and MIT URL: http://spdk.io @@ -48,6 +48,23 @@ Patch36: 0036-scripts-nvmf_perf-fix-pylint-E1111-error-assignment-.patch Patch37: 0037-scripts-nvmf_perf-check-extra_params-key-berofe-acce.patch Patch38: 0038-nvme-rdma-Only-wait-for-the-RDMA-event-if-spdk_rdma_.patch Patch39: 0039-Cleanup-Fix-boolean-arg-in-fio-plugin.patch +Patch40: 0040-nvme-rdma-Fix-rdma-ctrlr-creating-qpair-memory-leak.patch +Patch41: 0041-spdk_top-fix-up-usage-text.patch +Patch42: 0042-build-add-missing-log-dep-for-env_dpdk.patch +Patch43: 0043-scripts-nvmf_perf-add-remote_nic_ips-field-to-config.patch +Patch44: 0044-doc-Stop-generating-latex-docs.patch +Patch45: 0045-bdev-ocssd-fill-in-offset_blocks-in-append-callback.patch +Patch46: 0046-scripts-pkgdep-Remove-kernel-modules-extra-as-FUSE-d.patch +Patch47: 0047-dpdkbuild-set-buildtype-for-debug-builds.patch +Patch48: 0048-dpdkbuild-add-support-for-mingw-cross-build.patch +Patch49: 0049-NVMf-vfio-user-don-t-use-SPDK-log-levels-where-syslo.patch +Patch50: 0050-nvme-only-reassign-start_valid-if-we-fetched-a-new-S.patch +Patch51: 0051-lib-nvmf-Use-the-accelerated-engine-to-compute-the-d.patch +Patch52: 0052-sock-uring-Refactor-the-code-in-uring_sock_close.patch +Patch53: 0053-nvme_rdma_ut-Fix-GCC-4.8.5-warning.patch +Patch54: 0054-app-trace_record-modify-help-case-to-return-0.patch +Patch55: 0055-mk-libvfio-user-use-the-install-directory-for-the-li.patch + %define package_version %{version}-%{release} @@ -224,6 +241,9 @@ mv doc/output/html/ %{install_docdir} %changelog +* Wed Jun 7 2023 tongkunkun - 21.01.1-15 +- backport features from upstream + * Tue May 30 2023 Jia Chao - 21.01.1-14 - Fix: tools do not need require %{?_isa} package for it's noarch. -- Gitee