Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: panic: biodone2 already
On Mon, Sep 01, 2008 at 07:22:15PM +0200, Lars Nordlund wrote:
> Hi
>
> Got this panic while writing a DVD+RW last night. I am running NetBSD
> 4.99.72/amd64. Kernel message hand-copied from screen..
>
> panic: biodone2 already
Lars,
please check if you see this or a related panic with the diff attached.
--
Juergen Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig
(Germany)
Index: sys/sys/buf.h
===================================================================
RCS file: /cvsroot/src/sys/sys/buf.h,v
retrieving revision 1.110
diff -p -u -4 -r1.110 buf.h
--- sys/sys/buf.h 31 Jul 2008 05:38:05 -0000 1.110
+++ sys/sys/buf.h 11 Sep 2008 13:14:55 -0000
@@ -130,8 +130,9 @@ struct buf {
#endif /* defined(_KERNEL) */
} b_u; /* b: device driver queue */
#define b_actq b_u.u_actq
#define b_work b_u.u_work
+ TAILQ_ENTRY(buf) b_doneq; /* b: per cpu biodone queue */
void (*b_iodone)(struct buf *);/* b: call when done
*/
int b_error; /* b: errno value. */
int b_resid; /* b: remaining I/O. */
u_int b_flags; /* b: B_* flags */
Index: sys/kern/vfs_bio.c
===================================================================
RCS file: /cvsroot/src/sys/kern/vfs_bio.c,v
retrieving revision 1.210
diff -p -u -4 -r1.210 vfs_bio.c
--- sys/kern/vfs_bio.c 11 Sep 2008 09:14:46 -0000 1.210
+++ sys/kern/vfs_bio.c 11 Sep 2008 13:14:54 -0000
@@ -1543,9 +1543,9 @@ biodone(buf_t *bp)
if (cpu_intr_p()) {
/* From interrupt mode: defer to a soft interrupt. */
s = splvm();
- TAILQ_INSERT_TAIL(&curcpu()->ci_data.cpu_biodone, bp, b_actq);
+ TAILQ_INSERT_TAIL(&curcpu()->ci_data.cpu_biodone, bp, b_doneq);
softint_schedule(biodone_sih);
splx(s);
} else {
/* Process now - the buffer may be freed soon. */
@@ -1606,9 +1606,9 @@ biointr(void *cookie)
KASSERT(curcpu() == ci);
s = splvm();
bp = TAILQ_FIRST(&ci->ci_data.cpu_biodone);
- TAILQ_REMOVE(&ci->ci_data.cpu_biodone, bp, b_actq);
+ TAILQ_REMOVE(&ci->ci_data.cpu_biodone, bp, b_doneq);
splx(s);
biodone2(bp);
}
Home |
Main Index |
Thread Index |
Old Index