More umass problems.

Matthew Dillon dillon at apollo.backplane.com
Thu Mar 11 12:13:52 PST 2004


:> Here's that backtrace you wanted:
:
:> http://memory.visualtech.com/dbsd-boot-log.txt
:
:Was that any help in tracking down the bug?
:
:Adam

    Sorry, I'm now officially overloaded with work :-)

    Lets see... yes, that sure does.  It's a case of a timeout being
    installed and the device going away before the timeout occurs.

    Could you please try the follow patch?  It fixes one bug, but the bug
    is not likely responsible for your panic, and it adds a debugging 
    printf that will help me diagnose the problem if the panic still occurs.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>

Index: cam_xpt.c
===================================================================
RCS file: /cvs/src/sys/bus/cam/cam_xpt.c,v
retrieving revision 1.9
diff -u -r1.9 cam_xpt.c
--- cam_xpt.c	30 Jan 2004 05:42:09 -0000	1.9
+++ cam_xpt.c	11 Mar 2004 20:11:24 -0000
@@ -4768,6 +4768,9 @@
 	int s;
 
 	s = splcam();
+	printf("xpt_release_device: %d %08x\n", device->refcount,
+		device->flags);
+
 	if ((--device->refcount == 0)
 	 && ((device->flags & CAM_DEV_UNCONFIGURED) != 0)) {
 		struct cam_devq *devq;
@@ -4776,9 +4779,11 @@
 		 || device->send_ccb_entry.pinfo.index != CAM_UNQUEUED_INDEX)
 			panic("Removing device while still queued for ccbs");
 
-		if ((device->flags & CAM_DEV_REL_TIMEOUT_PENDING) != 0)
-				untimeout(xpt_release_devq_timeout, device,
-					  device->c_handle);
+		if ((device->flags & CAM_DEV_REL_TIMEOUT_PENDING) != 0) {
+			device->flags &= ~CAM_DEV_REL_TIMEOUT_PENDING;
+			untimeout(xpt_release_devq_timeout, device,
+				  device->c_handle);
+		}
 
 		TAILQ_REMOVE(&target->ed_entries, device,links);
 		target->generation++;





More information about the Bugs mailing list