The Lee-Man | 15 Jan 20:49 2016
Picon
Gravatar

Do you prefer pull requests or patches submitted?

Hi Mike:

I see you have taken some pull requests using the github issue/pull-request mechanism. Do you prefer this over the mailing list? I know I kind of prefer it, myself, from both directions, since it makes the workflow a touch easier and faster. What's your preference?
-- 
Lee Duncan

--
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to open-iscsi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Visit this group at https://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.
adheer.chandravanshi | 28 Dec 09:56 2015

[PATCH] iscsiuio: Get the library to use based on uio sysfs name

From: Adheer Chandravanshi <adheer.chandravanshi@...>

This makes iscsiuio more compatible with newer adapters by eliminating
the need to always update iscsiuio with the PCI IDs of the new adapter.

Signed-off-by: Adheer Chandravanshi <adheer.chandravanshi@...>
---
 iscsiuio/src/unix/nic.c       |   22 +++++++++++---
 iscsiuio/src/unix/nic.h       |    6 ++-
 iscsiuio/src/unix/nic_id.c    |    2 +
 iscsiuio/src/unix/nic_utils.c |   65 +++++++++++++++++++++++++++--------------
 4 files changed, 66 insertions(+), 29 deletions(-)

diff --git a/iscsiuio/src/unix/nic.c b/iscsiuio/src/unix/nic.c
index 38a5776..fb3b7c3 100644
--- a/iscsiuio/src/unix/nic.c
+++ b/iscsiuio/src/unix/nic.c
 <at>  <at>  -152,7 +152,6  <at>  <at>  static int load_nic_library(nic_lib_handle_t *handle)
 	/*  Validate the NIC library ops table to ensure that all the proper
 	 *  fields are filled */
 	if ((handle->ops->lib_ops.get_library_name == NULL) ||
-	    (handle->ops->lib_ops.get_pci_table == NULL) ||
 	    (handle->ops->lib_ops.get_library_version == NULL) ||
 	    (handle->ops->lib_ops.get_build_date == NULL) ||
 	    (handle->ops->lib_ops.get_transport_name == NULL)) {
 <at>  <at>  -247,7 +246,8  <at>  <at>  int unload_all_nic_libraries()
 	return 0;
 }

-NIC_LIBRARY_EXIST_T does_nic_uio_name_exist(char *name)
+NIC_LIBRARY_EXIST_T does_nic_uio_name_exist(char *name,
+					    nic_lib_handle_t **handle)
 {
 	NIC_LIBRARY_EXIST_T rc;
 	nic_lib_handle_t *current;
 <at>  <at>  -263,6 +263,9  <at>  <at>  NIC_LIBRARY_EXIST_T does_nic_uio_name_exist(char *name)
 						       &uio_name_size);

 		if (strncmp(name, uio_name, uio_name_size) == 0) {
+			if (handle)
+				*handle = current;
+
 			rc = NIC_LIBRARY_EXSITS;
 			goto done;
 		}
 <at>  <at>  -277,7 +280,8  <at>  <at>  done:
 	return rc;
 }

-NIC_LIBRARY_EXIST_T does_nic_library_exist(char *name)
+NIC_LIBRARY_EXIST_T does_nic_library_exist(char *name,
+					   nic_lib_handle_t **handle)
 {
 	NIC_LIBRARY_EXIST_T rc;
 	nic_lib_handle_t *current;
 <at>  <at>  -293,6 +297,9  <at>  <at>  NIC_LIBRARY_EXIST_T does_nic_library_exist(char *name)
 							   &library_name_size);

 		if (strncmp(name, library_name, library_name_size) == 0) {
+			if (handle)
+				*handle = current;
+
 			rc = NIC_LIBRARY_EXSITS;
 			goto done;
 		}
 <at>  <at>  -333,8 +340,13  <at>  <at>  int find_nic_lib_using_pci_id(uint32_t vendor, uint32_t device,
 		uint32_t entries;
 		int i;

-		current->ops->lib_ops.get_pci_table(&pci_table, &entries);
-
+		if (current->ops->lib_ops.get_pci_table != NULL) {
+			current->ops->lib_ops.get_pci_table(&pci_table,
+							    &entries);
+		} else {
+			current = current->next;
+			continue;
+		}
 		/*  Sanity check the the pci table coming from the
 		 *  hardware library */
 		if (entries > MAX_PCI_DEVICE_ENTRIES) {
diff --git a/iscsiuio/src/unix/nic.h b/iscsiuio/src/unix/nic.h
index 8484032..e99fd8e 100644
--- a/iscsiuio/src/unix/nic.h
+++ b/iscsiuio/src/unix/nic.h
 <at>  <at>  -351,8 +351,10  <at>  <at>  typedef enum {
 	NIC_LIBRARY_DOESNT_EXIST = 2,
 } NIC_LIBRARY_EXIST_T;

-NIC_LIBRARY_EXIST_T does_nic_uio_name_exist(char *name);
-NIC_LIBRARY_EXIST_T does_nic_library_exist(char *name);
+NIC_LIBRARY_EXIST_T does_nic_uio_name_exist(char *name,
+					    nic_lib_handle_t **handle);
+NIC_LIBRARY_EXIST_T does_nic_library_exist(char *name,
+					   nic_lib_handle_t **handle);

 /*******************************************************************************
  *  Packet management utility functions
diff --git a/iscsiuio/src/unix/nic_id.c b/iscsiuio/src/unix/nic_id.c
index 6b2467c..6da0a38 100644
--- a/iscsiuio/src/unix/nic_id.c
+++ b/iscsiuio/src/unix/nic_id.c
 <at>  <at>  -308,6 +308,7  <at>  <at>  int find_set_nic_lib(nic_t *nic)

 	nic_lib_handle_t *handle;
 	struct pci_device_id *pci_entry;
+	size_t name_size;

 	rc = get_vendor(nic, &vendor);
 	if (rc != 0) {
 <at>  <at>  -357,6 +358,7  <at>  <at>  int find_set_nic_lib(nic_t *nic)

 	/*  Prepare the NIC library op table */
 	nic->ops = handle->ops;
+	(*nic->ops->lib_ops.get_library_name) (&nic->library_name, &name_size);

 	return 0;
 }
diff --git a/iscsiuio/src/unix/nic_utils.c b/iscsiuio/src/unix/nic_utils.c
index d57cc4f..0daffd2 100644
--- a/iscsiuio/src/unix/nic_utils.c
+++ b/iscsiuio/src/unix/nic_utils.c
 <at>  <at>  -700,6 +700,9  <at>  <at>  int nic_verify_uio_sysfs_name(nic_t *nic)
 	uint32_t raw_size = 0;
 	char temp_path[sizeof(nic_uio_sysfs_name_tempate) + 8];
 	int rc = 0;
+	nic_lib_handle_t *handle = NULL;
+	size_t name_size;
+

 	/*  Build the path to determine uio name */
 	snprintf(temp_path, sizeof(temp_path),
 <at>  <at>  -716,37 +719,43  <at>  <at>  int nic_verify_uio_sysfs_name(nic_t *nic)
 	*raw_tmp = '\0';

 	/*  If the nic library is not set then check if there is a library
-	 *  which matches the library name */
+	 *  which matches the uio sysfs name */
 	if (nic->nic_library == NULL) {
 		NIC_LIBRARY_EXIST_T exist;

-		exist = does_nic_uio_name_exist(raw);
+		exist = does_nic_uio_name_exist(raw, &handle);
 		if (exist == NIC_LIBRARY_DOESNT_EXIST) {
-			LOG_ERR(PFX "%s: could not find library: %s ",
+			LOG_ERR(PFX "%s: could not find library for uio name: %s",
 				nic->log_name, raw);
-			rc = -EIO;
+			rc = -EINVAL;
+			goto error;
 		}
-	} else {
-		char *library_name;
-		size_t library_name_size;

-		/*  Get the string name from the NIC library */
-		(*nic->ops->lib_ops.get_library_name) (&library_name,
-						       &library_name_size);
+		/* fill the lib info */
+		nic->nic_library = handle;
+		nic->ops = handle->ops;
+		(*nic->ops->lib_ops.get_library_name) (&nic->library_name,
+						       &name_size);
+	} else {
+		/*  Get the uio sysfs name from the NIC library */
+		(*nic->ops->lib_ops.get_uio_name) (&raw_tmp, &name_size);

-		if (strcmp(raw, library_name) != 0) {
+		if (strncmp(raw, raw_tmp, name_size) != 0) {
 			LOG_ERR(PFX "%s: uio names not equal: "
 				"expecting %s got %s from %s",
-				nic->log_name, library_name, raw, temp_path);
-			rc = -EIO;
+				nic->log_name, raw, raw_tmp, temp_path);
+			rc = -EINVAL;
+			goto error;
 		}
 	}

-	free(raw);
-
-	LOG_INFO(PFX "%s: Verified is a cnic_uio device", nic->log_name);
+	LOG_INFO(PFX "%s: Verified uio name %s with library %s",
+		 nic->log_name, raw, nic->library_name);

 error:
+	if (raw)
+		free(raw);
+
 	return rc;
 }

 <at>  <at>  -844,28 +853,40  <at>  <at>  void prepare_library(nic_t *nic)
 {
 	int rc;
 	NIC_LIBRARY_EXIST_T exist;
+	nic_lib_handle_t *handle = NULL;

 	nic_fill_name(nic);

 	/* No assoicated library, we can skip it */
 	if (nic->library_name != NULL) {
 		/*  Check that we have the proper NIC library loaded */
-		exist = does_nic_library_exist(nic->library_name);
+		exist = does_nic_library_exist(nic->library_name, &handle);
 		if (exist == NIC_LIBRARY_DOESNT_EXIST) {
 			LOG_ERR(PFX "NIC library doesn't exists: %s",
 				nic->library_name);
 			goto error;
+		} else if (handle && (nic->nic_library == handle) &&
+			  (nic->ops == handle->ops)) {
+			LOG_INFO("%s: Have NIC library '%s'",
+				 nic->log_name, nic->library_name);
 		}
 	}

-	/*  Determine the NIC library to use based on the PCI Id */
-	rc = find_set_nic_lib(nic);
+	/*  Verify the NIC library to use */
+	rc = nic_verify_uio_sysfs_name(nic);
 	if (rc != 0) {
-		LOG_ERR(PFX "%s: Couldn't find NIC library", nic->log_name);
-		goto error;
+		/*  Determine the NIC library to use based on the PCI Id */
+		rc = find_set_nic_lib(nic);
+		if (rc != 0) {
+			LOG_ERR(PFX "%s: Couldn't find NIC library",
+				nic->log_name);
+			goto error;
+		}
+
 	}

-	LOG_INFO("%s: found NIC '%s'", nic->log_name, nic->pci_id->device_name);
+	LOG_INFO("%s: found NIC with library '%s'",
+		 nic->log_name, nic->library_name);
 error:
 	return;
 }
-- 
1.7.1

--

-- 
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe@...
To post to this group, send email to open-iscsi@...
Visit this group at https://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.

Johannes Thumshirn | 25 Nov 11:04 2015
Picon

iSCSI and scsi-mq

Hi iSCSI experts,

I've been starting to research possible implementations of a scsi-mq capable
iSCSI. With my research I found the following thread https://groups.google.com/
forum/#!msg/open-iscsi/qLaXJh2Gqt4/A2NIDZ0fT9oJ and wondered what happened to
the efforts layed out there (and what have been the results of the discussion
at LSF/MM).

The one TCP connection per CPU or HW queue approach sounds particularly
interesting to me when taking a SW iSCSI initiator. A problem Hannes pointed
out here could be network topology changes which result in a different route on
a different NIC with a different number of HW queues, so it might not be the
ultimate solution.

With the offload cards we might need to do something else.

Is there anyone else working on a scsi-mq for iSCSI at the moment and is
willing to join efforts here?

Byte,
	Johannes

--

-- 
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe@...
To post to this group, send email to open-iscsi@...
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.

The Lee-Man | 17 Nov 00:35 2015
Picon
Gravatar

Updated open-isns to 0.95

Hello all:

I've added a couple of bug fixes to open-isns, and updated the version to 0.95.

Here's a summary of the changes:

3af749e0c8e1 Bump version to 0.95
6d794c22c867 isnsd exit(0) when terminated with SIGTERM
d1495f23cca5 Be more robust when dealing with the database
2f2aa4ef102f Remove isnsd debugging output
7b4fd0cb8384 Ensure we can reliably get our local IP address.
7754e18e22a9 Allow setting server name for isnsadm.

--
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to open-iscsi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.
Richard Sharpe | 16 Nov 19:08 2015
Picon

Corruption of config files causing

What seems to be happening is that the config files are getting
corrupted in interesting ways such that they have more than 2048 chars
in a line without an NL.

Eg:

---------------------------------------
/var/lib/iscsi/nodes/iqn.2010-06.com.nutanix:volumegroup-d86fb4c6-0a26-4a99-a4c4-38966b1955c8/10.5.20.138,3260,1^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> ^ <at> #
BEGIN RECORD 6.2.0-873.13.el6
node.name = iqn.2010-06.com.nutanix:volumegroup-5bd06b21-fb06-4b8e-b973-e81b86409e39
------------------------------

There are other cases. Some where both of the first two lines are two
long or where the second line is missing.

This then causes errors like this:

iscsiadm: Could not stat /var/lib/iscsi/nodes//,3260,-1 /default to delete node err 2\n\niscsiadm: Could not add/update [tcp:[hw=,ip=,net_if=,iscsi_if=default] 10.35.65.25,3260,1 scale_sd2]
I hear that there might be a patch to fix this problem.
Can anyone point me at it?

--
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to open-iscsi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.
Michael Christie | 16 Nov 18:30 2015
Picon

Re: [PATCH 1/1] iscsi: fix regression caused by session lock patch


> On Nov 15, 2015, at 4:10 AM, Or Gerlitz <gerlitz.or@...> wrote:
> 
> On Fri, Nov 13, 2015 at 6:51 PM, Mike Christie <michaelc@...> wrote:
>> On 11/13/2015 09:06 AM, Or Gerlitz wrote:
>>>> The patch has caused multiple regressions, did not even compile when
>>>>> sent to me, and was poorly reviewed and I have not heard from you guys
>>>>> in a week. Given the issues the patch has had and the current time, I do
>>>>> not feel comfortable with it anymore. I want to re-review it and fix it
>>>>> up when there is more time.
>>> Mike (Hi),
>>> 
>>> It's a complex patch that touches all the iscsi transports, and yes,
>>> when it was send to you the 1st time, there was build error on one of
>>> the offload transports (bad! but happens) and yes, as you pointed, one
>>> static checker fix + one bug fix for it went upstream after this has
>>> been merged, happens too.
>> 
>> A patch should not cause this many issues.
>> 
>>> What makes you say it was poorly reviewed?
>> 
>> I just did not do a good job at looking at the patch. I should have
>> caught all of these issues.
>> 
>> - The bnx2i cleanup_task bug should have been obvious, especially for me
>> because I had commented about the back lock and the abort path.
>> 
>> - This oops, was so basic. Incorrect locking around a linked list being
>> accessed from 2 threads is really one of those 1st year kernel
>> programmer things.
> 
> Mike, Chris
> 
> After the locking change, adding a task to any of the connection
> mgmtqueue, cmdqueue, or requeue lists is under the session forward lock.
> 
> Removing tasks from any of these lists in iscsi_data_xmit is under
> the session forward lock and **before** calling down to the transport
> to handle the task.
> 
> The iscsi_complete_task helper was added by Mike's commit
> 3bbaaad95fd38ded "[SCSI] libiscsi: handle cleanup task races"
> and is indeed typically called under the backward lock && has this section
> 
> +       if (!list_empty(&task->running))
> +               list_del_init(&task->running);
> 
> which per my reading of the code never comes into play, can you comment?

I had sent this to Sagi and your mellanox email the other day:

> The bug occurs when a target completes a command while we are still
> processing it. If we are doing a WRITE and the iscsi_task
> is on the cmdqueue because we are handling a R2T. The target shouldn't
> send a Check Condition at this time, but some do. If that happens, then
> iscsi_queuecommand could be adding a new task to the cmdqueue, while the
> recv path is handling the CC for the task with the outsanding R2T.  The
> recv path iscsi_complete_task call sees that task it on the cmdqueue and
> deletes it from the list at the same time iscsi_queuecommand is adding a new
> task.
> 
> This should not happen per the iscsi spec. There is some wording about
> waiting to finish the sequence in progress, but targets goof this up.

--

-- 
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe@...
To post to this group, send email to open-iscsi@...
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.

anshu kumar | 3 Nov 05:33 2015
Picon

Change committed to fix security Issues in open-iscsi

Hi everyone,

I am trying to assess the security loopholes in open-iscsi.

Can some body help me to point out the recent changes done in open-iscsi to fix security issues?

Thanks & Regards,
Anshu

--
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to open-iscsi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.
Guilherme G. Piccoli | 5 Nov 17:33 2015
Picon

Possible issue in commit 659743b02c41 ("libiscsi: Reduce locking contention in fast path")

Hello Shlomo and Or,

I'm Guilherme Piccoli from LTC/IBM - firstly, sorry to bother you.

We are running some tests with iSCSI and we found an issue caused 
possibly by commit 659743b02c41 ("libiscsi: Reduce locking contention in 
fast path").

After some time (+/- 1 hour) of testing with a hardware target (using 
fio benchmark tool), we got a kernel oops; the following link is a 
pastebin of the error message (we got lots of these messages, since our 
system has multiple cores): http://codepad.org/KS2C9Jjt

With some debugging, we could find the exact point of the crash, caused 
by a null-pointer read: sc == NULL on sc->device->lun at libiscsi.c:369. 
But as you can see in error messages, some list issue seems to be 
possibly leading to this null-pointer situation.

After reverting the aforementioned commit, the issue is gone and we can 
run the benchmark many times without a single failure. The issue is hard 
to reproduce; we only were able to reproduce in high bandwidth 
environment (10Gb network) with the our hardware target (IBM FlashSystem 
840). Notice that from the initiator side we're using software iSCSI 
(iscsi_tcp/libiscsi_tcp).

We'd really appreciate if you could give us some directions to help us 
figuring what's going on - what path might have been taken leading to 
that null pointer read? It's hard to debug since I'm no expert in iSCSI, 
so any clues or suggestions you can provide would be really appreciated 
and helpful.

Any additional information you want, please let me know and I'd be glad 
to provide. Again, sorry to bother you.

Thanks in advance,

Guilherme

--

-- 
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe@...
To post to this group, send email to open-iscsi@...
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.

phatina | 30 Oct 10:47 2015
Picon
Gravatar

libiscsi

Hi all,

in several projects, we identified the need to have a client-side library for the
iSCSI communication.  This library has been living in Fedora for a while; but
we would like to change this situation and upstream several patches from Fedora.

I would be very pleased, if some of you, upstream developers, look at my github
repository [1] with several changes regarding open-iscsi.

Most important changes:
  • c62d535: libiscsi
    • this commit introduces a client-side library
  • eeb868e: Modify io.c module to use non-blocking sockets
    • get rid of alarm(2) and handling SIGALRM.
    • It may cause troubles when library is used by multi-threaded applications.
Tips and opinions are very welcomed.

[1]: https://github.com/phatina/open-iscsi

Thanks and regards,
Peter Hatina

--
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to open-iscsi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.
dinesh.kb | 9 Oct 13:51 2015
Picon

NIC-packet errors when iSER done on RAM

Hi,

We are using 
Soft-RoCE
Branch : Master-Next
Kernel  : 4.0.0 

Target : targetcli-2.0rc1

Soft-RoCE is successfully implemented and its functionality is tested using "rping".

Currently we are trying iSER, We can able to transfer file with decent bandwidth in USB based storage (like Hard disk). 
But while trying to do with ram disk we got errors in the NIC which we can confirm in "ifconfig".

Following is the target side setup

/iscsi/iqn.20...4e64d03/tpgt1> ls /
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- fileio ................................................................................................... [0 Storage Object]
  | o- iblock ................................................................................................... [0 Storage Object]
  | o- pscsi .................................................................................................... [0 Storage Object]
  | o- rd_dr .................................................................................................... [0 Storage Object]
  | o- rd_mcp ................................................................................................... [1 Storage Object]
  |   o- iser_ram .............................................................................................. [ramdisk activated]
  o- ib_srpt ........................................................................................................... [0 Targets]
  o- iscsi .............................................................................................................. [1 Target]
  | o- iqn.2003-01.org.linux-iscsi.vchn145.x8664:sn.6a5474e64d03 ........................................................... [1 TPG]
  |   o- tpgt1 ........................................................................................................... [enabled]
  |     o- acls ........................................................................................................... [0 ACLs]
  |     o- luns ............................................................................................................ [1 LUN]
  |     | o- lun0 ...................................................................................... [rd_mcp/iser_ram (ramdisk)]
  |     o- portals ...................................................................................................... [1 Portal]
  |       o- 192.168.1.11:3260 .................................................................................. [OK, iser enabled]
  o- loopback .......................................................................................................... [0 Targets]
  o- qla2xxx ........................................................................................................... [0 Targets]
  o- tcm_fc ............................................................................................................ [0 Targets]
/iscsi/iqn.20...4e64d03/tpgt1> 

and the ouptut of the "ifconfig" in the target side

root <at> VCHN145:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 34:17:eb:90:71:4e  
          inet addr:192.168.1.11  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::3617:ebff:fe90:714e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9200  Metric:1
          RX packets:3593182 errors:0 dropped:42879 overruns:0 frame:0
          TX packets:15269615 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10502328423 (10.5 GB)  TX bytes:1224120185 (1.2 GB)
root <at> VCHN145:~#
root <at> VCHN145:~# 

Details of our NIC :

02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10)
Subsystem: Dell Device 0632
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 46
Region 0: I/O ports at e000 [size=256]
Region 2: Memory at f7d04000 (64-bit, non-prefetchable) [size=4K]
Region 4: Memory at f7d00000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D3 NoSoftRst+ PME-Enable+ DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0200c  Data: 4142
Capabilities: [70] Express (v2) Endpoint, MSI 01
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 4096 bytes
DevSta: CorrErr+ UncorrErr+ FatalErr- UnsuppReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via message/WAKE#
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
 Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Vector table: BAR=4 offset=00000000
PBA: BAR=4 offset=00000800
Capabilities: [d0] Vital Product Data
Unknown small resource type 00, will not decode more.
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 14, GenCap+ CGenEn- ChkCap+ ChkEn-
Capabilities: [140 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Capabilities: [160 v1] Device Serial Number 01-00-00-00-68-4c-e0-00
Capabilities: [170 v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Capabilities: [178 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
  PortCommonModeRestoreTime=150us PortTPowerOnTime=150us
Kernel driver in use: r8169

We suspect the error is ocuring in the enqueuing process.

Kindly help us with your valuable advice regarding how to solve this....
Is there any patch(s) need to be applied for solving this problem.

--
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to open-iscsi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.
Ferenc Wagner | 6 Oct 12:58 2015
Picon
Gravatar

iscsistart takeover vs iface names

Hi,

When booting Linux from iSCSI, the initial connections are set up like

modprobe iscsi_tcp
modprobe crc32c
modprobe iscsi_ibft
iscsistart -N
iscsistart -b

that is, all the parameters are set in the offload card via the adapter
ROM utility and the initramfs scripts read them from the iBFT.

My questions:

1. Can the iBFT contain two target specifications (one per NIC) only?  I
   can set up more in the adapter ROM utility.

2. The iscsistart utility starts up sessions with iface_name like
   <transport>.<MAC> (be2iscsi.aa:bb:cc:dd:ee:ff in my case), but iscsid
   uses iface_names like <transport>.<MAC>.ipv4.1.  This leads to 6
   sessions instead of 4, because iscsid does not take over the two
   created by iscsistart, since the interface names are different.  It's
   possible to define ifaces with the simple names and override the
   interface names used by iscsid, but that's a hassle and the qualified
   interface names appear nevertheless.  Is there an elegant way to get
   both utilities use the same names?  Looks like ac38eee2 introduced
   this discrepancy.
-- 
Thanks,
Feri.

--

-- 
You received this message because you are subscribed to the Google Groups "open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscribe@...
To post to this group, send email to open-iscsi@...
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.


Gmane