Accepting request 1116606 from home:wagi:branches:Base:System

- 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

- Update to version 2.6 (jsc#PED-3610 jsc#PED-4879 jsc#PED-5061):
  * json: fix seg. fault converting NULL to JSON string (bsc#1213762)
  * nvme-print: Show subsystem iopolicy (bsc#1124564)
  * nvme-print-stdout: Do not show non reachable ns in namespace topology (bsc#1212598)
  * 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: fix counter while looping through uuid_list (bsc#1212598)
  * fabrics: fix fc config JSON file handling (bsc#1210089)
 Refresh 0100-harden_nvmf-connect@.service.patch
- Update to version 2.4 (jsc#PED-553 jsc#PED-3884):
  * nvme-print: sanitize supported-log-pages output (bsc#1209550)
  * nvme: fix block count and data size logic (bsc#1209564)
  * nvme-doc: update man page for supported-log-pages (bsc#1209550)
  * fabrics: Fix ordering for auto connect services (bsc#1208075)
  * 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)
  * fabrics: Honor JSON config file in connect-all command (bsc#1199504)
  * udev: Add HOST_IFACE to udev rule (bsc#1208001)
  * fabrics: Remove dhchap-ctrl-secret from discover/connect-all (bsc#1201701)

OBS-URL: https://build.opensuse.org/request/show/1116606
OBS-URL: https://build.opensuse.org/package/show/Base:System/nvme-cli?expand=0&rev=144
This commit is contained in:
Daniel Wagner 2023-10-10 07:41:58 +00:00 committed by Git OBS Bridge
parent e5c3de679c
commit 7e49889644
5 changed files with 160 additions and 24 deletions

View File

@ -0,0 +1,55 @@
From b3059ae50b905b265913dc541b740eef85c54814 Mon Sep 17 00:00:00 2001
From: Martin Wilck <mwilck@suse.com>
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 <mwilck@suse.com>
---
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

View File

@ -0,0 +1,49 @@
From 39f94260eaf7e0604772e6cabf1c04ec0f03201a Mon Sep 17 00:00:00 2001
From: Martin Wilck <mwilck@suse.com>
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 <mwilck@suse.com>
---
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

4
nvme-cli-rpmlintrc Normal file
View File

@ -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")

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Mon Oct 9 14:17:21 UTC 2023 - Daniel Wagner <daniel.wagner@suse.com>
- 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 <daniel.wagner@suse.com>
@ -9,7 +19,7 @@ Wed Oct 4 15:11:19 UTC 2023 - Daniel Wagner <daniel.wagner@suse.com>
-------------------------------------------------------------------
Fri Sep 29 11:49:56 UTC 2023 - Daniel Wagner <daniel.wagner@suse.com>
- 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 <daniel.wagner@suse.com>
* 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 <daniel.wagner@suse.com>
* 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 <daniel.wagner@suse.com>
- 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 <daniel.wagner@suse.com>
* 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 <daniel.wagner@suse.com>
* 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 <daniel.wagner@suse.com>
* 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 <daniel.wagner@suse.com>
@ -325,7 +338,7 @@ Wed Nov 02 17:10:58 UTC 2022 - Daniel Wagner <daniel.wagner@suse.com>
* 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 <daniel.wagner@suse.com>
* 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 <daniel.wagner@suse.com>
- 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 <daniel.wagner@suse.com>

View File

@ -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