diff --git a/0001-fabrics-autoconnect-add-service-unit-for-connecting-.patch b/0001-fabrics-autoconnect-add-service-unit-for-connecting-.patch new file mode 100644 index 0000000..dcf8df2 --- /dev/null +++ b/0001-fabrics-autoconnect-add-service-unit-for-connecting-.patch @@ -0,0 +1,55 @@ +From b3059ae50b905b265913dc541b740eef85c54814 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Tue, 23 May 2023 12:48:55 +0200 +Subject: [PATCH 1/2] fabrics: autoconnect: add service unit for connecting + NBFT subsystems + +Create a separate unit file for connecting to NBFT-defined subsystems. +This unit is intended to be called in "post-up" scripts from network +management software if an interface defined in the HFI section of the +NBFT is brought up (L3-configured). + +In simple scenarios with just one HFI, this won't be necessary because the +interface must be brought up in the initramfs already. But in multipath +scenarios, the initramfs may choose not to wait for every HFI to come up, and +thus it may be necessary to bring up the secondary connection(s) later on. + +Signed-off-by: Martin Wilck +--- + meson.build | 1 + + nvmf-autoconnect/systemd/nvmf-connect-nbft.service.in | 11 +++++++++++ + 2 files changed, 12 insertions(+) + create mode 100644 nvmf-autoconnect/systemd/nvmf-connect-nbft.service.in + +diff --git a/meson.build b/meson.build +index 3d3fb08541ff..de595c82c064 100644 +--- a/meson.build ++++ b/meson.build +@@ -222,6 +222,7 @@ endforeach + systemd_files = [ + 'nvmefc-boot-connections.service', + 'nvmf-autoconnect.service', ++ 'nvmf-connect-nbft.service', + 'nvmf-connect.target', + 'nvmf-connect@.service', + ] +diff --git a/nvmf-autoconnect/systemd/nvmf-connect-nbft.service.in b/nvmf-autoconnect/systemd/nvmf-connect-nbft.service.in +new file mode 100644 +index 000000000000..8769884da415 +--- /dev/null ++++ b/nvmf-autoconnect/systemd/nvmf-connect-nbft.service.in +@@ -0,0 +1,11 @@ ++# This unit is meant to be started by network management software ++# after a network interface defined in the NBFT gets set up ++[Unit] ++Description=Connect NBFT-defined NVMe-oF subsystems automatically ++ConditionPathExists=|/sys/firmware/acpi/tables/NBFT ++ConditionPathExists=|/sys/firmware/acpi/tables/NBFT1 ++ ++[Service] ++Type=oneshot ++ExecStartPre=/sbin/modprobe nvme-fabrics ++ExecStart=@SBINDIR@/nvme connect-nbft +-- +2.42.0 + diff --git a/0002-fabrics-add-udev-rule-to-avoid-renaming-nbft-interfa.patch b/0002-fabrics-add-udev-rule-to-avoid-renaming-nbft-interfa.patch new file mode 100644 index 0000000..f24dcc4 --- /dev/null +++ b/0002-fabrics-add-udev-rule-to-avoid-renaming-nbft-interfa.patch @@ -0,0 +1,49 @@ +From 39f94260eaf7e0604772e6cabf1c04ec0f03201a Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Tue, 23 May 2023 14:19:14 +0200 +Subject: [PATCH 2/2] fabrics: add udev rule to avoid renaming nbft interfaces + +In the initramfs, the interface naming is taken care of by dracut. +But there are various network-interface-naming policies in place which +may attempt to rename the interface, causing confusion and possibly +wrong interface parameters. + +Add an udev rule that avoids renaming any network interface that +has been assigned a name nbft$N, which is by convention the naming +scheme that is used for NBFT device in the initramfs. + +Note: The simpler 'NAME:="%k"' directive doesn't work because udev rejects +it ('Ignoring NAME="%k", as it will take no effect.'). The ":=" syntax makes +sure the interface isn't renamed any more by later rules. "INTERFACE" is set +by the kernel in the "add" uevent for a network interface. + +Signed-off-by: Martin Wilck +--- + meson.build | 1 + + nvmf-autoconnect/udev-rules/65-persistent-net-nbft.rules.in | 2 ++ + 2 files changed, 3 insertions(+) + create mode 100644 nvmf-autoconnect/udev-rules/65-persistent-net-nbft.rules.in + +diff --git a/meson.build b/meson.build +index de595c82c064..80695e01b906 100644 +--- a/meson.build ++++ b/meson.build +@@ -238,6 +238,7 @@ endforeach + udev_files = [ + '70-nvmf-autoconnect.rules', + '71-nvmf-iopolicy-netapp.rules', ++ '65-persistent-net-nbft.rules', + ] + + foreach file : udev_files +diff --git a/nvmf-autoconnect/udev-rules/65-persistent-net-nbft.rules.in b/nvmf-autoconnect/udev-rules/65-persistent-net-nbft.rules.in +new file mode 100644 +index 000000000000..344942bca0c0 +--- /dev/null ++++ b/nvmf-autoconnect/udev-rules/65-persistent-net-nbft.rules.in +@@ -0,0 +1,2 @@ ++# Avoid renaming nbft$X interfaces ++SUBSYSTEM=="net", ACTION!="remove", ENV{INTERFACE}=="nbft*", NAME:="%E{INTERFACE}" +-- +2.42.0 + diff --git a/nvme-cli-rpmlintrc b/nvme-cli-rpmlintrc new file mode 100644 index 0000000..5995425 --- /dev/null +++ b/nvme-cli-rpmlintrc @@ -0,0 +1,4 @@ +addFilter("W: systemd-service-without-service_add_pre") +addFilter("W: systemd-service-without-service_add_post") +addFilter("W: systemd-service-without-service_del_preun") +addFilter("W: systemd-service-without-service_del_postun") diff --git a/nvme-cli.changes b/nvme-cli.changes index 657e9df..550903e 100644 --- a/nvme-cli.changes +++ b/nvme-cli.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Mon Oct 9 14:17:21 UTC 2023 - Daniel Wagner + +- Use fixed timestamps for documentation allowing reproducable builds +- Announce nvmeof-boot-support support via Provides +- Filter rpmlint warnings for systemd-service-without-service_ macros +- Add missing service files for NBFT feature + * add 0001-fabrics-autoconnect-add-service-unit-for-connecting-.patch + * add 0002-fabrics-add-udev-rule-to-avoid-renaming-nbft-interfa.patch + ------------------------------------------------------------------- Wed Oct 4 15:11:19 UTC 2023 - Daniel Wagner @@ -9,7 +19,7 @@ Wed Oct 4 15:11:19 UTC 2023 - Daniel Wagner ------------------------------------------------------------------- Fri Sep 29 11:49:56 UTC 2023 - Daniel Wagner -- Update to version 2.6: +- Update to version 2.6 (jsc#PED-3610 jsc#PED-4879 jsc#PED-5061): * nvme: allocate payload buffer in create-ns command * nvme-print-stdout: Add CAP.CPS and CAP.NSSS human readable outputs * nvme: Add output-format default option instead of argconfig json option @@ -55,19 +65,19 @@ Fri Sep 29 11:49:56 UTC 2023 - Daniel Wagner * plugins/zns: Fix offset in report zones * nvme-rpmb: Fix nvme_show_id_ctrl_rpmbs() definition error * fabrics: Use corresponding hostid when hostnqn is generated - * json: fix seg. fault converting NULL to JSON string + * json: fix seg. fault converting NULL to JSON string (bsc#1213762) * nvme-cli: fix extended metadata size calculation - * nvme-print: Show subsystem iopolicy - * nvme-print-stdout: Do not show non reachable ns in namespace topology + * nvme-print: Show subsystem iopolicy (bsc#1124564) + * nvme-print-stdout: Do not show non reachable ns in namespace topology (bsc#1212598) * nvme-print: Fix show-topolocy for ctrls * doc: Fix typo in documentation * nvme-print-stdout: fix storage tag size label - * nvme-print-stdout: List only ctrls which are part of ns - * nvme-print-stdout: Support subsys reachable from several hosts - * ccan: Add htable, strset and dependencies - * ccan: Remove unused documentation + * nvme-print-stdout: List only ctrls which are part of ns (bsc#1212598) + * nvme-print-stdout: Support subsys reachable from several hosts (bsc#1212598) + * ccan: Add htable, strset and dependencies (bsc#1212598) + * ccan: Remove unused documentation (bsc#1212598) * nvme-print: Split max power flags - * nvme-print: fix counter while looping through uuid_list + * nvme-print: fix counter while looping through uuid_list (bsc#1212598) * fabrics: only look for matching ctrl on same host * README: Correct hugetlbfs spelling error * util: Delete unused CFG_BOOL argconfig type as duplicated with CFG_FLAG @@ -217,14 +227,13 @@ Fri Sep 29 11:49:56 UTC 2023 - Daniel Wagner * nvme: Use stdout for passthru and submit_io commands success messages * nvme: Fix passthru command function indentation errors * nvme: Add support for NVMe-MI receive command - * fabrics: fix fc config JSON file handling -- Refresh 0100-harden_nvmf-connect@.service.patch + * fabrics: fix fc config JSON file handling (bsc#1210089) + Refresh 0100-harden_nvmf-connect@.service.patch - Fix install path for nvme-regress script - ------------------------------------------------------------------- Fri Mar 31 15:44:20 UTC 2023 - Daniel Wagner -- Update to version 2.4: +- Update to version 2.4 (jsc#PED-553 jsc#PED-3884): * plugins/ocp: Add SMART cloud log to solidigm plugin * nvme-print: Unify number base format for nsid * nvme-(discover,connect,connect-all): enable options '--keyring' and '--tls_key' @@ -243,14 +252,14 @@ Fri Mar 31 15:44:20 UTC 2023 - Daniel Wagner * plugins/inspur: Cast vendor specific smart log value * nvme: Use correct ABORT type for self abort test * plugins/solidigm: Do not overwrite previously initialized variable - * nvme-print: sanitize supported-log-pages output + * nvme-print: sanitize supported-log-pages output (bsc#1209550) * nvme: Enforce length to a multiple of 4 in get_log_page - * nvme: fix block count and data size logic + * nvme: fix block count and data size logic (bsc#1209564) * util: Introduce argconfig simple helper to check seen condition * plugins/ocp: Add set feature EOL/PLP failure mode no-uuid option * plugins/ocp: Refactor to clear feature identifier C1h and C3h * plugins/ocp: Add support for clear PCIe correctable error counters feature - * nvme-doc: update man page for supported-log-pages + * nvme-doc: update man page for supported-log-pages (bsc#1209550) * plugins/ocp: OCP 2.0 field updates for SMART cloud log * nvme: Fix parameter limit range * fdp: Fix wrong Reclaim Unit Handle Status size @@ -259,7 +268,7 @@ Fri Mar 31 15:44:20 UTC 2023 - Daniel Wagner * nvme: Fix invalid memory access in show_registers * util: Add argconfig seen flag parameter to check if feature NSID set * nvme-print: fix segfault in supported-log-pages json output - * fabrics: Fix ordering for auto connect services + * fabrics: Fix ordering for auto connect services (bsc#1208075) * nvme.c: Check Firmware Update Granularity in fwdl * log: high latency timestamp issue * nvme: Align get feature data buffer length by page size to allocate @@ -298,6 +307,10 @@ Fri Mar 31 15:44:20 UTC 2023 - Daniel Wagner * nvme: Support effects-log for fabrics ctrl * plugins/solidigm: Add uuid index resolution * plugins/ocp: Use network byte order for OCP UUID value + * json_discovery_log: avoid buffer overrun (bsc#1207435) + * Fix connect nbft regressions (bsc#1209905) + * Fix auto connect conditions (bsc#1210105) + * Fix auto boot for NBFT connections (bsc#1211647) ------------------------------------------------------------------- Mon Jan 30 13:55:50 UTC 2023 - Daniel Wagner @@ -325,7 +338,7 @@ Wed Nov 02 17:10:58 UTC 2022 - Daniel Wagner * build: Remove unused uuid.wrap file * build: Remove unusned uuid.h include * completions: Add show-topology tab completion - * fabrics: Honor JSON config file in connect-all command + * fabrics: Honor JSON config file in connect-all command (bsc#1199504) * fabrics: Trigger auto connect if config.json exists * fabrics: fix 'persistent' handling during connect-all with JSON file * fabrics: nvme config --modify depends on -n and -t argument @@ -390,7 +403,7 @@ Wed Nov 02 17:10:58 UTC 2022 - Daniel Wagner * tree: Combine NVMe file descriptor into struct nvme_dev * tree: Move global device info to a single struct * tree: fail on non-negative return values from parse_and_open - * udev: Add HOST_IFACE to udev rule + * udev: Add HOST_IFACE to udev rule (bsc#1208001) * util/json.h: Add json_object_get_uint64 fallback implementation * util/json: Add 128 bit JSON helpers * util/types: Add 128 bit conversion helpers @@ -442,11 +455,14 @@ Mon Aug 01 13:17:48 UTC 2022 - Daniel Wagner - Update to version v2.1: * nvme: Do not print error message in collect_effects_log helper - * fabrics: Remove dhchap-ctrl-secret from discover/connect-all + * fabrics: Remove dhchap-ctrl-secret from discover/connect-all (bsc#1201701) * nvme-print: sanitize the get-feature async event config output * nvme: Set default rae value for nvme_get_nsid_log users * fabrics: Avoid nvme_scan_ctrl when disconnecting * print: Fix nvme_id_uuid_list + * fabrics: Already connected uses a different error code (bsc#1199994) + * fabrics: skip connect if the transport types don't match (bsc#1199949 bsc#1199994) + * nvme-print: Show ANA state only for one namespace (bsc#1200044 bsc#1199956 bsc#1199990) ------------------------------------------------------------------- Thu Jul 14 14:37:05 UTC 2022 - Daniel Wagner diff --git a/nvme-cli.spec b/nvme-cli.spec index fd28a7d..12fe896 100644 --- a/nvme-cli.spec +++ b/nvme-cli.spec @@ -26,6 +26,9 @@ License: GPL-2.0-only Group: Hardware/Other URL: https://github.com/linux-nvme/nvme-cli/ Source0: nvme-cli-%{version}.tar.gz +Source1: nvme-cli-rpmlintrc +Patch001: 0001-fabrics-autoconnect-add-service-unit-for-connecting-.patch +Patch002: 0002-fabrics-add-udev-rule-to-avoid-renaming-nbft-interfa.patch # downstream patches Patch100: 0100-harden_nvmf-connect@.service.patch BuildRequires: asciidoc @@ -34,13 +37,15 @@ BuildRequires: gcc-c++ BuildRequires: libhugetlbfs-devel BuildRequires: libjson-c-devel BuildRequires: libnvme-devel -BuildRequires: libuuid-devel BuildRequires: meson BuildRequires: pkgconfig +BuildRequires: systemd-rpm-macros BuildRequires: xmlto BuildRequires: zlib-devel BuildRequires: pkgconfig(bash-completion) BuildRequires: pkgconfig(libudev) +# nvme-cli API for NBFT support. +Provides: nvmeof-boot-support = 0.1 %systemd_ordering @@ -85,6 +90,7 @@ Optional dependency offering zsh completion for NVM Express user space tools %autosetup -p1 %build +export KBUILD_BUILD_TIMESTAMP=@${SOURCE_DATE_EPOCH:-$(date +%s)} %meson \ -Dudevrulesdir=%{_udevrulesdir} \ -Ddracutrulesdir=%{_sysconfdir}/dracut/dracut.conf.d \ @@ -114,9 +120,11 @@ mkdir -p %{buildroot}%{_sbindir} pushd %{buildroot}%{_sbindir} ln -s service rcnvmefc-boot-connections ln -s service rcnvmf-autoconnect +ln -s service rcnvmf-connect +ln -s service rcnvmf-connect-nbft popd -%define services nvmefc-boot-connections.service nvmf-connect.target nvmf-autoconnect.service +%define services nvmefc-boot-connections.service nvmf-autoconnect.service nvmf-connect.target nvmf-connect-nbft.service %pre %service_add_pre %{services} nvmf-connect@.service @@ -153,13 +161,17 @@ fi %{_sbindir}/nvme %{_sbindir}/rcnvmefc-boot-connections %{_sbindir}/rcnvmf-autoconnect +%{_sbindir}/rcnvmf-connect +%{_sbindir}/rcnvmf-connect-nbft %{_mandir}/man1/nvme*.1*%{?ext_man} +%{_udevrulesdir}/65-persistent-net-nbft.rules %{_udevrulesdir}/70-nvmf-autoconnect.rules %{_udevrulesdir}/71-nvmf-iopolicy-netapp.rules -%{_unitdir}/nvmf-autoconnect.service %{_unitdir}/nvmefc-boot-connections.service -%{_unitdir}/nvmf-connect@.service +%{_unitdir}/nvmf-autoconnect.service +%{_unitdir}/nvmf-connect-nbft.service %{_unitdir}/nvmf-connect.target +%{_unitdir}/nvmf-connect@.service %dir %{_sysconfdir}/nvme/ %ghost %{_sysconfdir}/nvme/hostnqn %ghost %{_sysconfdir}/nvme/hostid