diff --git a/.gitignore b/.gitignore index 7707dd5..1580e5b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,35 @@ /v1.3.tar.gz /v1.4.tar.gz /v1.6.tar.gz +/v1.7.tar.gz +/v1.8.1.tar.gz +/v1.9.tar.gz +/v1.10.tar.gz +/v1.10.1.tar.gz +/v1.11.tar.gz +/v1.11.1.tar.gz +/nvme-cli-2.0-rc4.tar.gz +/nvme-cli-2.0-rc5.tar.gz +/nvme-cli-2.0-rc6.tar.gz +/nvme-cli-2.0-rc8.tar.gz +/nvme-cli-2.0.tar.gz +/nvme-cli-2.1-rc0.tar.gz +/nvme-cli-2.1.1.tar.gz +/nvme-cli-2.1.2.tar.gz +/nvme-cli-2.2.tar.gz +/nvme-cli-2.2.1.tar.gz +/nvme-cli-2.3.tar.gz +/nvme-cli-2.4.tar.gz +/nvme-cli-2.5.tar.gz +/nvme-cli-2.6.tar.gz +/nvme-cli-2.7.1.tar.gz +/nvme-cli-2.8.tar.gz +/nvme-cli-2.9.1.tar.gz +/nvme-cli-2.10.tar.gz +/nvme-cli-2.10.2.tar.gz +/nvme-cli-2.11.tar.gz +/nvme-cli-2.12.tar.gz +/nvme-cli-2.13.tar.gz +/nvme-cli-2.14.tar.gz +/nvme-cli-2.15.tar.gz +/nvme-cli-2.16.tar.gz diff --git a/99-nvme-nbft-connect.sh b/99-nvme-nbft-connect.sh new file mode 100644 index 0000000..1dc0324 --- /dev/null +++ b/99-nvme-nbft-connect.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +if [[ "$1" == nbft* ]] && [[ "$2" == "up" ]]; then + systemctl start nvmf-connect-nbft.service +fi diff --git a/99-nvme-nbft-no-ignore-carrier.conf b/99-nvme-nbft-no-ignore-carrier.conf new file mode 100644 index 0000000..4f19515 --- /dev/null +++ b/99-nvme-nbft-no-ignore-carrier.conf @@ -0,0 +1,15 @@ +# Boot from NVMe over TCP (NBFT) +# +# For NVMe/TCP connections that provide namespaces containing rootfs +# it is crucial to react on carrier events and reconnect any missing +# NVMe/TCP connections as defined in the ACPI NBFT table. A custom +# /usr/lib/NetworkManager/dispatcher.d/99-nvme-nbft-connect.sh hook +# will respawn nvmf-connect-nbft.service on such occasion. + +[device-nbft-no-ignore-carrier] + +# only affects nbft0, nbft1, ... interfaces +match-device=interface-name:nbft* + +# react on link up/down events +ignore-carrier=no diff --git a/nvme-cli.spec b/nvme-cli.spec index 4b38afd..5fa7a3a 100644 --- a/nvme-cli.spec +++ b/nvme-cli.spec @@ -1,44 +1,296 @@ -#%global commit0 bdbb4da0979fbdc079cf98410cdb31cf799e83b3 -#%global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) +# RHEL 8 compatibility +%{!?version_no_tilde: %define version_no_tilde %{shrink:%(echo '%{version}' | tr '~' '-')}} + +%global nmlibdir %{_prefix}/lib/NetworkManager Name: nvme-cli -Version: 1.6 +Version: 2.16 Release: 1%{?dist} Summary: NVMe management command line interface -License: GPLv2+ +License: GPL-2.0-only URL: https://github.com/linux-nvme/nvme-cli -#Source0: https://github.com/linux-nvme/%{name}/archive/%{commit0}.tar.gz -Source0: https://github.com/linux-nvme/%{name}/archive/v%{version}.tar.gz +Source0: %{url}/archive/v%{version_no_tilde}/%{name}-%{version_no_tilde}.tar.gz +Source1: 99-nvme-nbft-connect.sh +Source2: 99-nvme-nbft-no-ignore-carrier.conf + +BuildRequires: meson >= 0.53 +BuildRequires: gcc gcc-c++ +BuildRequires: systemd-devel +BuildRequires: systemd-rpm-macros +BuildRequires: zlib-devel +BuildRequires: openssl-devel +%if (0%{?rhel} == 0) || (0%{?rhel} > 9) +BuildRequires: kernel-headers +%endif + +BuildRequires: libnvme-devel >= 1.16.1 +BuildRequires: json-c-devel >= 0.14 + +BuildRequires: asciidoc +BuildRequires: xmlto + +Requires: util-linux -BuildRequires: libuuid-devel -BuildRequires: gcc %description nvme-cli provides NVM-Express user space tooling for Linux. %prep -#%setup -qn %{name}-%{commit0} -%setup +%autosetup -p1 -n %{name}-%{version_no_tilde} %build -make PREFIX=/usr CFLAGS="%{optflags}" LDFLAGS="%{__global_ldflags}" %{?_smp_mflags} +%meson -Dudevrulesdir=%{_udevrulesdir} -Dsystemddir=%{_unitdir} -Dpdc-enabled=false -Ddocs=all -Ddocs-build=true -Dhtmldir=%{_pkgdocdir} +%meson_build %install -%make_install PREFIX=/usr +%meson_install +%{__install} -pm 644 README.md %{buildroot}%{_pkgdocdir} +mkdir -p $RPM_BUILD_ROOT%{nmlibdir}/dispatcher.d +mkdir -p $RPM_BUILD_ROOT%{nmlibdir}/conf.d +%{__install} -pm 755 %{SOURCE1} $RPM_BUILD_ROOT%{nmlibdir}/dispatcher.d/ +%{__install} -pm 644 %{SOURCE2} $RPM_BUILD_ROOT%{nmlibdir}/conf.d/ + +# hostid and hostnqn are supposed to be unique per machine. We obviously +# can't package them. +# nvme-stas ships the stas-config@.service that will take care +# of generating these files if missing. See rhbz 2065886#c19 +rm -f %{buildroot}%{_sysconfdir}/nvme/hostid +rm -f %{buildroot}%{_sysconfdir}/nvme/hostnqn + +# Do not install the dracut rule yet. See rhbz 1742764 +rm -f %{buildroot}/usr/lib/dracut/dracut.conf.d/70-nvmf-autoconnect.conf + +# Move html docs into the right place +mv %{buildroot}%{_pkgdocdir}/nvme %{buildroot}%{_pkgdocdir}/html +rm -rf %{buildroot}%{_pkgdocdir}/nvme + + +%post +# https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_systemd +%systemd_post nvmefc-boot-connections.service +%systemd_post nvmf-autoconnect.service +%systemd_post nvmf-connect@.service +%systemd_post nvmf-connect-nbft.service +if [ -S /run/udev/control ]; then + udevadm control --reload + udevadm trigger +fi + +%preun +%systemd_preun nvmefc-boot-connections.service +%systemd_preun nvmf-autoconnect.service +%systemd_preun nvmf-connect@.service +%systemd_preun nvmf-connect-nbft.service + +%postun +%systemd_postun nvmefc-boot-connections.service +%systemd_postun nvmf-autoconnect.service +%systemd_postun nvmf-connect@.service +%systemd_postun nvmf-connect-nbft.service %files %license LICENSE -%doc README.md +%doc %{_pkgdocdir} %{_sbindir}/nvme %{_mandir}/man1/nvme*.gz -%{_datadir}/bash_completion.d/nvme +%{_datadir}/bash-completion/completions/nvme +%{_datadir}/zsh/site-functions/_nvme +%dir %{_sysconfdir}/nvme +%config(noreplace) %{_sysconfdir}/nvme/discovery.conf +%{_unitdir}/nvmefc-boot-connections.service +%{_unitdir}/nvmf-autoconnect.service +%{_unitdir}/nvmf-connect.target +%{_unitdir}/nvmf-connect@.service +%{_unitdir}/nvmf-connect-nbft.service +%{_udevrulesdir}/65-persistent-net-nbft.rules +%{_udevrulesdir}/70-nvmf-autoconnect.rules +%{_udevrulesdir}/70-nvmf-keys.rules +%{_udevrulesdir}/71-nvmf-netapp.rules +%{_udevrulesdir}/71-nvmf-vastdata.rules +%{_udevrulesdir}/71-nvmf-hpe.rules +# Do not install the dracut rule yet. See rhbz 1742764 +# /usr/lib/dracut/dracut.conf.d/70-nvmf-autoconnect.conf +%{nmlibdir}/dispatcher.d/99-nvme-nbft-connect.sh +%{nmlibdir}/conf.d/99-nvme-nbft-no-ignore-carrier.conf %changelog +* Thu Dec 04 2025 Tomas Bzatek - 2.16-1 +- Update to 2.16 + +* Fri Aug 15 2025 Tomas Bzatek - 2.15-2 +- Fix nvme-list JSON output compatibility +- Rename 71-nvme-hpe.rules to 71-nvmf-hpe.rules + +* Fri Jul 25 2025 Tomas Bzatek - 2.15-1 +- Update to 2.15 + +* Thu Jul 24 2025 Fedora Release Engineering - 2.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jul 09 2025 Tomas Bzatek - 2.14-1 +- Update to 2.14 +- Disable Persistent Discovery Controllers by default + +* Fri Apr 11 2025 Tomas Bzatek - 2.13-1 +- Update to 2.13 + +* Mon Mar 17 2025 Tomas Bzatek - 2.12-1 +- Update to 2.12 + +* Tue Feb 04 2025 Tomas Bzatek - 2.11-3 +- Add systemd units scriptlets +- Reload udevd after installing udev rules + +* Fri Jan 17 2025 Fedora Release Engineering - 2.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Oct 31 2024 Tomas Bzatek - 2.11-1 +- Update to 2.11 + +* Mon Aug 26 2024 Tomas Bzatek - 2.10.2-2 +- Install NetworkManager override for nbft interfaces +- Rename reconnect NetworkManager hook to 99-nvme-nbft-connect.sh + +* Mon Aug 05 2024 Tomas Bzatek - 2.10.2-1 +- Update to 2.10.2 + +* Mon Aug 05 2024 Tomas Bzatek - 2.10-1 +- Update to 2.10 + +* Thu Jul 18 2024 Fedora Release Engineering - 2.9.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Mon Jun 03 2024 Tomas Bzatek - 2.9.1-2 +- Install custom nvmf-connect-nbft.sh NetworkManager hook + +* Fri May 03 2024 Tomas Bzatek - 2.9.1-1 +- Update to 2.9.1 + +* Tue Apr 23 2024 Tomas Bzatek - 2.8-2 +- Harden the systemd units + +* Wed Feb 14 2024 Tomas Bzatek - 2.8-1 +- Update to 2.8 + +* Fri Feb 09 2024 Tomas Bzatek - 2.7.1-4 +- Lower the verbosity of TP4126 hostnqn-hostid consistency checks + +* Thu Jan 25 2024 Fedora Release Engineering - 2.7.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 2.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Dec 28 2023 Tomas Bzatek - 2.7.1-1 +- Update to 2.7.1 + +* Fri Sep 29 2023 Tomas Bzatek - 2.6-1 +- Update to 2.6 + +* Thu Aug 17 2023 Tomas Bzatek - 2.5-4 +- Mark /etc/nvme/discovery.conf as (noreplace) + +* Mon Aug 14 2023 Tomas Bzatek - 2.5-3 +- Backport 'fabrics: Use corresponding hostid when hostnqn is generated' + +* Thu Jul 20 2023 Fedora Release Engineering - 2.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 04 2023 Tomas Bzatek - 2.5-1 +- Update to 2.5 + +* Thu Apr 20 2023 Tomas Bzatek - 2.4-2 +- Backport the NBFT support from git master + +* Mon Apr 03 2023 Tomas Bzatek - 2.4-1 +- Update to 2.4 + +* Wed Feb 01 2023 Tomas Bzatek - 2.3-1 +- Update to 2.3 + +* Thu Jan 19 2023 Fedora Release Engineering - 2.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Nov 04 2022 Tomas Bzatek - 2.2.1-1 +- Update to 2.2.1 + +* Tue Nov 01 2022 Tomas Bzatek - 2.2-1 +- Update to 2.2 + +* Fri Aug 19 2022 Tomas Bzatek - 2.1.2-1 +- Update to 2.1.2 + +* Fri Aug 05 2022 Tomas Bzatek - 2.1.1-1 +- Update to 2.1.1 + +* Fri Jul 22 2022 Fedora Release Engineering - 2.1~rc0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Jul 15 2022 Tomas Bzatek - 2.1~rc0-1 +- Update to 2.1-rc0 +- Drop the hostnqn generate scriptlet (#2065886) + +* Mon Apr 11 2022 Tomas Bzatek - 2.0-1 +- Update to 2.0 + +* Mon Apr 04 2022 Tomas Bzatek - 2.0~rc8-1 +- Update to 2.0-rc8 +- Added scriptlet to generate /etc/nvme/hostnqn and hostid files (#2065886) + +* Tue Mar 15 2022 Tomas Bzatek - 2.0~rc6-1 +- Update to 2.0-rc6 + +* Fri Mar 04 2022 Tomas Bzatek - 2.0~rc5-1 +- Update to 2.0-rc5 + +* Thu Jan 20 2022 Fedora Release Engineering - 1.11.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 1.11.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jan 26 2021 Fedora Release Engineering - 1.11.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 1.11.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sat Apr 25 2020 luto@kernel.org - 1.11.1-1 +- Update to 1.11 + +* Thu Mar 19 2020 luto@kernel.org - 1.10.1-1 +- Update to 1.10.1 + +* Wed Jan 29 2020 Fedora Release Engineering - 1.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Oct 02 2019 luto@kernel.org - 1.9-1 +- Update to 1.9 +- Certain fabric functionality may not work yet due to missing dracut + support and missing hostid and hostnqn configuration. + +* Thu Jul 25 2019 Fedora Release Engineering - 1.8.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Apr 15 2019 luto@kernel.org - 1.8.1-1 +- Update to 1.8.1-1. +- Remove a build hack. + +* Sun Feb 24 2019 luto@kernel.org - 1.7-2 +- Create /etc/nvme + +* Sun Feb 24 2019 luto@kernel.org - 1.7-1 +- Bump to 1.7 +- Clean up some trivial rpmlint complaints + +* Fri Feb 01 2019 Fedora Release Engineering - 1.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + * Tue Jul 24 2018 luto@kernel.org - 1.6-1 - Update to 1.6 diff --git a/sources b/sources index 458de70..e58ea56 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (v1.6.tar.gz) = 05bcc539febd047f092a236ef2b2e9ad4e1df5d38bdc70416f80217425767f414e72294fda46868323cb7c77662d6000eaf16ebdaf74bdfad1baaed11b025d39 +SHA512 (nvme-cli-2.16.tar.gz) = 507018ff41832574bef5b88ea6a17336b9792c54f8e5c619d041bce23124e1d6d5e5e824407f46d4f1b4d6899125885eb14289f3399e61c7e7a59a603f1635e2