diff options
Diffstat (limited to 'sys/ufs')
| -rw-r--r-- | sys/ufs/ffs/ffs_snapshot.c | 3 | ||||
| -rw-r--r-- | sys/ufs/ffs/ffs_vnops.c | 3 | ||||
| -rw-r--r-- | sys/ufs/lfs/lfs_bio.c | 17 | ||||
| -rw-r--r-- | sys/ufs/lfs/lfs_segment.c | 15 | ||||
| -rw-r--r-- | sys/ufs/lfs/lfs_vfsops.c | 3 |
5 files changed, 37 insertions, 4 deletions
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index 9d4c46d475d..db8d4dfb471 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -2195,6 +2195,9 @@ rwfsblk(struct vnode *vp, int flags, void *data, daddr_t lbn) nbp->b_proc = NULL; nbp->b_dev = ip->i_devvp->v_rdev; SET(nbp->b_cflags, BC_BUSY); /* mark buffer busy */ +#ifdef LOCKDOC_VFS + lockdoc_log_lock(P_WRITE, &(nbp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif bdev_strategy(nbp); diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c index 9e14caa0bc1..340860c86ac 100644 --- a/sys/ufs/ffs/ffs_vnops.c +++ b/sys/ufs/ffs/ffs_vnops.c @@ -379,6 +379,9 @@ ffs_fsync(void *v) (bp->b_oflags & BO_DELWRI) == 0) continue; bp->b_cflags |= BC_BUSY | BC_VFLUSH; +#ifdef LOCKDOC_VFS + lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif mutex_exit(&bufcache_lock); bawrite(bp); mutex_enter(&bufcache_lock); diff --git a/sys/ufs/lfs/lfs_bio.c b/sys/ufs/lfs/lfs_bio.c index 5169d09a673..06bd348b340 100644 --- a/sys/ufs/lfs/lfs_bio.c +++ b/sys/ufs/lfs/lfs_bio.c @@ -434,9 +434,12 @@ lfs_bwrite_ext(struct buf *bp, int flags) bp->b_error = 0; mutex_enter(&bufcache_lock); LFS_UNLOCK_BUF(bp); - if (LFS_IS_MALLOC_BUF(bp)) + if (LFS_IS_MALLOC_BUF(bp)){ bp->b_cflags &= ~BC_BUSY; - else +#ifdef LOCKDOC_VFS + lockdoc_log_lock(V_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif + } else brelsel(bp, 0); mutex_exit(&bufcache_lock); return (fs->lfs_ronly ? EROFS : 0); @@ -481,9 +484,12 @@ lfs_bwrite_ext(struct buf *bp, int flags) mutex_enter(&bufcache_lock); } - if (bp->b_iodone != NULL) + if (bp->b_iodone != NULL) { bp->b_cflags &= ~BC_BUSY; - else +#ifdef LOCKDOC_VFS + lockdoc_log_lock(V_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif + } else brelsel(bp, 0); mutex_exit(&bufcache_lock); @@ -736,6 +742,9 @@ lfs_newbuf(struct lfs *fs, struct vnode *vp, daddr_t daddr, size_t size, int typ bp->b_resid = 0; bp->b_iodone = lfs_free_aiodone; bp->b_cflags |= BC_BUSY | BC_NOCACHE; +#ifdef LOCKDOC_VFS + lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif bp->b_private = fs; mutex_enter(&bufcache_lock); diff --git a/sys/ufs/lfs/lfs_segment.c b/sys/ufs/lfs/lfs_segment.c index 5c0b5befe43..39c4114ba06 100644 --- a/sys/ufs/lfs/lfs_segment.c +++ b/sys/ufs/lfs/lfs_segment.c @@ -2124,6 +2124,9 @@ lfs_writeseg(struct lfs *fs, struct segment *sp) bp = *bpp; if (bp->b_iodone != NULL) { /* UBC or malloced buffer */ bp->b_cflags |= BC_BUSY; +#ifdef LOCKDOC_VFS + lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif continue; } @@ -2136,6 +2139,9 @@ lfs_writeseg(struct lfs *fs, struct segment *sp) cv_wait(&bp->b_busy, &bufcache_lock); } bp->b_cflags |= BC_BUSY; +#ifdef LOCKDOC_VFS + lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif mutex_exit(&bufcache_lock); unbusybp = NULL; @@ -2201,6 +2207,9 @@ lfs_writeseg(struct lfs *fs, struct segment *sp) mutex_enter(&bufcache_lock); if (unbusybp != NULL) { unbusybp->b_cflags &= ~BC_BUSY; +#ifdef LOCKDOC_VFS + lockdoc_log_lock(V_WRITE, &(unbusybp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif if (unbusybp->b_cflags & BC_WANTED) cv_broadcast(&bp->b_busy); } @@ -2280,6 +2289,9 @@ lfs_writeseg(struct lfs *fs, struct segment *sp) cbp->b_flags |= B_ASYNC; cbp->b_cflags |= BC_BUSY; +#ifdef LOCKDOC_VFS + lockdoc_log_lock(P_WRITE, &(cbp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif cbp->b_bcount = 0; KASSERTMSG((bpp - sp->bpp <= @@ -2431,6 +2443,9 @@ lfs_writesuper(struct lfs *fs, daddr_t daddr) LFS_SBPAD - sizeof(struct dlfs)); bp->b_cflags |= BC_BUSY; +#ifdef LOCKDOC_VFS + lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif bp->b_flags = (bp->b_flags & ~B_READ) | B_ASYNC; bp->b_oflags &= ~(BO_DONE | BO_DELWRI); bp->b_error = 0; diff --git a/sys/ufs/lfs/lfs_vfsops.c b/sys/ufs/lfs/lfs_vfsops.c index 324f7af143f..e47d761b76e 100644 --- a/sys/ufs/lfs/lfs_vfsops.c +++ b/sys/ufs/lfs/lfs_vfsops.c @@ -2127,6 +2127,9 @@ lfs_gop_write(struct vnode *vp, struct vm_page **pgs, int npages, mbp->b_data = (void *)kva; mbp->b_resid = mbp->b_bcount = bytes; mbp->b_cflags |= BC_BUSY|BC_AGE; +#ifdef LOCKDOC_VFS + lockdoc_log_lock(P_WRITE, &(mbp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); +#endif mbp->b_iodone = uvm_aio_aiodone; bp = NULL; |
