A customer passed this fix to me...
In a system with double-digit adapter counts, after a few
rmmod/insmod attempts, the system oops. It always occurs when
the scsi host number reaches 100.
What is happening is that scsi_add_host() detects a transport that
needs to allocate a workqueue, thus calls create_singlethread_workqueue().
It hits a BUG_ON() in kernel/workqueue.c:__create_workqueue() which
ensures the length of the name for the workqueue is 10 characters or less.
As the name is "scsi_wq_100", we have exceeded the 10 character max.
I assume there's good reason for the name to be 10 or less. So what I've
done is shorten the name for the workqueue. Should work until the host number
reaches 10000.
-- James S
--- scsi-misc-2.6.20050808/drivers/scsi/hosts.c 2005-08-08 16:25:30.000000000
-0400
+++ scsi-misc-2.6.20050808/drivers/scsi/hosts.c.new 2005-08-09
11:55:06.000000000 -0400
@@ -191,7 +191,7 @@ int scsi_add_host(struct Scsi_Host *shos
goto out_del_classdev;
if (shost->transportt->create_work_queue) {
- snprintf(shost->work_q_name, KOBJ_NAME_LEN, "scsi_wq_%d",
+ snprintf(shost->work_q_name, KOBJ_NAME_LEN, "scsiwq%d",
shost->host_no);
shost->work_q = create_singlethread_workqueue(
shost->work_q_name);
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html