Index: vfs_subr.c =================================================================== RCS file: /usr/repo/src/sys/kern/vfs_subr.c,v retrieving revision 1.633 diff -u -p -r1.633 vfs_subr.c --- vfs_subr.c 18 Jun 2005 18:17:03 -0000 1.633 +++ vfs_subr.c 30 Jun 2005 19:16:55 -0000 @@ -1706,11 +1706,13 @@ reassignbuf(struct buf *bp) { struct vnode *vp; struct bufobj *bo; + struct buf *obp; int delay; #ifdef INVARIANTS struct bufv *bv; #endif + obp = bp; vp = bp->b_vp; bo = bp->b_bufobj; ++reassignbufcalls; @@ -1766,19 +1768,32 @@ reassignbuf(struct buf *bp) #ifdef INVARIANTS bv = &bo->bo_clean; bp = TAILQ_FIRST(&bv->bv_hd); - KASSERT(bp == NULL || bp->b_bufobj == bo, - ("bp %p wrong b_bufobj %p should be %p", bp, bp->b_bufobj, bo)); + if (bp != NULL && bp->b_bufobj != bo) { + CTR3(KTR_BUF, "panic1: reassignbuf(%p) b_bufobj %p bo %p", + bp, bp->b_bufobj, bo); + panic("[1] bp %p wrong b_bufobj %p should be %p", bp, bp->b_bufobj, bo); + } bp = TAILQ_LAST(&bv->bv_hd, buflists); - KASSERT(bp == NULL || bp->b_bufobj == bo, - ("bp %p wrong b_bufobj %p should be %p", bp, bp->b_bufobj, bo)); + if (bp != NULL && bp->b_bufobj != bo) { + CTR3(KTR_BUF, "panic2: reassignbuf(%p) b_bufobj %p bo %p", + bp, bp->b_bufobj, bo); + panic("[2] bp %p wrong b_bufobj %p should be %p", bp, bp->b_bufobj, bo); + } bv = &bo->bo_dirty; bp = TAILQ_FIRST(&bv->bv_hd); - KASSERT(bp == NULL || bp->b_bufobj == bo, - ("bp %p wrong b_bufobj %p should be %p", bp, bp->b_bufobj, bo)); + if (bp != NULL && bp->b_bufobj != bo) { + CTR3(KTR_BUF, "panic3: reassignbuf(%p) b_bufobj %p bo %p", + bp, bp->b_bufobj, bo); + panic("[3] bp %p wrong b_bufobj %p should be %p", bp, bp->b_bufobj, bo); + } bp = TAILQ_LAST(&bv->bv_hd, buflists); - KASSERT(bp == NULL || bp->b_bufobj == bo, - ("bp %p wrong b_bufobj %p should be %p", bp, bp->b_bufobj, bo)); + if (bp != NULL && bp->b_bufobj != bo) { + CTR3(KTR_BUF, "panic4: reassignbuf(%p) b_bufobj %p bo %p", + bp, bp->b_bufobj, bo); + panic("[4] bp %p wrong b_bufobj %p should be %p", bp, bp->b_bufobj, bo); + } #endif + CTR1(KTR_BUF, "reassignbuf_end(%p)", obp); } /*