One file per vendor, or device, is a bit excessive for two-four rules. If possible, select round-robin (>=5.1), or queue-depth (>=6.11). round-robin is a basic selector, and only works well under ideal conditions. A nvme benchmark, round-robin vs queue-depth, shows how bad it is: https://marc.info/?l=linux-kernel&m=171931850925572 https://marc.info/?l=linux-kernel&m=171931852025575 https://github.com/johnmeneghini/iopolicy/?tab=readme-ov-file#sample-data https://people.redhat.com/jmeneghi/ALPSS_2023/NVMe_QD_Multipathing.pdf [ctrl_loss_tmo default value is 600 (ten minutes)] v3: - add Fujitsu/ETERNUS AB/HB - add Hitachi/VSP v2: - fix ctrl_loss_tmo commnent - add Infinidat/InfiniBox 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 --- This will be the last iteration of this patch, there are no more NVMe storage array manufacturers. Maybe these rules should be merged into this new file. ??? 71-nvmf-hpe.rules.in 71-nvmf-netapp.rules.in 71-nvmf-vastdata.rules.in --- .../80-nvmf-storage_arrays.rules.in | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 nvmf-autoconnect/udev-rules/80-nvmf-storage_arrays.rules.in 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 00000000..ac5df797 --- /dev/null +++ b/nvmf-autoconnect/udev-rules/80-nvmf-storage_arrays.rules.in @@ -0,0 +1,48 @@ +##### Storage arrays + +#### Set iopolicy for NVMe-oF +### iopolicy: numa (default), round-robin (>=5.1), or queue-depth (>=6.11) + +## Dell EMC +# PowerMax +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="round-robin", ATTR{model}=="EMC PowerMax" +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="queue-depth", ATTR{model}=="EMC PowerMax" +# PowerStore +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="round-robin", ATTR{model}=="dellemc-powerstore" +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="queue-depth", ATTR{model}=="dellemc-powerstore" + +## Fujitsu +# ETERNUS AB/HB +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="round-robin", ATTR{model}=="Fujitsu ETERNUS AB/HB Series" +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="queue-depth", ATTR{model}=="Fujitsu ETERNUS AB/HB Series" + +## Hitachi Vantara +# VSP +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="round-robin", ATTR{model}=="HITACHI SVOS-RF-System" +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="queue-depth", ATTR{model}=="HITACHI SVOS-RF-System" + +## Huawei +# OceanStor +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="round-robin", ATTR{model}=="Huawei-XSG1" +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="queue-depth", ATTR{model}=="Huawei-XSG1" + +## IBM +# FlashSystem (RamSan) +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="round-robin", ATTR{model}=="FlashSystem" +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="queue-depth", ATTR{model}=="FlashSystem" +# FlashSystem (Storwize/SVC) +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="round-robin", ATTR{model}=="IBM*214" +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="queue-depth", ATTR{model}=="IBM*214" + +## Infinidat +# InfiniBox +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="round-robin", ATTR{model}=="InfiniBox" +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="queue-depth", ATTR{model}=="InfiniBox" + +## Pure +# FlashArray +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="round-robin", ATTR{model}=="Pure Storage FlashArray" +ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{iopolicy}="queue-depth", ATTR{model}=="Pure Storage FlashArray" + + +##### EOF -- 2.50.1