DragonFly bugs List (threaded) for 2004-03
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
Re: More umass problems.
:> 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@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++;
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]