diff options
author | Alan Cox <alc@FreeBSD.org> | 2011-02-12 01:00:00 +0000 |
---|---|---|
committer | Alan Cox <alc@FreeBSD.org> | 2011-02-12 01:00:00 +0000 |
commit | d7b20e4b459028671db3ea6957e0da0a463eb946 (patch) | |
tree | 6c3538115efe193a6156abdff45c19221589295f /sys/kern | |
parent | 730d313078b617cdf4b57f0cc319b4bbb3c38a36 (diff) | |
download | src-d7b20e4b459028671db3ea6957e0da0a463eb946.tar.gz src-d7b20e4b459028671db3ea6957e0da0a463eb946.zip |
Retire VFS_BIO_DEBUG. Convert those checks that were still valid into
KASSERT()s and eliminate the rest.
Replace excessive printf()s and a panic() in bufdone_finish() with a
KASSERT() in vm_page_io_finish().
Reviewed by: kib
Notes
Notes:
svn path=/head/; revision=218589
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/vfs_bio.c | 71 |
1 files changed, 14 insertions, 57 deletions
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index 5d0fd786722b..06e86254046f 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -2830,11 +2830,6 @@ loop: if (vmio) { bp->b_flags |= B_VMIO; -#if defined(VFS_BIO_DEBUG) - if (vn_canvmio(vp) != TRUE) - printf("getblk: VMIO on vnode type %d\n", - vp->v_type); -#endif KASSERT(vp->v_object == bp->b_bufobj->bo_object, ("ARGH! different b_bufobj->bo_object %p %p %p\n", bp, vp->v_object, bp->b_bufobj->bo_object)); @@ -3343,36 +3338,26 @@ bufdone_finish(struct buf *bp) buf_complete(bp); if (bp->b_flags & B_VMIO) { - int i; vm_ooffset_t foff; vm_page_t m; vm_object_t obj; - int bogus, iosize; - struct vnode *vp = bp->b_vp; + struct vnode *vp; + int bogus, i, iosize; obj = bp->b_bufobj->bo_object; + KASSERT(obj->paging_in_progress >= bp->b_npages, + ("biodone_finish: paging in progress(%d) < b_npages(%d)", + obj->paging_in_progress, bp->b_npages)); -#if defined(VFS_BIO_DEBUG) - mp_fixme("usecount and vflag accessed without locks."); - if (vp->v_usecount == 0) { - panic("biodone: zero vnode ref count"); - } - + vp = bp->b_vp; + KASSERT(vp->v_holdcnt > 0, + ("biodone_finish: vnode %p has zero hold count", vp)); KASSERT(vp->v_object != NULL, - ("biodone: vnode %p has no vm_object", vp)); -#endif + ("biodone_finish: vnode %p has no vm_object", vp)); foff = bp->b_offset; KASSERT(bp->b_offset != NOOFFSET, - ("biodone: no buffer offset")); - - VM_OBJECT_LOCK(obj); -#if defined(VFS_BIO_DEBUG) - if (obj->paging_in_progress < bp->b_npages) { - printf("biodone: paging in progress(%d) < bp->b_npages(%d)\n", - obj->paging_in_progress, bp->b_npages); - } -#endif + ("biodone_finish: bp %p has no buffer offset", bp)); /* * Set B_CACHE if the op was a normal read and no error @@ -3386,6 +3371,7 @@ bufdone_finish(struct buf *bp) bp->b_flags |= B_CACHE; } bogus = 0; + VM_OBJECT_LOCK(obj); for (i = 0; i < bp->b_npages; i++) { int bogusflag = 0; int resid; @@ -3405,13 +3391,9 @@ bufdone_finish(struct buf *bp) panic("biodone: page disappeared!"); bp->b_pages[i] = m; } -#if defined(VFS_BIO_DEBUG) - if (OFF_TO_IDX(foff) != m->pindex) { - printf( -"biodone: foff(%jd)/m->pindex(%ju) mismatch\n", - (intmax_t)foff, (uintmax_t)m->pindex); - } -#endif + KASSERT(OFF_TO_IDX(foff) == m->pindex, + ("biodone_finish: foff(%jd)/pindex(%ju) mismatch", + (intmax_t)foff, (uintmax_t)m->pindex)); /* * In the write case, the valid and clean bits are @@ -3425,31 +3407,6 @@ bufdone_finish(struct buf *bp) vfs_page_set_valid(bp, foff, m); } - /* - * when debugging new filesystems or buffer I/O methods, this - * is the most common error that pops up. if you see this, you - * have not set the page busy flag correctly!!! - */ - if (m->busy == 0) { - printf("biodone: page busy < 0, " - "pindex: %d, foff: 0x(%x,%x), " - "resid: %d, index: %d\n", - (int) m->pindex, (int)(foff >> 32), - (int) foff & 0xffffffff, resid, i); - if (!vn_isdisk(vp, NULL)) - printf(" iosize: %jd, lblkno: %jd, flags: 0x%x, npages: %d\n", - (intmax_t)bp->b_vp->v_mount->mnt_stat.f_iosize, - (intmax_t) bp->b_lblkno, - bp->b_flags, bp->b_npages); - else - printf(" VDEV, lblkno: %jd, flags: 0x%x, npages: %d\n", - (intmax_t) bp->b_lblkno, - bp->b_flags, bp->b_npages); - printf(" valid: 0x%lx, dirty: 0x%lx, wired: %d\n", - (u_long)m->valid, (u_long)m->dirty, - m->wire_count); - panic("biodone: page busy < 0\n"); - } vm_page_io_finish(m); vm_object_pip_subtract(obj, 1); foff = (foff + PAGE_SIZE) & ~(off_t)PAGE_MASK; |