From: Mira Limbeck <m.limbeck@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: Re: [pve-devel] [PATCH] fix #957 iscsi: don't check tcp connection directly
Date: Fri, 7 Mar 2025 12:59:32 +0100 [thread overview]
Message-ID: <17b91ea7-58fb-4c81-a40b-780a3039749a@proxmox.com> (raw)
In-Reply-To: <mailman.800.1741212404.293.pve-devel@lists.proxmox.com>
Thank you for the patch!
some comments inline
> +sub iscsi_test_session {
> + my ($portal, $sid) = @_;
> + my $cmd = [$ISCSIADM, '--mode', 'session', '--sid', $sid, '-P1'];
> +
> + my $res = 0;
> + eval {
> + run_command($cmd, errmsg => 'iscsi session test failed', outfunc => sub {
> + my $line = shift;
> + if ($line =~ m/^\s+iSCSI Session State: LOGGED_IN\s*$/) {
> + $res = 1;
> + }
> + });
> + };
> + if (my $err = $@) {
> + die $err;
> + };
> + return $res;
> +}
You pass in `$portal` which is never used. This should be removed unless
you have a use case for which it might be needed in the future?
> -
> + my $cache = {};
> for my $portal (@$portals) {
The $portal variable is never used below. Is it necessary to even loop
over all of them when just checking the cached sessions?
The session loop below will be run for each of the portals, leading to a
portals * sessions amount of iscsi_test_session calls.
> - my $result = iscsi_test_portal($portal);
> - return $result if $result;
> + my $sessions = iscsi_session($cache, $scfg->{target});
> + for my $session (@$sessions) {
> + my $result = iscsi_test_session($portal, $session->{session_id});
> + return $result if $result;
> + }
> }
Making this change in `check_connection` leads to storages never being
activated, since there's an early exit in case the storage is not
reachable (src/PVE/Storage.pm:1196):
```
if (! eval { $plugin->check_connection($storeid, $scfg) }) {
die "connection check for storage '$storeid' failed - $@\n" if $@;
die "storage '$storeid' is not online\n";
}
```
Maybe this could be changed to first see if there's a session available,
and if not, call `iscsi_test_portal`.
And if there's a session available, one can check the session state instead.
With this, we would still need the portals list.
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2025-03-07 12:00 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-05 21:59 Victor Seva via pve-devel
2025-03-07 11:59 ` Mira Limbeck [this message]
2025-03-07 12:03 ` Mira Limbeck
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=17b91ea7-58fb-4c81-a40b-780a3039749a@proxmox.com \
--to=m.limbeck@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal