From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 959E81FF0E3 for ; Tue, 04 Aug 2026 11:08:49 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 11BE82166E; Tue, 04 Aug 2026 11:08:26 +0200 (CEST) From: Dietmar Maurer To: pve-devel@lists.proxmox.com Subject: [PATCH storage 0/7] iscsi: per-node target and portal configuration Date: Tue, 4 Aug 2026 11:08:12 +0200 Message-ID: <20260804090819.2136483-1-dietmar@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 2 AWL -0.113 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods RDNS_NONE 1.274 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Message-ID-Hash: WYTYULRJ57N5XDBPI7KSVG6RPPTKYVSF X-Message-ID-Hash: WYTYULRJ57N5XDBPI7KSVG6RPPTKYVSF X-MailFrom: dietmar@zilli.proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Where every node reaches the same SAN through a different portal, and sometimes through a different target, a single cluster-wide portal/target pair is not enough. Patch 5 adds an 'iscsi-node-map' property to the iSCSI storage: static target and portal entries, each optionally restricted to a set of nodes. Entries without a node list act as the default, so only the nodes that differ need one, and a node can resolve to several targets, which allows multipath across per-controller target names. Mapped entries skip sendtargets discovery and sync the node db records directly, which also covers SANs that filter discovery or do not implement it. Patch 7 adds 'periodic-discovery'. Re-running discovery before every login resets tuned node.* settings, so with periodic-discovery=0 it only runs to seed an empty node db. The default keeps the current behavior. Patches 1 and 2 are independent bug fixes and stand on their own. Patch 2 is Mira's idea, from patches 11 and 12 of [0]. There is no GUI for either property yet, both are API and CLI only. [0] solves the same problem one level up, with a cluster-wide mapping/storage.cfg, a plugin framework, a CRUD API and an ACL path, and Thomas found that direction right at a high level. I still think the inline property fits iSCSI better: a mapping cannot usefully be shared, since every entry names a target, and it has to list every node while this needs only the exceptions. [0] https://lore.proxmox.com/pve-devel/20260430173220.441001-1-m.limbeck@proxmox.com/ Dietmar Maurer (7): iscsi: discovery: do not stop early on a foreign target iscsi: scan: do not persist discovery results in the node database iscsi: validate target names with a dedicated format iscsi: clarify that the portal property is the discovery address iscsi: add iscsi-node-map property for per-node target and portals iscsi: iscsi_portals: return empty list instead of fallback portal iscsi: add periodic-discovery flag to skip re-discovery on login src/PVE/Storage.pm | 2 +- src/PVE/Storage/ISCSIPlugin.pm | 369 +++++++++++++++++++++++++++++---- 2 files changed, 326 insertions(+), 45 deletions(-) -- 2.47.3