all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Stelios Vailakakis <stelios@libvirt.dev>
To: "pve-devel@lists.proxmox.com" <pve-devel@lists.proxmox.com>
Subject: [pve-devel] [PATCH] iscsi: fix excessive connection test spam on storage monitoring
Date: Fri, 20 Jun 2025 00:44:46 +0000	[thread overview]
Message-ID: <BYAPR06MB4821234483B7D50E9C3C09CEA67DA@BYAPR06MB4821.namprd06.prod.outlook.com> (raw)

Hi all,

This patch addresses excessive "connection lost" and "connection reset" log
spam on iSCSI targets caused by Proxmox storage monitoring performing TCP
connection tests every 10 seconds, even when iSCSI sessions are active.

The issue appears as continuous log entries on iSCSI targets:
"ctld[PID]: 192.168.1.XX: read: connection lost" every 10 seconds on each node.

Others have experienced this, as seen in forum posts:
iSCSI Reconnecting every 10 seconds to FreeNAS solution | Proxmox Support Forum<https://forum.proxmox.com/threads/iscsi-reconnecting-every-10-seconds-to-freenas-solution.21205/>
freenas ctld: read: connection lost | TrueNAS Community<https://www.truenas.com/community/threads/freenas-ctld-read-connection-lost.45513/>

Changes:
- Support hostnames in portal addresses (not just IP addresses) by updating
  ISCSI_TARGET_RE and session parsing regex
- Skip TCP connection tests in check_connection when active sessions exist
- Skip storage activation when sessions are already established

This reduces iSCSI target log spam from continuous entries to only
legitimate connection issues, while maintaining monitoring functionality.

Tested with:
- IPv4 and IPv6 portals
- Hostname based portals (like nas.example.com)
- Multiple Proxmox nodes in cluster 8.2.4 + 8.3.0 (Requires latest ISCSIPlugin.pm. taken from raw.githubusercontent.com/proxmox/pve-storage/823707a7ac99eafe345d9131d10837ebefbb9078/src/PVE/Storage/ISCSIPlugin.pm<https://raw.githubusercontent.com/proxmox/pve-storage/823707a7ac99eafe345d9131d10837ebefbb9078/src/PVE/Storage/ISCSIPlugin.pm>)
- TrueNAS and Linux iSCSI targets
- Can apply from /usr/share/perl5/PVE/Storage# patch -p0 < /path/to/iscsifix.patch

---
 PVE/Storage/ISCSIPlugin.pm | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

--- ISCSIPlugin.pm.new-upstream 2025-06-19 16:24:09.220675514 -0500
+++ ISCSIPlugin.pm      2025-06-19 16:24:42.265694074 -0500
@@ -33,7 +33,7 @@
 }

 # Example: 192.168.122.252:3260,1 iqn.2003-01.org.linux-iscsi.proxmox-nfs.x8664:sn.00567885ba8f
-my $ISCSI_TARGET_RE = qr/^((?:$IPV4RE|\[$IPV6RE\]):\d+)\,\S+\s+(\S+)\s*$/;
+my $ISCSI_TARGET_RE = qr/^(\S+:\d+)\,\S+\s+(\S+)\s*$/;

 sub iscsi_session_list {
     assert_iscsi_support();
@@ -49,7 +49,7 @@
                 my $line = shift;
                 # example: tcp: [1] 192.168.122.252:3260,1 iqn.2003-01.org.linux-iscsi.proxmox-nfs.x8664:sn.00567885ba8f (non-flash)
                 if ($line =~
-                    m/^tcp:\s+\[(\S+)\]\s+((?:$IPV4RE|\[$IPV6RE\]):\d+)\,\S+\s+(\S+)\s+\S+?\s*$/
+                    m/^tcp:\s+\[(\S+)\]\s+(\S+:\d+)\,\S+\s+(\S+)\s+\S+?\s*$/
                 ) {
                     my ($session_id, $portal, $target) = ($1, $2, $3);
                     # there can be several sessions per target (multipath)
@@ -480,6 +480,10 @@
 sub activate_storage {
     my ($class, $storeid, $scfg, $cache) = @_;

+    # Skip if session already exists
+    my $existing_sessions = iscsi_session($cache, $scfg->{target});
+    return 1 if defined($existing_sessions) && scalar(@$existing_sessions) > 0;
+
     return if !assert_iscsi_support(1);

     my $sessions = iscsi_session($cache, $scfg->{target});
@@ -618,6 +622,11 @@
 sub check_connection {
     my ($class, $storeid, $scfg) = @_;
     my $cache = {};
+    # Check for active session first
+    my $sessions = iscsi_session_list();
+    return 1 if defined($sessions->{$scfg->{target}});
+
+    # Only check portals if no active session
     my $portals = iscsi_portals($scfg->{target}, $scfg->{portal});

     for my $portal (@$portals) {

---


Regards,
Stelios Vailakakis
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


             reply	other threads:[~2025-06-20  7:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-20  0:44 Stelios Vailakakis [this message]
2025-06-23  8:24 ` Friedrich Weber
2025-07-06 14:14   ` Stelios Vailakakis
2025-07-15 16:11     ` Friedrich Weber

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=BYAPR06MB4821234483B7D50E9C3C09CEA67DA@BYAPR06MB4821.namprd06.prod.outlook.com \
    --to=stelios@libvirt.dev \
    --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