Fix iscsiadm op new report to can not rename error

Signed-off-by: Wenchao Hao <haowenchao@huawei.com>
This commit is contained in:
Wenchao Hao 2021-02-22 22:43:21 +08:00
parent 67d2780d91
commit 177f8ee7e0
2 changed files with 85 additions and 1 deletions

View File

@ -0,0 +1,80 @@
From 181dbc293bf9d0a0c9674d16db6f7d9b1ed19b49 Mon Sep 17 00:00:00 2001
From: wubo <wubo40@huawei.com>
Date: Mon, 21 Sep 2020 18:54:38 +0800
Subject: [PATCH] Fix iscsiadm op new report to cannort rename error
Since patched 9009-fix-default-file-corrupt.patch,
In order to solve the abnormal power failure during iscsiadm login,
the node configuration file is cleared, and the target
problem cannot be found after restarting.
The difference between automatically creating target nodes
and the target nodes through the discovery process is not considered.
The automatically created taregt node s is an regual file,
but a directory through the discovery process.
It is incorrect to rename a regual file as a directory
1) Automatically created
# iscsiadm -m node
9.84.7.19:3260,4294967295iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.970bb3607d7d
# ls -l /etc/iscsi/nodes/iqn.2003-01.org.linux-iscsi.localhost.x8664\:sn.970bb3607d7d/
total 4
-rw-------. 1 root root 2096 Sep 21 22:44 9.84.7.19,3260
2) Discovery process
# iscsiadm -m node
9.84.7.19:3260,1iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.970bb3607d7d
# ls -l /etc/iscsi/nodes/iqn.2003-01.org.linux-iscsi.localhost.x8664\:sn.970bb3607d7d/
total 4
drw-------. 2 root root 4096 Sep 21 22:44 9.84.7.19,3260,1
rec->tpgt == PORTAL_GROUP_TAG_UNKNOWN is automatic mode,
rec->tpgt is not PORTAL_GROUP_TAG_UNKNOWN is dicovery mode
Add to support the Two mode.
Signed-off-by: Wu Bo <wubo40@huawei>
---
usr/idbm.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/usr/idbm.c b/usr/idbm.c
index 74b1dec..50e4d7e 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -2097,6 +2097,11 @@ mkdir_portal:
rec->name, rec->conn[0].address, rec->conn[0].port, rec->tpgt,
rec->iface.name);
open_conf:
+ if (rec->tpgt == PORTAL_GROUP_TAG_UNKNOWN) {
+ snprintf(portal, PATH_MAX, "%s/%s/%s,%d_bak", NODE_CONFIG_DIR,
+ rec->name, rec->conn[0].address, rec->conn[0].port);
+ }
+
f = fopen(portal, "w");
if (!f) {
log_error("Could not open %s: %s", portal, strerror(errno));
@@ -2131,10 +2136,16 @@ open_conf:
rc = ISCSI_ERR_IDBM;
goto free_portal;
}
+
+ if (rec->tpgt == PORTAL_GROUP_TAG_UNKNOWN) {
+ snprintf(portalDef, PATH_MAX, "%s/%s/%s,%d", NODE_CONFIG_DIR,
+ rec->name, rec->conn[0].address, rec->conn[0].port);
+ } else {
+ snprintf(portalDef, PATH_MAX, "%s/%s/%s,%d,%d/%s", NODE_CONFIG_DIR,
+ rec->name, rec->conn[0].address, rec->conn[0].port, rec->tpgt,
+ rec->iface.name);
+ }
- snprintf(portalDef, PATH_MAX, "%s/%s/%s,%d,%d/%s", NODE_CONFIG_DIR,
- rec->name, rec->conn[0].address, rec->conn[0].port, rec->tpgt,
- rec->iface.name);
/* Renaming default_bak->default. */
if (rename(portal, portalDef) < 0) {
log_error("Cannot rename %s -> %s\n", portal, portalDef);
--
1.8.3.1

View File

@ -4,7 +4,7 @@
Name: open-iscsi Name: open-iscsi
Version: 2.1.3 Version: 2.1.3
Release: 1 Release: 2
Summary: ISCSI software initiator daemon and utility programs Summary: ISCSI software initiator daemon and utility programs
License: GPLv2+ and BSD License: GPLv2+ and BSD
URL: http://www.open-iscsi.org URL: http://www.open-iscsi.org
@ -20,6 +20,7 @@ patch8: 0008-default-file-zero-after-power-outage.patch
patch9: 0009-Modify-iscsid.service-to-keep-same-with-previous-ver.patch patch9: 0009-Modify-iscsid.service-to-keep-same-with-previous-ver.patch
patch10: 0010-iscsiadm-fix-infinite-loop-while-recv-returns-0.patch patch10: 0010-iscsiadm-fix-infinite-loop-while-recv-returns-0.patch
patch11: 0011-not-send-stop-message-if-iscsid-absent.patch patch11: 0011-not-send-stop-message-if-iscsid-absent.patch
patch12: 0012-fix-iscsiadm-op-new-report-to-cannot-rename-error.patch
BuildRequires: flex bison doxygen kmod-devel systemd-units gcc git isns-utils-devel systemd-devel BuildRequires: flex bison doxygen kmod-devel systemd-units gcc git isns-utils-devel systemd-devel
BuildRequires: autoconf automake libtool libmount-devel openssl-devel pkg-config gdb BuildRequires: autoconf automake libtool libmount-devel openssl-devel pkg-config gdb
@ -152,6 +153,9 @@ fi
%{_mandir}/man8/* %{_mandir}/man8/*
%changelog %changelog
* Mon Feb 22 2021 haowenchao <haowenchao@huawei.com> - 2.1.3-2
- Fix iscsiadm op new report to can not rename error
* Thu Jan 28 2021 haowenchao <haowenchao@huawei.com> - 2.1.3-1 * Thu Jan 28 2021 haowenchao <haowenchao@huawei.com> - 2.1.3-1
- Update open-iscsi version to 2.1.3-1 - Update open-iscsi version to 2.1.3-1