On Thu, 12 Dec 2002, Lamont Granquist wrote:
> (kgdb) frame 2
> #2  0xc0140ffc in cam_periph_getccb (periph=0xc41fc080, priority=1)
>     at /usr/src/sys/cam/cam_periph.c:748
> 748     /usr/src/sys/cam/cam_periph.c: No such file or directory.
>         in /usr/src/sys/cam/cam_periph.c
> (kgdb) print *periph
> $11 = {pinfo = {priority = 1, generation = 6, index = 1},
>   periph_start = 0xc0157220 <passstart>,
>   periph_oninval = 0xc0156d70 <passoninvalidate>,
>   periph_dtor = 0xc0156e00 <passcleanup>, periph_name = 0xc049b503 "pass",
>   path = 0xc406dcc0, softc = 0xc41e6000, unit_number = 1,
>   type = CAM_PERIPH_BIO, flags = 0, immediate_priority = 1, refcount = 1,
>   ccb_list = {slh_first = 0x0}, periph_links = {sle_next = 0x0},
> unit_links = {
>     tqe_next = 0x0, tqe_prev = 0xc41cdb40}, deferred_callback = 0,
>   deferred_ac = 0}
> (kgdb)

Ok, this shows that the ccb_list is empty and this is the pass1
device.  The question is "why is the wakeup() never getting called?"
It would help if you did this immediately before running cda and reported
the dmesg:
   camcontrol debug -S -T pass1

Also, add this patch to augment debugging output:

--- /sys/cam/cam_xpt.c  23 Sep 2002 04:55:32 -0000      1.128
+++ /sys/cam/cam_xpt.c  13 Dec 2002 19:49:48 -0000
@@ -3789,6 +3789,7 @@
                         * device queue otherwise we may never get run
                         * again.
                         */
+                       printf("xpt_get_ccb failed, queue hung!\n");
                        break;
                }

-Nate


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to