Skip to contentSkip to conversation

SCSI bug fixes for 2.6.26-rc2

PATCH In review James Bottomley 2 participants 3 messages May 13, 2008

Subsystems (4)
lore
Share & tools
lore

James Bottomley

author maintainer
#0 lore raw

PATCH 1/1 SCSI bug fixes for 2.6.26-rc2

Just a small set of clear bug fixes (OK all but two of them are 2.6.25 regressions as well).

The patch is available here:

master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git

The short change log is:

James Bottomley (4):
aha152x: Fix oops on module removal
aha152x: fix init suspiciously returned 1, it should follow 0/-E conventio
gdth: fix Error: Driver 'gdth' is already registered, aborting...
gdth: fix timer handling

Jeremy Higdon (1):
qla1280: Fix queue depth problem

Mike Christie (2):
libiscsi regression in 2.6.25: fix setting of recv timer libiscsi regression in 2.6.25: fix nop timer handling

The diffstat is:

 aha152x.c  |    8 ++++----
 gdth.c     |   51 ++++++++++++++++++++++++++++++++++-----------------
 libiscsi.c |   29 +++++++++++++++--------------
 qla1280.c  |    4 ++--
 4 files changed, 55 insertions(+), 37 deletions(-)

And the actual diff below.

James

---

drivers/scsi/aha152x.c +4 -4
index f5215fd..1dca177 100644
@@ -3830,7 +3830,7 @@ static int __init aha152x_init(void)
 			iounmap(p);
 		}
 		if (!ok && setup_count == 0)
-			return 0;
+			return -ENODEV;
 
 		printk(KERN_INFO "aha152x: BIOS test: passed, ");
 #else
@@ -3909,14 +3909,14 @@ static int __init aha152x_init(void)
 #endif
 	}
 
-	return 1;
+	return 0;
 }
 
 static void __exit aha152x_exit(void)
 {
-	struct aha152x_hostdata *hd;
+	struct aha152x_hostdata *hd, *tmp;
 
-	list_for_each_entry(hd, &aha152x_host_list, host_list) {
+	list_for_each_entry_safe(hd, tmp, &aha152x_host_list, host_list) {
 		struct Scsi_Host *shost = container_of((void *)hd, struct Scsi_Host, hostdata);
 
 		aha152x_release(shost);
drivers/scsi/gdth.c +34 -17

115 lines not on this page · raw message

drivers/scsi/libiscsi.c +15 -14
index 010c1b9..b43bf1d 100644
@@ -730,7 +730,9 @@ static int __iscsi_complete_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
 				if (iscsi_recv_pdu(conn->cls_conn, hdr, data,
 						   datalen))
 					rc = ISCSI_ERR_CONN_FAILED;
-			}
+			} else
+				mod_timer(&conn->transport_timer,
+					  jiffies + conn->recv_timeout);
 			iscsi_free_mgmt_task(conn, mtask);
 			break;
 		default:
@@ -1453,19 +1455,20 @@ static void iscsi_check_transport_timeouts(unsigned long data)
 {
 	struct iscsi_conn *conn = (struct iscsi_conn *)data;
 	struct iscsi_session *session = conn->session;
-	unsigned long timeout, next_timeout = 0, last_recv;
+	unsigned long recv_timeout, next_timeout = 0, last_recv;
 
 	spin_lock(&session->lock);
 	if (session->state != ISCSI_STATE_LOGGED_IN)
 		goto done;
 
-	timeout = conn->recv_timeout;
-	if (!timeout)
+	recv_timeout = conn->recv_timeout;
+	if (!recv_timeout)
 		goto done;
 
-	timeout *= HZ;
+	recv_timeout *= HZ;
 	last_recv = conn->last_recv;
-	if (time_before_eq(last_recv + timeout + (conn->ping_timeout * HZ),
+	if (conn->ping_mtask &&
+	    time_before_eq(conn->last_ping + (conn->ping_timeout * HZ),
 			   jiffies)) {
 		iscsi_conn_printk(KERN_ERR, conn, "ping timeout of %d secs "
 				  "expired, last rx %lu, last ping %lu, "
@@ -1476,15 +1479,13 @@ static void iscsi_check_transport_timeouts(unsigned long data)
 		return;
 	}
 
-	if (time_before_eq(last_recv + timeout, jiffies)) {
-		if (time_before_eq(conn->last_ping, last_recv)) {
-			/* send a ping to try to provoke some traffic */
-			debug_scsi("Sending nopout as ping on conn %p\n", conn);
-			iscsi_send_nopout(conn, NULL);
-		}
-		next_timeout = last_recv + timeout + (conn->ping_timeout * HZ);
+	if (time_before_eq(last_recv + recv_timeout, jiffies)) {
+		/* send a ping to try to provoke some traffic */
+		debug_scsi("Sending nopout as ping on conn %p\n", conn);
+		iscsi_send_nopout(conn, NULL);
+		next_timeout = conn->last_ping + (conn->ping_timeout * HZ);
 	} else
-		next_timeout = last_recv + timeout;
+		next_timeout = last_recv + recv_timeout;
 
 	debug_scsi("Setting next tmo %lu\n", next_timeout);
 	mod_timer(&conn->transport_timer, next_timeout);
drivers/scsi/qla1280.c +2 -2
index fa06093..51e2f29 100644
@@ -2007,7 +2007,7 @@ qla1280_set_defaults(struct scsi_qla_host *ha)
 		nv->bus[bus].config_2.req_ack_active_negation = 1;
 		nv->bus[bus].config_2.data_line_active_negation = 1;
 		nv->bus[bus].selection_timeout = 250;
-		nv->bus[bus].max_queue_depth = 256;
+		nv->bus[bus].max_queue_depth = 32;
 
 		if (IS_ISP1040(ha)) {
 			nv->bus[bus].bus_reset_delay = 3;
@@ -2051,7 +2051,7 @@ qla1280_config_target(struct scsi_qla_host *ha, int bus, int target)
 	status = qla1280_mailbox_command(ha, 0x0f, mb);
 
 	/* Save Tag queuing enable flag. */
-	flag = (BIT_0 << target) & mb[0];
+	flag = (BIT_0 << target);
 	if (nv->bus[bus].target[target].parameter.tag_queuing)
 		ha->bus_settings[bus].qtag_enables |= flag;
 
#1 lore raw
Quoted 10 lines · James Bottomley

master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
[ ... ]
The diffstat is:

 aha152x.c  |    8 ++++----
 gdth.c     |   51 ++++++++++++++++++++++++++++++++++-----------------
 libiscsi.c |   29 +++++++++++++++--------------
 qla1280.c  |    4 ++--
 4 files changed, 55 insertions(+), 37 deletions(-)

I'm getting something totally different:

	 29 files changed, 1954 insertions(+), 1672 deletions(-)

with a shortlog of

Chandra Seetharaman (8):
[SCSI] scsi_dh: add infrastructure for SCSI Device Handlers [SCSI] scsi_dh: add lsi rdac device handler
[SCSI] scsi_dh: add EMC Clariion device handler
[SCSI] scsi_dh: Use SCSI device handler in dm-multipath [SCSI] scsi_dh: Add a single threaded workqueue for initializing paths [SCSI] scsi_dh: Remove dm_pg_init_complete
[SCSI] scsi_dh: Remove hardware handlers from dm
[SCSI] scsi_dh: Remove hardware handler infrastructure from dm

Christof Schmitt (2):
[SCSI] zfcp: Track fabric and channel latencies provided by FCP adapter [SCSI] zfcp: sysfs attributes for fabric and channel latencies

Mark Salyzyn (1):
[SCSI] aacraid: Add Power Management cards to documentation

Mike Christie (1):
[SCSI] scsi_dh: add hp sw device handler

which does not match your description at all.

Not pulled. What's going on?

Linus

author maintainer
#2 lore raw
Quoted 36 lines · Linus Torvalds
Quoted 10 lines · James Bottomley

master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
[ ... ]
The diffstat is:

 aha152x.c  |    8 ++++----
 gdth.c     |   51 ++++++++++++++++++++++++++++++++++-----------------
 libiscsi.c |   29 +++++++++++++++--------------
 qla1280.c  |    4 ++--
 4 files changed, 55 insertions(+), 37 deletions(-)

I'm getting something totally different:

	 29 files changed, 1954 insertions(+), 1672 deletions(-)

with a shortlog of

Chandra Seetharaman (8):
[SCSI] scsi_dh: add infrastructure for SCSI Device Handlers [SCSI] scsi_dh: add lsi rdac device handler
[SCSI] scsi_dh: add EMC Clariion device handler
[SCSI] scsi_dh: Use SCSI device handler in dm-multipath [SCSI] scsi_dh: Add a single threaded workqueue for initializing paths [SCSI] scsi_dh: Remove dm_pg_init_complete
[SCSI] scsi_dh: Remove hardware handlers from dm
[SCSI] scsi_dh: Remove hardware handler infrastructure from dm

Christof Schmitt (2):
[SCSI] zfcp: Track fabric and channel latencies provided by FCP adapter [SCSI] zfcp: sysfs attributes for fabric and channel latencies

Mark Salyzyn (1):
[SCSI] aacraid: Add Power Management cards to documentation

Quoted 6 lines

Mike Christie (1):
[SCSI] scsi_dh: add hp sw device handler

which does not match your description at all.

Not pulled. What's going on?

Sorry, wrong URL. That's the misc tree, not the rc-fixes tree. The correct git url is:

master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git

That'll teach me to use cut and paste on the email URLs ...

James