Replace individual vendor udev rules (HPE, NetApp, and VAST Data) with a unified 80-nvmf-storage_arrays.rules file, leaving the rules untouched. This shifts execution to the 80 range for a logical sequence after base discovery and autoconnect, while simplifying maintenance and packaging. Cc: John Garry Cc: Nilay Shroff Cc: Guixin Liu Cc: Wayne Berthiaume Cc: Vasuki Manikarnike Cc: Matthias Rudolph Cc: Martin George Cc: NetApp RDAC team Cc: Zou Ming Cc: Li Xiaokeng Cc: Randy Jennings Cc: Jyoti Rani Cc: Brian Bunker Cc: Uday Shankar Cc: Chaitanya Kulkarni Cc: Sagi Grimberg Cc: Keith Busch Cc: Christoph Hellwig Cc: Marco Patalano Cc: Ewan D. Milne Cc: John Meneghini Cc: Daniel Wagner Cc: Daniel Wagner Cc: Hannes Reinecke Cc: Martin Wilck Cc: Benjamin Marzinski Cc: Christophe Varoqui Cc: BLOCK-ML Cc: NVME-ML Cc: SCSI-ML Cc: DM_DEVEL-ML Signed-off-by: Xose Vazquez Perez --- BTW, there are two new I/O policies in development: https://lore.kernel.org/linux-nvme/20260815173502.1185929-1-nilay@linux.ibm.com/ https://lore.kernel.org/linux-nvme/20261026111019.3724465-1-kanie@linux.alibaba.com/ --- meson.build | 4 +--- nvme.spec.in | 4 +--- .../udev-rules/71-nvmf-hpe.rules.in | 5 ---- .../udev-rules/71-nvmf-netapp.rules.in | 6 ----- .../udev-rules/71-nvmf-vastdata.rules.in | 5 ---- .../80-nvmf-storage_arrays.rules.in | 23 +++++++++++++++++++ 6 files changed, 25 insertions(+), 22 deletions(-) delete mode 100644 nvmf-autoconnect/udev-rules/71-nvmf-hpe.rules.in delete mode 100644 nvmf-autoconnect/udev-rules/71-nvmf-netapp.rules.in delete mode 100644 nvmf-autoconnect/udev-rules/71-nvmf-vastdata.rules.in create mode 100644 nvmf-autoconnect/udev-rules/80-nvmf-storage_arrays.rules.in diff --git a/meson.build b/meson.build index 90356ad94..00e9ad1be 100644 --- a/meson.build +++ b/meson.build @@ -894,9 +894,7 @@ if want_nvme udev_files = { '65-persistent-net-nbft.rules': 'nvmf', '70-nvmf-keys.rules': 'nvmf-autoconnect', - '71-nvmf-hpe.rules': 'nvmf', - '71-nvmf-netapp.rules': 'nvmf', - '71-nvmf-vastdata.rules': 'nvmf', + '80-nvmf-storage_arrays.rules': 'nvmf', } if want_nvmf_autoconnect udev_files += {'70-nvmf-autoconnect.rules': 'nvmf-autoconnect'} diff --git a/nvme.spec.in b/nvme.spec.in index 23d3d3268..a37c1a08d 100644 --- a/nvme.spec.in +++ b/nvme.spec.in @@ -36,9 +36,7 @@ touch %{buildroot}@SYSCONFDIR@/nvme/hostid @UDEVRULESDIR@/65-persistent-net-nbft.rules @UDEVRULESDIR@/70-nvmf-autoconnect.rules @UDEVRULESDIR@/70-nvmf-keys.rules -@UDEVRULESDIR@/71-nvmf-hpe.rules -@UDEVRULESDIR@/71-nvmf-netapp.rules -@UDEVRULESDIR@/71-nvmf-vastdata.rules +@UDEVRULESDIR@/80-nvmf-storage_arrays.rules @DRACUTRULESDIR@/70-nvmf-autoconnect.conf @SYSTEMDDIR@/nvmf-connect@.service @SYSTEMDDIR@/nvmefc-boot-connections.service diff --git a/nvmf-autoconnect/udev-rules/71-nvmf-hpe.rules.in b/nvmf-autoconnect/udev-rules/71-nvmf-hpe.rules.in deleted file mode 100644 index b050dd502..000000000 --- a/nvmf-autoconnect/udev-rules/71-nvmf-hpe.rules.in +++ /dev/null @@ -1,5 +0,0 @@ -# Set appropriate iopolicy for HPE Alletra Storage MP -ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="HPE Alletra", ATTR{iopolicy}="round-robin" - -# Set ctrl_loss_tmo to -1 for HPE Alletra Storage MP NVMe/TCP -ACTION!="remove", SUBSYSTEM=="nvme", KERNEL=="nvme*", ATTR{transport}=="tcp", ATTR{model}=="HPE Alletra", ATTR{ctrl_loss_tmo}="-1" diff --git a/nvmf-autoconnect/udev-rules/71-nvmf-netapp.rules.in b/nvmf-autoconnect/udev-rules/71-nvmf-netapp.rules.in deleted file mode 100644 index c76a3c434..000000000 --- a/nvmf-autoconnect/udev-rules/71-nvmf-netapp.rules.in +++ /dev/null @@ -1,6 +0,0 @@ -# Set appropriate iopolicy for NetApp ONTAP and NetApp E-Series -ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="queue-depth" -ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp E-Series", ATTR{iopolicy}="round-robin" - -# Set ctrl_loss_tmo to -1 for NetApp ONTAP NVMe/TCP -ACTION!="remove", SUBSYSTEM=="nvme", KERNEL=="nvme*", ATTR{transport}=="tcp", ATTR{model}=="NetApp ONTAP Controller", ATTR{ctrl_loss_tmo}="-1" diff --git a/nvmf-autoconnect/udev-rules/71-nvmf-vastdata.rules.in b/nvmf-autoconnect/udev-rules/71-nvmf-vastdata.rules.in deleted file mode 100644 index dcd6146d8..000000000 --- a/nvmf-autoconnect/udev-rules/71-nvmf-vastdata.rules.in +++ /dev/null @@ -1,5 +0,0 @@ -# Enable round-robin for Vast Data Block Subsystem -ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="VASTData", ATTR{iopolicy}="round-robin" - -# Set ctrl_loss_tmo to -1 for Vast Data Block Controller -ACTION!="remove", SUBSYSTEM=="nvme", KERNEL=="nvme*", ATTR{model}=="VASTData", ATTR{ctrl_loss_tmo}="-1" diff --git a/nvmf-autoconnect/udev-rules/80-nvmf-storage_arrays.rules.in b/nvmf-autoconnect/udev-rules/80-nvmf-storage_arrays.rules.in new file mode 100644 index 000000000..1cd6c0c0b --- /dev/null +++ b/nvmf-autoconnect/udev-rules/80-nvmf-storage_arrays.rules.in @@ -0,0 +1,23 @@ +##### Storage arrays + +#### Set iopolicy for NVMe-oF +### iopolicy: numa (default), round-robin (>=5.1), or queue-depth (>=6.11) + +## HPE +# Alletra 9000 / Alletra Storage MP / GreenLake Block Storage MP +ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="HPE Alletra", ATTR{iopolicy}="round-robin" +ACTION!="remove", SUBSYSTEM=="nvme", KERNEL=="nvme*", ATTR{transport}=="tcp", ATTR{model}=="HPE Alletra", ATTR{ctrl_loss_tmo}="-1" + +## NetApp +# ONTAP AFF/ASA Series +ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="queue-depth" +ACTION!="remove", SUBSYSTEM=="nvme", KERNEL=="nvme*", ATTR{transport}=="tcp", ATTR{model}=="NetApp ONTAP Controller", ATTR{ctrl_loss_tmo}="-1" +# E/EF-Series +ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp E-Series", ATTR{iopolicy}="round-robin" + +## VAST Data +# Block Subsystem +ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="VASTData", ATTR{iopolicy}="round-robin" +ACTION!="remove", SUBSYSTEM=="nvme", KERNEL=="nvme*", ATTR{model}=="VASTData", ATTR{ctrl_loss_tmo}="-1" + +##### EOF -- 2.56.0