import iscsi-initiator-utils-6.2.1.2-1.gita8fcb37.el8
This commit is contained in:
parent
b9c4028b2b
commit
16c3018b11
96
SOURCES/0024-libopeniscsiusr-fix-error-messages.patch
Normal file
96
SOURCES/0024-libopeniscsiusr-fix-error-messages.patch
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
From 13affd82b8248b954d10eb4fd3d544796360fafd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Wed, 17 Feb 2021 09:56:55 -0800
|
||||||
|
Subject: [PATCH] libopeniscsiusr: fix error messages
|
||||||
|
|
||||||
|
The error message in iscsi_session_get [libopeniscsiusr/session.c:140]
|
||||||
|
when a session or connection path isn't found in sysfs was failing to
|
||||||
|
print the session ID, instead it printed the address of the static
|
||||||
|
string for the remainder of the message ("does not exists") due to an
|
||||||
|
extra comma.
|
||||||
|
|
||||||
|
Additionally change all occurances of "does not exists" to "does not
|
||||||
|
exist"
|
||||||
|
|
||||||
|
Signed-off-by: Chris Leech <cleech@redhat.com>
|
||||||
|
---
|
||||||
|
libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h | 2 +-
|
||||||
|
libopeniscsiusr/session.c | 6 +++---
|
||||||
|
libopeniscsiusr/sysfs.c | 8 ++++----
|
||||||
|
3 files changed, 8 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
|
||||||
|
index 4395902..a29d5b1 100644
|
||||||
|
--- a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
|
||||||
|
+++ b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
|
||||||
|
@@ -288,7 +288,7 @@ __DLL_EXPORT void iscsi_sessions_free(struct iscsi_session **ses,
|
||||||
|
* Output pointer of 'struct iscsi_session' pointer. Its memory
|
||||||
|
* should be freed by iscsi_session_free().
|
||||||
|
* If this pointer is NULL, your program will be terminated by assert.
|
||||||
|
- * If specified iSCSI session does not exists, this pointer will be set to
|
||||||
|
+ * If specified iSCSI session does not exist, this pointer will be set to
|
||||||
|
* NULL with LIBISCSI_OK returned.
|
||||||
|
*
|
||||||
|
* Return:
|
||||||
|
diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c
|
||||||
|
index 7ace4d6..f122fe3 100644
|
||||||
|
--- a/libopeniscsiusr/session.c
|
||||||
|
+++ b/libopeniscsiusr/session.c
|
||||||
|
@@ -127,17 +127,17 @@ int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
|
||||||
|
_alloc_null_check(ctx, *se , rc, out);
|
||||||
|
|
||||||
|
if (! _file_exists(sysfs_se_dir_path)) {
|
||||||
|
- _info(ctx, "Sysfs path '%s' does not exists",
|
||||||
|
+ _info(ctx, "Sysfs path '%s' does not exist",
|
||||||
|
sysfs_se_dir_path);
|
||||||
|
rc = LIBISCSI_ERR_SESS_NOT_FOUND;
|
||||||
|
}
|
||||||
|
if (! _file_exists(sysfs_con_dir_path)) {
|
||||||
|
- _info(ctx, "Sysfs path '%s' does not exists",
|
||||||
|
+ _info(ctx, "Sysfs path '%s' does not exist",
|
||||||
|
sysfs_se_dir_path);
|
||||||
|
rc = LIBISCSI_ERR_SESS_NOT_FOUND;
|
||||||
|
}
|
||||||
|
if (rc == LIBISCSI_ERR_SESS_NOT_FOUND) {
|
||||||
|
- _error(ctx, "Specified SID %" PRIu32, "does not exists",
|
||||||
|
+ _error(ctx, "Specified SID %" PRIu32 " does not exist",
|
||||||
|
sid);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
diff --git a/libopeniscsiusr/sysfs.c b/libopeniscsiusr/sysfs.c
|
||||||
|
index 2c3f077..355ad55 100644
|
||||||
|
--- a/libopeniscsiusr/sysfs.c
|
||||||
|
+++ b/libopeniscsiusr/sysfs.c
|
||||||
|
@@ -169,11 +169,11 @@ int _sysfs_prop_get_str(struct iscsi_context *ctx, const char *dir_path,
|
||||||
|
if (default_value == NULL) {
|
||||||
|
rc = LIBISCSI_ERR_SYSFS_LOOKUP;
|
||||||
|
_error(ctx, "Failed to read '%s': "
|
||||||
|
- "file '%s' does not exists", prop_name,
|
||||||
|
+ "file '%s' does not exist", prop_name,
|
||||||
|
file_path);
|
||||||
|
} else {
|
||||||
|
_info(ctx, "Failed to read '%s': "
|
||||||
|
- "file '%s' does not exists, "
|
||||||
|
+ "file '%s' does not exist, "
|
||||||
|
"using default value %s", prop_name,
|
||||||
|
file_path, default_value);
|
||||||
|
memcpy(buff, (void *) default_value,
|
||||||
|
@@ -244,13 +244,13 @@ static int iscsi_sysfs_prop_get_ll(struct iscsi_context *ctx,
|
||||||
|
if (! ignore_error) {
|
||||||
|
rc = LIBISCSI_ERR_SYSFS_LOOKUP;
|
||||||
|
_error(ctx, "Failed to read '%s': "
|
||||||
|
- "file '%s' does not exists",
|
||||||
|
+ "file '%s' does not exist",
|
||||||
|
prop_name, file_path);
|
||||||
|
goto out;
|
||||||
|
} else {
|
||||||
|
_info(ctx,
|
||||||
|
"Failed to read '%s': "
|
||||||
|
- "File '%s' does not exists, using ",
|
||||||
|
+ "File '%s' does not exist, using ",
|
||||||
|
"default value %lld",
|
||||||
|
prop_name, file_path, default_value);
|
||||||
|
*val = default_value;
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -0,0 +1,60 @@
|
|||||||
|
From a744d91046865416a50ea27f143ef0f02fcaf1c6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Wed, 17 Feb 2021 12:22:17 -0800
|
||||||
|
Subject: [PATCH] libopeniscsiusr: skip over removed sessions
|
||||||
|
|
||||||
|
When looping over all sessions with iscsi_sessions_get, it's possible to
|
||||||
|
race against sessions being destroyed and have the sysfs attribute files
|
||||||
|
be removed before they're read. Let's not treat this as an error, and
|
||||||
|
simply drop the session that failed to read from the list. I think it
|
||||||
|
makes sense to treat session that disapear while they're being read as
|
||||||
|
if they were already gone when the sessions directory was first scanned.
|
||||||
|
|
||||||
|
Apparently having iscsiadm exit with an error when trying to get a list
|
||||||
|
of sessions is a problem for OpenStack deployments.
|
||||||
|
|
||||||
|
Signed-off-by: Chris Leech <cleech@redhat.com>
|
||||||
|
---
|
||||||
|
libopeniscsiusr/session.c | 18 ++++++++++++++++--
|
||||||
|
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c
|
||||||
|
index f122fe3..4a724c8 100644
|
||||||
|
--- a/libopeniscsiusr/session.c
|
||||||
|
+++ b/libopeniscsiusr/session.c
|
||||||
|
@@ -246,6 +246,7 @@ int iscsi_sessions_get(struct iscsi_context *ctx,
|
||||||
|
{
|
||||||
|
int rc = LIBISCSI_OK;
|
||||||
|
uint32_t i = 0;
|
||||||
|
+ uint32_t j = 0;
|
||||||
|
uint32_t *sids = NULL;
|
||||||
|
|
||||||
|
assert(ctx != NULL);
|
||||||
|
@@ -264,9 +265,22 @@ int iscsi_sessions_get(struct iscsi_context *ctx,
|
||||||
|
|
||||||
|
for (i = 0; i < *session_count; ++i) {
|
||||||
|
_debug(ctx, "sid %" PRIu32, sids[i]);
|
||||||
|
- _good(iscsi_session_get(ctx, sids[i], &((*sessions)[i])),
|
||||||
|
- rc, out);
|
||||||
|
+ rc = iscsi_session_get(ctx, sids[i], &((*sessions)[j]));
|
||||||
|
+ if (rc == LIBISCSI_OK) {
|
||||||
|
+ /* if session info was successfully read from sysfs, advance the sessions pointer */
|
||||||
|
+ j++;
|
||||||
|
+ } else {
|
||||||
|
+ /* if not, just ignore the issue and keep trying with the next session ID,
|
||||||
|
+ * there's always going to be an inherent race against session removal when collecting
|
||||||
|
+ * attribute data from sysfs
|
||||||
|
+ */
|
||||||
|
+ _debug(ctx, "Problem reading session %" PRIu32 ", skipping.", sids[i]);
|
||||||
|
+ rc = LIBISCSI_OK;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
+ /* reset session count and sessions array length to what we were able to read from sysfs */
|
||||||
|
+ *session_count = j;
|
||||||
|
+ *sessions = reallocarray(*sessions, *session_count, sizeof(struct iscsi_session *));
|
||||||
|
|
||||||
|
out:
|
||||||
|
free(sids);
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -0,0 +1,72 @@
|
|||||||
|
From b21066fc07261e05590ccab839bf5eee2249d358 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Wed, 17 Feb 2021 13:48:25 -0800
|
||||||
|
Subject: [PATCH] libopeniscsiusr: dont error loudly if a session isn't found
|
||||||
|
when working through iscsi_sessions_get()
|
||||||
|
|
||||||
|
Suppress the error message from iscsi_session_get when it's being called
|
||||||
|
through iscsi_sessions_get now that it's not being treated as an error.
|
||||||
|
There's no reason to be so alarmed the session being read in isn't
|
||||||
|
specified exactly.
|
||||||
|
|
||||||
|
Signed-off-by: Chris Leech <cleech@redhat.com>
|
||||||
|
---
|
||||||
|
libopeniscsiusr/session.c | 21 ++++++++++++++++-----
|
||||||
|
1 file changed, 16 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c
|
||||||
|
index 4a724c8..6b06241 100644
|
||||||
|
--- a/libopeniscsiusr/session.c
|
||||||
|
+++ b/libopeniscsiusr/session.c
|
||||||
|
@@ -101,8 +101,8 @@ _iscsi_getter_func_gen(iscsi_session, address, const char *);
|
||||||
|
_iscsi_getter_func_gen(iscsi_session, port, int32_t);
|
||||||
|
_iscsi_getter_func_gen(iscsi_session, iface, struct iscsi_iface *);
|
||||||
|
|
||||||
|
-int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
|
||||||
|
- struct iscsi_session **se)
|
||||||
|
+int _iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
|
||||||
|
+ struct iscsi_session **se, bool verbose)
|
||||||
|
{
|
||||||
|
int rc = LIBISCSI_OK;
|
||||||
|
char *sysfs_se_dir_path = NULL;
|
||||||
|
@@ -137,8 +137,14 @@ int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
|
||||||
|
rc = LIBISCSI_ERR_SESS_NOT_FOUND;
|
||||||
|
}
|
||||||
|
if (rc == LIBISCSI_ERR_SESS_NOT_FOUND) {
|
||||||
|
- _error(ctx, "Specified SID %" PRIu32 " does not exist",
|
||||||
|
- sid);
|
||||||
|
+ /* don't complain loudly if called through iscsi_sessions_get()
|
||||||
|
+ * the caller is not looking for a specific session,
|
||||||
|
+ * and the list could be changing as we work through it
|
||||||
|
+ */
|
||||||
|
+ if (verbose) {
|
||||||
|
+ _error(ctx, "Specified SID %" PRIu32 " does not exist",
|
||||||
|
+ sid);
|
||||||
|
+ }
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -240,6 +246,11 @@ out:
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
|
||||||
|
+ struct iscsi_session **se) {
|
||||||
|
+ return _iscsi_session_get(ctx, sid, se, true);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int iscsi_sessions_get(struct iscsi_context *ctx,
|
||||||
|
struct iscsi_session ***sessions,
|
||||||
|
uint32_t *session_count)
|
||||||
|
@@ -265,7 +276,7 @@ int iscsi_sessions_get(struct iscsi_context *ctx,
|
||||||
|
|
||||||
|
for (i = 0; i < *session_count; ++i) {
|
||||||
|
_debug(ctx, "sid %" PRIu32, sids[i]);
|
||||||
|
- rc = iscsi_session_get(ctx, sids[i], &((*sessions)[j]));
|
||||||
|
+ rc = _iscsi_session_get(ctx, sids[i], &((*sessions)[j]), false);
|
||||||
|
if (rc == LIBISCSI_OK) {
|
||||||
|
/* if session info was successfully read from sysfs, advance the sessions pointer */
|
||||||
|
j++;
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -13,7 +13,7 @@
|
|||||||
Summary: iSCSI daemon and utility programs
|
Summary: iSCSI daemon and utility programs
|
||||||
Name: iscsi-initiator-utils
|
Name: iscsi-initiator-utils
|
||||||
Version: 6.%{open_iscsi_version}.%{open_iscsi_build}
|
Version: 6.%{open_iscsi_version}.%{open_iscsi_build}
|
||||||
Release: 0.git%{shortcommit0}%{?dist}
|
Release: 1.git%{shortcommit0}%{?dist}
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: http://www.open-iscsi.org
|
URL: http://www.open-iscsi.org
|
||||||
@ -44,6 +44,9 @@ Patch0020: 0020-fix-upstream-build-breakage-of-iscsiuio-LDFLAGS.patch
|
|||||||
Patch0021: 0021-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
|
Patch0021: 0021-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
|
||||||
Patch0022: 0022-iscsi_if.h-replace-zero-length-array-with-flexible-a.patch
|
Patch0022: 0022-iscsi_if.h-replace-zero-length-array-with-flexible-a.patch
|
||||||
Patch0023: 0023-stop-using-Werror-for-now.patch
|
Patch0023: 0023-stop-using-Werror-for-now.patch
|
||||||
|
Patch0024: 0024-libopeniscsiusr-fix-error-messages.patch
|
||||||
|
Patch0025: 0025-libopeniscsiusr-skip-over-removed-sessions.patch
|
||||||
|
Patch0026: 0026-libopeniscsiusr-dont-error-loudly-if-a-session-isn-t.patch
|
||||||
|
|
||||||
BuildRequires: flex bison doxygen kmod-devel systemd-units
|
BuildRequires: flex bison doxygen kmod-devel systemd-units
|
||||||
BuildRequires: autoconf automake libtool libmount-devel openssl-devel
|
BuildRequires: autoconf automake libtool libmount-devel openssl-devel
|
||||||
@ -362,6 +365,9 @@ fi
|
|||||||
%{python3_sitearch}/*
|
%{python3_sitearch}/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Mar 12 2021 Chris Leech <cleech@redhat.com> - 6.2.1.2-1.gita8fcb37
|
||||||
|
- 1924768 iscsiadm -m sessions fails when racing against session login/logout
|
||||||
|
|
||||||
* Thu Aug 20 2020 Chris Leech - 6.2.0.878-5.gitd791ce0
|
* Thu Aug 20 2020 Chris Leech - 6.2.0.878-5.gitd791ce0
|
||||||
- 1849931, 1869438 go back to MD5 CHAP only by default
|
- 1849931, 1869438 go back to MD5 CHAP only by default
|
||||||
new CHAP modes can cause issue with some targets,
|
new CHAP modes can cause issue with some targets,
|
||||||
|
Loading…
Reference in New Issue
Block a user