rpms/iscsi-initiator-utils/devel iscsi-initiator-utils-fix-session-mixup-on-restart.patch, NONE, 1.1 .cvsignore, 1.10, 1.11 iscsi-initiator-utils.spec, 1.19, 1.20 sources, 1.10, 1.11

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Fri Sep 15 20:39:17 UTC 2006


Author: mchristi

Update of /cvs/dist/rpms/iscsi-initiator-utils/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv23898

Modified Files:
	.cvsignore iscsi-initiator-utils.spec sources 
Added Files:
	iscsi-initiator-utils-fix-session-mixup-on-restart.patch 
Log Message:
fix several multi transport running bugs

iscsi-initiator-utils-fix-session-mixup-on-restart.patch:
 initiator.c   |   13 ++++++++++---
 iscsi_sysfs.c |   28 ++++++++++++++++++++++++----
 iscsid.c      |   16 ++++++++++++----
 3 files changed, 46 insertions(+), 11 deletions(-)

--- NEW FILE iscsi-initiator-utils-fix-session-mixup-on-restart.patch ---
diff -aurp open-iscsi-6.2.0.695/usr/initiator.c open-iscsi-6.2.0.695.qla4xxx/usr/initiator.c
--- open-iscsi-6.2.0.695/usr/initiator.c	2006-09-06 16:22:44.000000000 -0500
+++ open-iscsi-6.2.0.695.qla4xxx/usr/initiator.c	2006-09-15 15:16:57.000000000 -0500
@@ -1524,11 +1524,17 @@ static int match_session(void *data, cha
 			 int port, int sid)
 {
 	node_rec_t *rec = data;
+	iscsi_provider_t *p;
 
-	log_debug(6, "looking for session [%s,%s,%d]",
+	log_debug(6, "looking for session [%d][%s,%s,%d]", sid,
 		  rec->name, rec->conn[0].address, rec->conn[0].port);
 
-	if (!strncmp(rec->name, targetname, strlen(rec->name)) &&
+	p = get_transport_by_sid(sid);
+	if (!p)
+		return 0;
+
+	if (!strcmp(rec->transport_name, p->name) &&
+	    !strncmp(rec->name, targetname, strlen(rec->name)) &&
 	    !strncmp(rec->conn[0].address, address,
 		     strlen(rec->conn[0].address)) &&
 	    rec->conn[0].port == port)
@@ -1555,7 +1561,8 @@ session_find_by_rec(node_rec_t *rec)
 
 			if (match_session(rec, session->nrec.name,
 					  -1, session->nrec.conn[0].address,
-					  session->nrec.conn[0].port, -1))
+					  session->nrec.conn[0].port,
+					  session->id))
 				return session;
 
 			sitem = sitem->q_forw;
diff -aurp open-iscsi-6.2.0.695/usr/iscsid.c open-iscsi-6.2.0.695.qla4xxx/usr/iscsid.c
--- open-iscsi-6.2.0.695/usr/iscsid.c	2006-09-06 02:16:07.000000000 -0500
+++ open-iscsi-6.2.0.695.qla4xxx/usr/iscsid.c	2006-09-15 15:08:59.000000000 -0500
@@ -97,20 +97,28 @@ static int sync_session(void *data, char
 	int fd = -1;
 	iscsiadm_req_t req;
 	iscsiadm_rsp_t rsp;
+	iscsi_provider_t *p;
 
 	log_debug(7, "sync session [%d][%s,%s.%d]\n", sid, targetname, address,
 		  port);
 
-	/* for now skip qlogic and other HW and offload drivers */
-	if (!get_transport_by_sid(sid))
+	p = get_transport_by_sid(sid);
+	if (!p)
 		return 0;
 
 	if (idbm_node_read(db, &rec, targetname, address, port)) {
-		log_error("could not read data for [%s,%s.%d]\n",
-			  targetname, address, port);
+		log_warning("could not read data for [%s,%s.%d]\n",
+			    targetname, address, port);
 		return 0;
 	}
 
+	/*
+	 * for now skip qlogic and other HW and offload driver that
+	 * that store their data somewhere else
+	 */
+	if (strcmp(p->name, rec.transport_name))
+		return 0;
+
 	memset(&req, 0, sizeof(req));
 	req.command = MGMT_IPC_SESSION_SYNC;
 	req.u.session.sid = sid;
diff -aurp open-iscsi-6.2.0.695/usr/iscsi_sysfs.c open-iscsi-6.2.0.695.qla4xxx/usr/iscsi_sysfs.c
--- open-iscsi-6.2.0.695/usr/iscsi_sysfs.c	2006-09-06 16:22:44.000000000 -0500
+++ open-iscsi-6.2.0.695.qla4xxx/usr/iscsi_sysfs.c	2006-09-15 14:52:14.000000000 -0500
@@ -164,16 +164,36 @@ int get_sessioninfo_by_sysfs_id(int *sid
 		"persistent_address", *sid);
 	memset(addr, 0, NI_MAXHOST);
 	ret = read_sysfs_file(sysfs_file, addr, "%s\n");
-	if (ret)
-		log_debug(5, "could not read conn addr: %d", ret);
+	if (ret) {
+		/* fall back to current address */
+		log_debug(5, "could not read pers conn addr: %d", ret);
+		memset(sysfs_file, 0, PATH_MAX);
+		sprintf(sysfs_file,
+			 "/sys/class/iscsi_connection/connection%d:0/address",
+			 *sid);
+		memset(addr, 0, NI_MAXHOST);
+		ret = read_sysfs_file(sysfs_file, addr, "%s\n");
+		if (ret)
+			log_debug(5, "could not read curr addr: %d", ret);
+	}
 
 	memset(sysfs_file, 0, PATH_MAX);
 	sprintf(sysfs_file, "/sys/class/iscsi_connection/connection%d:0/"
 		"persistent_port", *sid);
 	*port = -1;
 	ret = read_sysfs_file(sysfs_file, port, "%u\n");
-	if (ret)
-		log_debug(5, "Could not read conn port %d\n", ret);
+	if (ret) {
+		/* fall back to current port */
+		log_debug(5, "Could not read pers conn port %d\n", ret);
+		memset(sysfs_file, 0, PATH_MAX);
+		sprintf(sysfs_file,
+			"/sys/class/iscsi_connection/connection%d:0/port",
+			*sid);
+		*port = -1;
+		ret = read_sysfs_file(sysfs_file, port, "%u\n");
+		if (ret)
+			log_debug(5, "Could not read curr conn port %d\n", ret);
+	}
 
 	log_debug(7, "found targetname %s address %s port %d\n",
 		  targetname, addr ? addr : "NA", *port);


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/iscsi-initiator-utils/devel/.cvsignore,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- .cvsignore	31 Aug 2006 20:09:44 -0000	1.10
+++ .cvsignore	15 Sep 2006 20:39:14 -0000	1.11
@@ -5,3 +5,4 @@
 open-iscsi-1.1-645.tar.bz2
 open-iscsi-6.1.1.645.tar.bz2
 open-iscsi-6.1.1.685.tar.bz2
+open-iscsi-6.2.0.695.tar.bz2


Index: iscsi-initiator-utils.spec
===================================================================
RCS file: /cvs/dist/rpms/iscsi-initiator-utils/devel/iscsi-initiator-utils.spec,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- iscsi-initiator-utils.spec	5 Sep 2006 20:51:31 -0000	1.19
+++ iscsi-initiator-utils.spec	15 Sep 2006 20:39:14 -0000	1.20
@@ -1,11 +1,12 @@
 Summary: iSCSI daemon and utility programs
 Name: iscsi-initiator-utils
-Version: 6.1.1.685
+Version: 6.2.0.695
 Release: 0.1
-Source0: http://people.redhat.com/mchristi/iscsi/FC6/open-iscsi/rpm/open-iscsi-6.1.1.685.tar.bz2
+Source0: http://people.redhat.com/mchristi/iscsi/FC6/open-iscsi/rpm/open-iscsi-6.2.0.695.tar.bz2
 Source1: iscsi.init
 Patch0: open-iscsi-5.0.5.595-update-initscripts-and-docs.patch
 Patch1: open-iscsi-5.0.5.595-add-iscsi-iname.patch
+Patch2: iscsi-initiator-utils-fix-session-mixup-on-restart.patch
 
 Group: System Environment/Daemons
 License: GPL
@@ -25,6 +26,7 @@
 %setup -q -n open-iscsi-%{version}
 %patch0 -p1 -b .update-initscripts-and-docs
 %patch1 -p1 -b .add-iscsi-iname
+%patch2 -p1 -b .fix-session-mixup-on-restart
 
 %build
 make OPTFLAGS="%{optflags}" -C usr
@@ -67,6 +69,11 @@
 %{_mandir}/*/*
 
 %changelog
+* Fri Sep 15 2006 Mike Christie <mchristie at redhat.com> - 6.2.0.695-0.1
+- Add compat with FC kernel so iscsid will pass startup checks and run.
+- Fix bug when using hw iscsi and software iscsi and iscsid is restarted.
+- Fix session matching bug when hw and software iscsi is both running
+
 * Tue Sep  5 2006 Jeremy Katz <katzj at redhat.com> - 6.1.1.685-0.1
 - Fix service startup
 - Fix another case where cflags weren't being used


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/iscsi-initiator-utils/devel/sources,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- sources	31 Aug 2006 20:09:46 -0000	1.10
+++ sources	15 Sep 2006 20:39:14 -0000	1.11
@@ -1 +1 @@
-89a822f2b1a06884f915e6512df3a384  open-iscsi-6.1.1.685.tar.bz2
+01b98ae5349609977c795cc039cd33d3  open-iscsi-6.2.0.695.tar.bz2




More information about the fedora-cvs-commits mailing list