all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH v3 proxmox,proxmox-perl-rs,cluster,storage,docs,manager 00/76] SAN: cluster-wide multipath, SAN views and a guided storage setup
Date: Fri,  6 Nov 2026 00:30:35 +0100	[thread overview]
Message-ID: <20261105233336.2178064-1-t.lamprecht@proxmox.com> (raw)

This v3 combines the cluster-wide multipath series [0][1] with
Dietmar's RFC for guided remote storage setup and SAN visibility [2].

What it adds:

 - cluster-wide dm-multipath management through /etc/pve/multipath.cfg:
   iSCSI storages with the new 'multipath' option supply their LUNs;
   explicit entries cover individual LUNs, for example Fibre Channel.
   pvestatd applies the configuration on each node without removing
   allow-list entries added by hand or for boot from SAN. Array-specific
   settings go in /etc/pve/multipath-overrides.conf.

 - SAN views: Datacenter > SAN shows node status and initiator names
   for target access rules. Its Multipath view groups path health per
   LUN, including expected paths, report age, and unresolved identities.
   Node > SAN lists LUNs, paths, usage, and iSCSI targets and sessions,
   with actions to enable multipath or wipe a LUN as root@pam.

 - guided setup for NFS, SMB/CIFS, iSCSI, Fibre Channel, and ZFS over
   iSCSI. For shared LVM over iSCSI, it creates or reuses the connection
   storage, waits for LUN discovery, and creates a volume group on the
   selected LUN, using its map when multipath is enabled. Partial setups
   retain their settings and retry only missing steps; unanswered
   requests are checked before retrying.

 - guards for destructive actions: SAN wipes and volume-group creation
   check cluster storage references, local users, and device identities.
   Before a wipe, the web UI also asks the other nodes for users of the
   LUN. Wipes keep the checked device references and recheck identities
   between writes. Inconclusive checks refuse the operation. Session
   logout is refused if it would remove the last usable path of a LUN in
   use. Cluster locks do not cover hosts outside the cluster.

Patches 04-11 are independent fixes and could go in first, with their
documentation and pvestatd parts in patches 43 and 46: status-only
activation and bounded LVM queries, shared VGs missed by LVM hints,
per-target rescans, LUNs listed per iSCSI session, validation before
volume-group creation, and a target check that refuses composite
devices. The smaller fixes for SCSI padding, iSCSI discovery errors,
iSER and offload sessions, LVM base volumes and the iSCSI edit dialog
are already applied.

Changes since v2:
 - combined with Dietmar's RFC; multipath is an iSCSI storage option
   rather than a separate per-LUN storage type
 - Node > SAN offers Enable Multipath; the datacenter view uses one
   row per LUN with expandable node details, not a column per node
   (Dominik)
 - addressed Dominik's API and code remarks: add_wwid accepts alias and
   settings, alias changes use the update endpoint, config helpers are
   renamed, group_by_tpg is available, and the overrides example is
   fixed
 - preserved existing allow-list entries, addressing Maximiliano's
   migration concern without a warning on first use
 - added expected path counts, stalled-node detection, withdrawn LUN
   status, unresolved identities, and duplicate-PV hints for clones
 - added LVM and wipe guards, bounded status commands, the node iSCSI
   API, and pvenode commands
 - added an admin guide chapter, including removal, growth, and clone
   procedures tested on real hardware
 - moved the parsing of multipathd map status and the health derivation
   to a new proxmox-multipath crate, used through pve-rs bindings

Testing used a five-node nested cluster attached to a NetApp AFF A20
through two independent paths over iSCSI and NVMe/TCP, plus host-side
Linux LIO and nvmet targets. Scenarios covered path, LIF, and
whole-array outages with guests running; LUN unmapping with queued I/O;
revoked node access; online growth; snapshot clones; reboot; and adding
30 LUNs at once. Wizard and wipe tests covered lost responses, stuck
tasks, denied logins, and LVM metadata written by other nodes. The
screens were also reviewed from four user perspectives. The bounded
status commands and the wizard's LUN identity check also have focused
regression tests. Fibre Channel and offload iSCSI initiators, which can
run several sessions on one SCSI host, were not tested on hardware.

Open points:
 - path-redundancy loss is visible in the web UI and API but sends no
   notification (can be more easily done once Lukas' notification
   matcher rework has landed)
 - an optimal LUN is marked incomplete while its state on an expected
   node is unknown, but there is no count of the current reports per LUN
 - LUN removal is documented, not guided - can be added later.
 - if thin_check takes longer than the shared status-command budget,
   that status pass reports no LVM or LVM-thin status. Later passes
   retry the activation; starting a guest activates the pool without
   this budget
 - pvcreate and vgcreate receive a checked, identity-bearing by-id name,
   but resolve it themselves, leaving a short race after the final check
 - integration with the per-node target and portal mapping work [3][4]

Apply in patch order. The pve-rs bindings need the proxmox-multipath
crate packaged first. pve-storage needs pve-cluster with the multipath
configuration files registered and libpve-rs-perl with the bindings.
pve-manager needs the matching pve-storage APIs and status-command
helper, plus the pve-docs and pve-doc-generator changes.
Feature-specific dependency bumps are deferred until the providing
package versions are known and must be added before shipping. This
includes a Breaks of libpve-storage-perl on older pve-manager, whose
Ceph OSD creation would accept the iSCSI LUNs that the disk list now
includes (patch 45).

[0]: https://lore.proxmox.com/pve-devel/20260626121000.2095591-1-t.lamprecht@proxmox.com/
[1]: https://lore.proxmox.com/pve-devel/20260703124707.1172980-2-t.lamprecht@proxmox.com/
[2]: https://lore.proxmox.com/pve-devel/20260731102156.3947857-1-dietmar@proxmox.com/
[3]: https://lore.proxmox.com/pve-devel/20260430173220.441001-1-m.limbeck@proxmox.com/
[4]: https://lore.proxmox.com/pve-devel/20260804090819.2136483-1-dietmar@proxmox.com/

proxmox:

Thomas Lamprecht (1):
      add proxmox-multipath crate

 Cargo.toml                             |   2 +
 proxmox-multipath/Cargo.toml           |  17 ++
 proxmox-multipath/debian/changelog     |   7 +
 proxmox-multipath/debian/control       |  38 +++
 proxmox-multipath/debian/copyright     |  18 ++
 proxmox-multipath/debian/debcargo.toml |   7 +
 proxmox-multipath/src/lib.rs           | 531 +++++++++++++++++++++++++++++++++
 7 files changed, 620 insertions(+)

proxmox-perl-rs:

Thomas Lamprecht (1):
      pve-rs: add PVE::RS::Multipath bindings for multipathd status parsing

 pve-rs/Cargo.toml                |  1 +
 pve-rs/Makefile                  |  2 ++
 pve-rs/debian/control            |  1 +
 pve-rs/src/bindings/mod.rs       |  3 ++
 pve-rs/src/bindings/multipath.rs | 40 ++++++++++++++++++++++
 pve-rs/test/Makefile             |  1 +
 pve-rs/test/multipath.pl         | 74 ++++++++++++++++++++++++++++++++++++++++
 7 files changed, 122 insertions(+)

pve-cluster:

Thomas Lamprecht (1):
      cfs: observe the multipath configuration files

 src/PVE/Cluster.pm  | 2 ++
 src/pmxcfs/status.c | 2 ++
 2 files changed, 4 insertions(+)

pve-storage:

Dietmar Maurer (12):
      diskmanage: collect disk transport type from lsblk
      diskmanage: add helper to list multipath devices
      diskmanage: qualify NVMe over fabrics transport
      disks: list: add include-remote parameter
      diskmanage: include iSCSI session devices in disk enumeration
      diskmanage: link multipath member disks to their map device
      iscsi: factor out session device map from device list
      api: scan: add a SAN LUN inventory
      pvesm: expose the SAN LUN inventory
      diskmanage: collect native NVMe multipath path state
      api: scan: san-luns: report path state
      api: add node-level iSCSI status and maintenance

Thomas Lamprecht (27):
      storage: distinguish status-only activation in plugins
      lvm: find a shared volume group created by another node
      storage: bound LVM status commands
      iscsi: rate-limit session rescans per target
      iscsi: list the LUNs of each session, not of its SCSI host
      lvm: refuse to create a volume group on a device that holds data
      lvm: refuse a base volume of a target that serves disk images
      iscsi: refuse virtual devices other than multipath maps as volumes
      disks: lvm: allow volume groups on SAN LUNs and multipath maps
      multipath: add a library around multipathd
      diskmanage: collect local block device users
      api: iscsi: add session logout with last-path protection
      multipath: add a cluster-wide configuration
      iscsi: add an option to manage storage LUNs with multipath
      lvm: activate a missing base volume before using the volume group
      multipath: apply the configuration on every node
      iscsi: share the initiator identity reader
      multipath: publish per-node status
      api: add endpoints for the cluster-wide multipath configuration
      api: multipath: add the cluster-wide health status
      multipath: collect identities of non-iSCSI SCSI paths
      api: scan: san-luns: report the multipath state of each LUN
      api: scan: flag duplicate physical volumes on distinct LUNs
      api: disks: recheck local users and retain wipe device references
      iscsi: name plain LUNs after their identity link
      api: disks: guard SAN wipes with stable identities and storage checks
      api: scan: refresh SAN usage with bounded probes

 ApiChangeLog                                       |   24 +
 debian/control                                     |    2 +
 src/PVE/API2/Disks.pm                              |   76 +-
 src/PVE/API2/Disks/LVM.pm                          |   74 +-
 src/PVE/API2/ISCSI.pm                              |  423 +++++++
 src/PVE/API2/Makefile                              |    2 +
 src/PVE/API2/Multipath.pm                          |  689 +++++++++++
 src/PVE/API2/Storage/Scan.pm                       |  247 ++++
 src/PVE/CLI/pvesm.pm                               |   13 +
 src/PVE/Diskmanage.pm                              | 1007 +++++++++++++++-
 src/PVE/Makefile                                   |    6 +
 src/PVE/Multipath.pm                               |  375 ++++++
 src/PVE/Multipath/ClusterConfig.pm                 |   64 +
 src/PVE/Multipath/Config.pm                        |  451 +++++++
 src/PVE/Multipath/Generator.pm                     |  314 +++++
 src/PVE/Multipath/Identity.pm                      |  402 +++++++
 src/PVE/Multipath/Status.pm                        |  486 ++++++++
 src/PVE/Storage.pm                                 |  272 ++++-
 src/PVE/Storage/ISCSIPlugin.pm                     |  695 +++++++++--
 src/PVE/Storage/LVMPlugin.pm                       |  323 ++++-
 src/PVE/Storage/LvmThinPlugin.pm                   |   39 +-
 src/PVE/Storage/Makefile                           |    4 +-
 src/PVE/Storage/Plugin.pm                          |    2 +-
 src/PVE/Storage/SANScan.pm                         |  429 +++++++
 src/PVE/Storage/StatusCommand.pm                   |  241 ++++
 src/test/Makefile                                  |   61 +-
 src/test/disk_api_test.pm                          |  194 +++
 src/test/disk_tests/iscsi/disklist                 |    1 +
 src/test/disk_tests/iscsi/disklist_expected.json   |   19 +
 src/test/disk_tests/iscsi/lsblk                    |    5 +
 src/test/disk_tests/iscsi/sda/device/model         |    1 +
 src/test/disk_tests/iscsi/sda/device/vendor        |    1 +
 src/test/disk_tests/iscsi/sda/queue/rotational     |    1 +
 src/test/disk_tests/iscsi/sda/size                 |    1 +
 src/test/disk_tests/iscsi/sda_udevadm              |   21 +
 src/test/disk_tests/multipath/disklist             |   11 +
 .../disk_tests/multipath/disklist_expected.json    |  111 ++
 src/test/disk_tests/multipath/dm-0/dm/name         |    1 +
 src/test/disk_tests/multipath/dm-0/dm/uuid         |    1 +
 src/test/disk_tests/multipath/dm-0/size            |    1 +
 src/test/disk_tests/multipath/dm-0_slaves          |    4 +
 src/test/disk_tests/multipath/dm-1/dm/name         |    1 +
 src/test/disk_tests/multipath/dm-1/dm/uuid         |    1 +
 src/test/disk_tests/multipath/dm-1/size            |    1 +
 src/test/disk_tests/multipath/dm-1_slaves          |    4 +
 src/test/disk_tests/multipath/dm-2/dm/name         |    1 +
 src/test/disk_tests/multipath/dm-2/dm/uuid         |    1 +
 src/test/disk_tests/multipath/dm-2/size            |    1 +
 src/test/disk_tests/multipath/dm-2_slaves          |    1 +
 src/test/disk_tests/multipath/dm-3/dm/name         |    1 +
 src/test/disk_tests/multipath/dm-3/dm/uuid         |    1 +
 src/test/disk_tests/multipath/dm-3/size            |    1 +
 src/test/disk_tests/multipath/dm-3_slaves          |    1 +
 src/test/disk_tests/multipath/dm-4/dm/name         |    1 +
 src/test/disk_tests/multipath/dm-4/dm/uuid         |    1 +
 src/test/disk_tests/multipath/dm-4/size            |    1 +
 src/test/disk_tests/multipath/dm-4_slaves          |    1 +
 src/test/disk_tests/multipath/lsblk                |   77 ++
 src/test/disk_tests/multipath/lvs                  |    0
 src/test/disk_tests/multipath/mounts               |    1 +
 .../disk_tests/multipath/multipath_expected.json   |   59 +
 src/test/disk_tests/multipath/multipathd           |  124 ++
 .../multipath/multipathd_status_expected.json      |   42 +
 .../nvme-subsystem/nvme-subsys0/nvme3/address      |    1 +
 .../nvme-subsys0/nvme3/nvme2c3n1/ana_state         |    1 +
 .../nvme-subsystem/nvme-subsys0/nvme3/state        |    1 +
 .../nvme-subsystem/nvme-subsys0/nvme4/address      |    1 +
 .../nvme-subsys0/nvme4/nvme2c4n1/ana_state         |    1 +
 .../nvme-subsystem/nvme-subsys0/nvme4/state        |    1 +
 .../nvme-subsystem/nvme-subsys1/nvme0/address      |    1 +
 .../nvme-subsystem/nvme-subsys1/nvme0/state        |    1 +
 src/test/disk_tests/multipath/nvme8n1/device/model |    1 +
 .../disk_tests/multipath/nvme8n1/device/transport  |    1 +
 .../disk_tests/multipath/nvme8n1/queue/rotational  |    1 +
 src/test/disk_tests/multipath/nvme8n1/size         |    1 +
 src/test/disk_tests/multipath/nvme8n1_udevadm      |   14 +
 src/test/disk_tests/multipath/nvme9n1/device/model |    1 +
 .../disk_tests/multipath/nvme9n1/device/transport  |    1 +
 .../disk_tests/multipath/nvme9n1/device/vendor     |    1 +
 .../disk_tests/multipath/nvme9n1/queue/rotational  |    1 +
 src/test/disk_tests/multipath/nvme9n1/size         |    1 +
 src/test/disk_tests/multipath/nvme9n1_udevadm      |   12 +
 .../multipath/nvme_path_status_expected.json       |   19 +
 src/test/disk_tests/multipath/partlist             |    0
 src/test/disk_tests/multipath/pvs                  |    1 +
 src/test/disk_tests/multipath/sda/device/model     |    1 +
 src/test/disk_tests/multipath/sda/device/vendor    |    1 +
 src/test/disk_tests/multipath/sda/holders/holder   |    1 +
 src/test/disk_tests/multipath/sda/queue/rotational |    1 +
 src/test/disk_tests/multipath/sda/size             |    1 +
 src/test/disk_tests/multipath/sda_udevadm          |   18 +
 src/test/disk_tests/multipath/sdb/device/model     |    1 +
 src/test/disk_tests/multipath/sdb/device/vendor    |    1 +
 src/test/disk_tests/multipath/sdb/holders/holder   |    1 +
 src/test/disk_tests/multipath/sdb/queue/rotational |    1 +
 src/test/disk_tests/multipath/sdb/size             |    1 +
 src/test/disk_tests/multipath/sdb_udevadm          |   18 +
 src/test/disk_tests/multipath/sdc/device/model     |    1 +
 src/test/disk_tests/multipath/sdc/device/vendor    |    1 +
 src/test/disk_tests/multipath/sdc/holders/holder   |    1 +
 src/test/disk_tests/multipath/sdc/queue/rotational |    1 +
 src/test/disk_tests/multipath/sdc/size             |    1 +
 src/test/disk_tests/multipath/sdc_udevadm          |   18 +
 src/test/disk_tests/multipath/sdd/device/model     |    1 +
 src/test/disk_tests/multipath/sdd/device/vendor    |    1 +
 src/test/disk_tests/multipath/sdd/holders/holder   |    1 +
 src/test/disk_tests/multipath/sdd/queue/rotational |    1 +
 src/test/disk_tests/multipath/sdd/size             |    1 +
 src/test/disk_tests/multipath/sdd_udevadm          |   18 +
 src/test/disk_tests/multipath/zpool                |    1 +
 src/test/disk_tests/sas/disklist_expected.json     |    1 +
 src/test/disk_tests/sas/lsblk                      |    5 +
 src/test/disklist_test.pm                          |  117 +-
 src/test/lvm-fixtures/README.md                    |   20 +
 .../lvm-fixtures/lab1-nomda-orphan-derived.colon   |    2 +
 src/test/lvm-fixtures/lab1-nomda-orphan.txt        |   23 +
 src/test/run_block_device_users_tests.pl           |  172 +++
 src/test/run_disk_api_tests.pl                     |   11 +
 src/test/run_iscsi_activation_tests.pl             |  171 +++
 src/test/run_iscsi_device_list_tests.pl            |   78 ++
 src/test/run_iscsi_logout_tests.pl                 |  271 +++++
 src/test/run_iscsi_rescan_tests.pl                 |  109 ++
 src/test/run_iscsi_session_tests.pl                |   15 +-
 src/test/run_iscsi_volume_tests.pl                 |   81 +-
 src/test/run_lun_identity_tests.pl                 | 1262 ++++++++++++++++++++
 src/test/run_multipath_api_tests.pl                |  693 +++++++++++
 src/test/run_multipath_tests.pl                    | 1240 +++++++++++++++++++
 src/test/run_san_api_tests.pl                      |  180 +++
 src/test/run_san_library_tests.pl                  |   77 ++
 src/test/run_san_lun_scan_tests.pl                 |  945 +++++++++++++++
 src/test/run_san_lvm_create_tests.pl               |  611 ++++++++++
 src/test/run_san_taint_tests.pl                    |   80 ++
 src/test/run_san_wipe_tests.pl                     |  673 +++++++++++
 src/test/run_status_command_contention_tests.pl    |  520 ++++++++
 src/test/run_status_command_tests.pl               |  189 +++
 src/test/run_test_lvm_base_activation.pl           |  130 ++
 src/test/run_test_lvm_base_conflicts.pl            |   62 +
 src/test/run_test_lvm_base_volume.pl               |    8 +-
 src/test/run_test_lvm_create.pl                    |  243 ++++
 src/test/run_test_lvm_hints.pl                     |  110 ++
 src/test/run_test_lvm_status.pl                    |  220 ++++
 src/test/run_wipe_partition_tests.pl               |  387 ++++++
 src/test/run_wipe_readiness_tests.pl               |  138 +++
 src/test/run_wipe_reference_tests.pl               |  243 ++++
 src/test/run_wipedisk_tests.pl                     |  110 ++
 145 files changed, 16554 insertions(+), 215 deletions(-)

pve-docs:

Thomas Lamprecht (2):
      storage: lvm: note the rescan after extending a shared volume group
      storage: document the cluster-wide multipath management

 pve-storage-iscsi.adoc     |  13 +-
 pve-storage-lvm.adoc       |   9 +
 pve-storage-multipath.adoc | 527 +++++++++++++++++++++++++++++++++++++++++++++
 pvesm.adoc                 |  13 +-
 4 files changed, 554 insertions(+), 8 deletions(-)

pve-manager:

Dietmar Maurer (10):
      ui: storage: allow changing the node for NFS/CIFS scans
      ui: storage: add guided remote storage wizard with NFS support
      ui: storage wizard: add SMB/CIFS support
      ui: storage wizard: add ZFS over iSCSI support
      ui: dc: storage: add remote storage wizard entry to the add menu
      ui: node: add SAN LUNs panel
      ui: san luns: show multipath path state
      api: nodes: expose iSCSI status and maintenance
      pvenode: add iscsi commands
      ui: node: san: add iSCSI target and session management

Thomas Lamprecht (22):
      api: ceph: osd: keep iSCSI LUNs out of OSD creation
      pvestatd: track pending storage status commands across re-exec
      ui: storage: factor out the scan picker error mask
      ui: storage: nfs: show scan errors and empty results
      ui: storage wizard: preserve settings after partial setup
      ui: storage wizard: add Fibre Channel shared LVM setup
      ui: storage wizard: reconcile unanswered storage creation
      pvestatd: apply the multipath configuration and report the node status
      api: cluster: add the multipath endpoints
      ui: dc: add a cluster-wide multipath view
      ui: storage: iscsi: add the multipath option
      ui: san luns: show multipath state and manage LUN entries
      ui: storage wizard: add iSCSI support
      ui: storage wizard: iscsi: show cluster initiator names
      ui: storage wizard: iscsi: enable multipath for shared LVM
      ui: node: san: wipe a LUN that no storage uses
      ui: storage wizard: iscsi: reuse existing target connections
      ui: storage wizard: fibre channel: enable multipath for a LUN
      ui: storage wizard: let root@pam wipe a LUN with data
      ui: storage wizard: do not offer LUNs in use for a new volume group
      ui: san: show the local users of a LUN in its usage tooltip
      ui: san: check the other nodes for users before wiping a LUN

 PVE/API2/Ceph/OSD.pm                          |    3 +
 PVE/API2/Cluster.pm                           |    7 +
 PVE/API2/Nodes.pm                             |    7 +
 PVE/CLI/pvenode.pm                            |   48 ++
 PVE/Service/pvestatd.pm                       |   34 +
 debian/control                                |    1 +
 test/Makefile                                 |   10 +
 test/SANUtils_test.js                         |  204 +++++
 test/StorageWizard_test.js                    |  128 +++
 www/manager6/Makefile                         |   21 +
 www/manager6/SANUtils.js                      |  579 +++++++++++++
 www/manager6/Utils.js                         |   47 ++
 www/manager6/dc/Config.js                     |   28 +-
 www/manager6/dc/Multipath.js                  |  535 ++++++++++++
 www/manager6/dc/MultipathWwidEdit.js          |  233 ++++++
 www/manager6/dc/SAN.js                        |  326 ++++++++
 www/manager6/dc/StorageView.js                |   13 +-
 www/manager6/node/Config.js                   |   24 +
 www/manager6/node/ISCSITargets.js             |  615 ++++++++++++++
 www/manager6/node/SANLuns.js                  |  771 ++++++++++++++++++
 www/manager6/panel/SANNotice.js               |   26 +
 www/manager6/storage/CIFSEdit.js              |   29 +-
 www/manager6/storage/IScsiEdit.js             |   38 +
 www/manager6/storage/NFSEdit.js               |   13 +
 www/manager6/storage/wizard/CIFS.js           |  118 +++
 www/manager6/storage/wizard/CommonSettings.js |   75 ++
 www/manager6/storage/wizard/FCRecovery.js     |  242 ++++++
 www/manager6/storage/wizard/FibreChannel.js   | 1083 +++++++++++++++++++++++++
 www/manager6/storage/wizard/IScsi.js          |  707 ++++++++++++++++
 www/manager6/storage/wizard/LunPicker.js      |  101 +++
 www/manager6/storage/wizard/LunSelect.js      |  485 +++++++++++
 www/manager6/storage/wizard/NFS.js            |   89 ++
 www/manager6/storage/wizard/NodeIdentities.js |  123 +++
 www/manager6/storage/wizard/SanLvm.js         |  179 ++++
 www/manager6/storage/wizard/WipeStatus.js     |   34 +
 www/manager6/storage/wizard/Wizard.js         |  970 ++++++++++++++++++++++
 www/manager6/storage/wizard/ZFSOverISCSI.js   |  180 ++++
 www/manager6/window/SANLunWipe.js             |  331 ++++++++
 38 files changed, 8432 insertions(+), 25 deletions(-)




             reply	other threads:[~2026-11-06  0:52 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-05 23:30 Thomas Lamprecht [this message]
2026-11-05 23:30 ` [PATCH v3 proxmox 01/76] add proxmox-multipath crate Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 proxmox-perl-rs 02/76] pve-rs: add PVE::RS::Multipath bindings for multipathd status parsing Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 cluster 03/76] cfs: observe the multipath configuration files Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 04/76] storage: distinguish status-only activation in plugins Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 05/76] lvm: find a shared volume group created by another node Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 06/76] storage: bound LVM status commands Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 07/76] iscsi: rate-limit session rescans per target Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 08/76] iscsi: list the LUNs of each session, not of its SCSI host Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 09/76] lvm: refuse to create a volume group on a device that holds data Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 10/76] lvm: refuse a base volume of a target that serves disk images Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 11/76] iscsi: refuse virtual devices other than multipath maps as volumes Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 12/76] diskmanage: collect disk transport type from lsblk Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 13/76] diskmanage: add helper to list multipath devices Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 14/76] diskmanage: qualify NVMe over fabrics transport Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 15/76] disks: list: add include-remote parameter Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 16/76] diskmanage: include iSCSI session devices in disk enumeration Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 17/76] diskmanage: link multipath member disks to their map device Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 18/76] iscsi: factor out session device map from device list Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 19/76] api: scan: add a SAN LUN inventory Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 20/76] pvesm: expose the " Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 21/76] disks: lvm: allow volume groups on SAN LUNs and multipath maps Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 22/76] multipath: add a library around multipathd Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 23/76] diskmanage: collect native NVMe multipath path state Thomas Lamprecht
2026-11-05 23:30 ` [PATCH v3 storage 24/76] api: scan: san-luns: report " Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 25/76] diskmanage: collect local block device users Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 26/76] api: add node-level iSCSI status and maintenance Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 27/76] api: iscsi: add session logout with last-path protection Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 28/76] multipath: add a cluster-wide configuration Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 29/76] iscsi: add an option to manage storage LUNs with multipath Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 30/76] lvm: activate a missing base volume before using the volume group Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 31/76] multipath: apply the configuration on every node Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 32/76] iscsi: share the initiator identity reader Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 33/76] multipath: publish per-node status Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 34/76] api: add endpoints for the cluster-wide multipath configuration Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 35/76] api: multipath: add the cluster-wide health status Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 36/76] multipath: collect identities of non-iSCSI SCSI paths Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 37/76] api: scan: san-luns: report the multipath state of each LUN Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 38/76] api: scan: flag duplicate physical volumes on distinct LUNs Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 39/76] api: disks: recheck local users and retain wipe device references Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 40/76] iscsi: name plain LUNs after their identity link Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 41/76] api: disks: guard SAN wipes with stable identities and storage checks Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 storage 42/76] api: scan: refresh SAN usage with bounded probes Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 docs 43/76] storage: lvm: note the rescan after extending a shared volume group Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 docs 44/76] storage: document the cluster-wide multipath management Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 45/76] api: ceph: osd: keep iSCSI LUNs out of OSD creation Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 46/76] pvestatd: track pending storage status commands across re-exec Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 47/76] ui: storage: factor out the scan picker error mask Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 48/76] ui: storage: nfs: show scan errors and empty results Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 49/76] ui: storage: allow changing the node for NFS/CIFS scans Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 50/76] ui: storage: add guided remote storage wizard with NFS support Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 51/76] ui: storage wizard: add SMB/CIFS support Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 52/76] ui: storage wizard: preserve settings after partial setup Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 53/76] ui: storage wizard: add Fibre Channel shared LVM setup Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 54/76] ui: storage wizard: reconcile unanswered storage creation Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 55/76] ui: storage wizard: add ZFS over iSCSI support Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 56/76] ui: dc: storage: add remote storage wizard entry to the add menu Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 57/76] ui: node: add SAN LUNs panel Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 58/76] ui: san luns: show multipath path state Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 59/76] api: nodes: expose iSCSI status and maintenance Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 60/76] pvenode: add iscsi commands Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 61/76] ui: node: san: add iSCSI target and session management Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 62/76] pvestatd: apply the multipath configuration and report the node status Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 63/76] api: cluster: add the multipath endpoints Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 64/76] ui: dc: add a cluster-wide multipath view Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 65/76] ui: storage: iscsi: add the multipath option Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 66/76] ui: san luns: show multipath state and manage LUN entries Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 67/76] ui: storage wizard: add iSCSI support Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 68/76] ui: storage wizard: iscsi: show cluster initiator names Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 69/76] ui: storage wizard: iscsi: enable multipath for shared LVM Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 70/76] ui: node: san: wipe a LUN that no storage uses Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 71/76] ui: storage wizard: iscsi: reuse existing target connections Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 72/76] ui: storage wizard: fibre channel: enable multipath for a LUN Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 73/76] ui: storage wizard: let root@pam wipe a LUN with data Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 74/76] ui: storage wizard: do not offer LUNs in use for a new volume group Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 75/76] ui: san: show the local users of a LUN in its usage tooltip Thomas Lamprecht
2026-11-05 23:31 ` [PATCH v3 manager 76/76] ui: san: check the other nodes for users before wiping a LUN Thomas Lamprecht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261105233336.2178064-1-t.lamprecht@proxmox.com \
    --to=t.lamprecht@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal