diff options
| author | Merlin Scholz <merlin@scholz.ruhr> | 2023-08-20 18:36:09 +0200 |
|---|---|---|
| committer | Merlin Scholz <merlin@scholz.ruhr> | 2023-08-20 18:36:09 +0200 |
| commit | 6545533869a1eba7272e380cbf5ca103e9181251 (patch) | |
| tree | e07d35c6c738c92ad8769b40bc4f47a28aebd6ba | |
| parent | e7b3826cda40b7e543318c19b9093dcceb8b4237 (diff) | |
Reorganize b_cache logging, un-deprecate variable name logging
| -rw-r--r-- | sys/dev/ata/ata_raid.c | 2 | ||||
| -rw-r--r-- | sys/dev/dkwedge/dk.c | 2 | ||||
| -rw-r--r-- | sys/dev/fss.c | 4 | ||||
| -rw-r--r-- | sys/dev/isa/fd.c | 2 | ||||
| -rw-r--r-- | sys/dev/ld.c | 2 | ||||
| -rw-r--r-- | sys/dev/raidframe/rf_diskqueue.c | 2 | ||||
| -rw-r--r-- | sys/dev/vme/xd.c | 2 | ||||
| -rw-r--r-- | sys/dev/vme/xy.c | 2 | ||||
| -rw-r--r-- | sys/fs/udf/udf_readwrite.c | 8 | ||||
| -rw-r--r-- | sys/fs/udf/udf_strat_rmw.c | 4 | ||||
| -rw-r--r-- | sys/kern/kern_physio.c | 6 | ||||
| -rw-r--r-- | sys/kern/vfs_bio.c | 14 | ||||
| -rw-r--r-- | sys/kern/vfs_subr.c | 4 | ||||
| -rw-r--r-- | sys/kern/vfs_wapbl.c | 4 | ||||
| -rw-r--r-- | sys/lockdoc/log.c | 73 | ||||
| -rw-r--r-- | sys/miscfs/genfs/genfs_io.c | 6 | ||||
| -rw-r--r-- | sys/sys/lockdoc.h | 54 | ||||
| -rw-r--r-- | sys/ufs/ffs/ffs_snapshot.c | 2 | ||||
| -rw-r--r-- | sys/ufs/ffs/ffs_vnops.c | 2 | ||||
| -rw-r--r-- | sys/ufs/lfs/lfs_bio.c | 6 | ||||
| -rw-r--r-- | sys/ufs/lfs/lfs_segment.c | 10 | ||||
| -rw-r--r-- | sys/ufs/lfs/lfs_vfsops.c | 2 | ||||
| -rw-r--r-- | sys/uvm/uvm_swap.c | 2 |
23 files changed, 116 insertions, 99 deletions
diff --git a/sys/dev/ata/ata_raid.c b/sys/dev/ata/ata_raid.c index a1795a4fc53..645bb156a04 100644 --- a/sys/dev/ata/ata_raid.c +++ b/sys/dev/ata/ata_raid.c @@ -314,7 +314,7 @@ ata_raid_config_block_rw(struct vnode *vp, daddr_t blkno, void *tbuf, bp->b_data = tbuf; SET(bp->b_cflags, BC_BUSY); /* mark buffer busy */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif VOP_STRATEGY(vp, bp); error = biowait(bp); diff --git a/sys/dev/dkwedge/dk.c b/sys/dev/dkwedge/dk.c index 8f3affaf4cb..a5ac3e44a40 100644 --- a/sys/dev/dkwedge/dk.c +++ b/sys/dev/dkwedge/dk.c @@ -1211,7 +1211,7 @@ dkwedge_read(struct disk *pdk, struct vnode *vp, daddr_t blkno, bp->b_flags = B_READ; bp->b_cflags = BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_dev = bdev; bp->b_data = tbuf; diff --git a/sys/dev/fss.c b/sys/dev/fss.c index 8d1e7c78ff7..9d86cd0d959 100644 --- a/sys/dev/fss.c +++ b/sys/dev/fss.c @@ -1048,7 +1048,7 @@ restart: mbp->b_flags = B_READ; mbp->b_cflags = BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(mbp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(mbp->b_cflags)); #endif mbp->b_dev = sc->sc_bdev; while (todo > 0) { @@ -1297,7 +1297,7 @@ fss_bs_thread(void *arg) nbp->b_dev = sc->sc_bdev; 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); + b_cflags_busy(&(nbp->b_cflags)); #endif bdev_strategy(nbp); diff --git a/sys/dev/isa/fd.c b/sys/dev/isa/fd.c index 29cdc6ac2ee..3959edd4fd2 100644 --- a/sys/dev/isa/fd.c +++ b/sys/dev/isa/fd.c @@ -1613,7 +1613,7 @@ fdformat(dev_t dev, struct ne7_fd_formb *finfo, struct lwp *l) bp->b_cflags = BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_flags = B_PHYS | B_FORMAT; bp->b_proc = l->l_proc; diff --git a/sys/dev/ld.c b/sys/dev/ld.c index 54296b136c0..b8e122ec1bd 100644 --- a/sys/dev/ld.c +++ b/sys/dev/ld.c @@ -691,7 +691,7 @@ ld_discard(device_t dev, off_t pos, off_t len) bp->b_flags = B_WRITE; bp->b_cflags = BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif error = (*sc->sc_discard)(sc, bp); diff --git a/sys/dev/raidframe/rf_diskqueue.c b/sys/dev/raidframe/rf_diskqueue.c index 1eec20486f6..369d5d3b605 100644 --- a/sys/dev/raidframe/rf_diskqueue.c +++ b/sys/dev/raidframe/rf_diskqueue.c @@ -393,7 +393,7 @@ rf_CreateDiskQueueData(RF_IoType_t typ, RF_SectorNum_t ssect, SET(p->bp->b_cflags, BC_BUSY); /* mark buffer busy */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(p->bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(p->bp->b_cflags)); #endif if (mbp) { SET(p->bp->b_flags, mbp->b_flags & rf_b_pass); diff --git a/sys/dev/vme/xd.c b/sys/dev/vme/xd.c index 14050bc53fd..53ab4ad88c5 100644 --- a/sys/dev/vme/xd.c +++ b/sys/dev/vme/xd.c @@ -346,7 +346,7 @@ xddummystrat(struct buf *bp) bp->b_oflags |= BO_DONE; bp->b_cflags &= ~BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(V_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_unbusy(&(bp->b_cflags)); #endif } diff --git a/sys/dev/vme/xy.c b/sys/dev/vme/xy.c index b5a0b2e4bb7..1d1f1205395 100644 --- a/sys/dev/vme/xy.c +++ b/sys/dev/vme/xy.c @@ -262,7 +262,7 @@ xydummystrat(struct buf *bp) bp->b_oflags |= BO_DONE; bp->b_cflags &= ~BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(V_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_unbusy(&(bp->b_cflags)); #endif } diff --git a/sys/fs/udf/udf_readwrite.c b/sys/fs/udf/udf_readwrite.c index 35eb2fe9ce4..6313f2781ea 100644 --- a/sys/fs/udf/udf_readwrite.c +++ b/sys/fs/udf/udf_readwrite.c @@ -299,7 +299,7 @@ udf_read_phys_sectors(struct udf_mount *ump, int what, void *blob, buf->b_flags = B_READ; buf->b_cflags = BC_BUSY; /* needed? */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(buf->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(buf->b_cflags)); #endif buf->b_iodone = NULL; buf->b_data = blob; @@ -499,7 +499,7 @@ udf_write_phys_sectors(struct udf_mount *ump, int what, void *blob, buf->b_flags = B_WRITE; buf->b_cflags = BC_BUSY; /* needed? */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(buf->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(buf->b_cflags)); #endif buf->b_iodone = NULL; buf->b_data = blob; @@ -545,7 +545,7 @@ udf_write_phys_dscr_sync(struct udf_mount *ump, struct udf_node *udf_node, int w buf->b_flags = B_WRITE; buf->b_cflags = BC_BUSY; /* needed? */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(buf->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(buf->b_cflags)); #endif buf->b_iodone = NULL; buf->b_data = (void *) dscr; @@ -595,7 +595,7 @@ udf_write_phys_dscr_async(struct udf_mount *ump, struct udf_node *udf_node, buf->b_flags = B_WRITE; // | B_ASYNC; buf->b_cflags = BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(buf->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(buf->b_cflags)); #endif buf->b_iodone = dscrwr_callback; buf->b_data = dscr; diff --git a/sys/fs/udf/udf_strat_rmw.c b/sys/fs/udf/udf_strat_rmw.c index ca88dfc9090..6ac00493a38 100644 --- a/sys/fs/udf/udf_strat_rmw.c +++ b/sys/fs/udf/udf_strat_rmw.c @@ -1124,7 +1124,7 @@ udf_issue_eccline(struct udf_eccline *eccline, int queued_on) buf->b_flags = B_READ | B_ASYNC; SET(buf->b_cflags, BC_BUSY); /* mark buffer busy */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(buf->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(buf->b_cflags)); #endif buf->b_oflags = 0; buf->b_iodone = udf_shedule_read_callback; @@ -1175,7 +1175,7 @@ udf_issue_eccline(struct udf_eccline *eccline, int queued_on) buf->b_flags = B_WRITE | B_ASYNC; SET(buf->b_cflags, BC_BUSY); /* mark buffer busy */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(buf->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(buf->b_cflags)); #endif buf->b_oflags = 0; buf->b_iodone = udf_shedule_write_callback; diff --git a/sys/kern/kern_physio.c b/sys/kern/kern_physio.c index 690e80d9fad..cc4e03ed97f 100644 --- a/sys/kern/kern_physio.c +++ b/sys/kern/kern_physio.c @@ -285,7 +285,7 @@ physio(void (*strategy)(struct buf *), struct buf *obp, dev_t dev, int flags, bp = getiobuf(NULL, true); bp->b_cflags |= BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif } bp->b_dev = dev; @@ -301,7 +301,7 @@ physio(void (*strategy)(struct buf *), struct buf *obp, dev_t dev, int flags, bp->b_oflags = 0; bp->b_cflags |= BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_flags = flags | B_PHYS | B_RAW; bp->b_iodone = physio_biodone; @@ -437,7 +437,7 @@ done_locked: mutex_enter(&bufcache_lock); obp->b_cflags &= ~(BC_BUSY | BC_WANTED); #ifdef LOCKDOC_VFS - lockdoc_log_lock(V_WRITE, &(obp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_unbusy(&(obp->b_cflags)); #endif obp->b_flags &= ~(B_PHYS | B_RAW); obp->b_iodone = NULL; diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index eaa6592de1c..1e64746bbb4 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -1147,7 +1147,7 @@ already_queued: /* Unlock the buffer. */ CLR(bp->b_cflags, BC_AGE|BC_BUSY|BC_NOCACHE); #ifdef LOCKDOC_VFS - lockdoc_log_lock(V_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_unbusy(&(bp->b_cflags)); #endif CLR(bp->b_flags, B_ASYNC); @@ -1413,7 +1413,7 @@ getnewbuf(int slpflag, int slptimeo, int from_bufq) buf_init(bp); SET(bp->b_cflags, BC_BUSY); /* mark buffer busy */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif mutex_enter(&bufcache_lock); #if defined(DIAGNOSTIC) @@ -1447,7 +1447,7 @@ getnewbuf(int slpflag, int slptimeo, int from_bufq) /* Buffer is no longer on free lists. */ SET(bp->b_cflags, BC_BUSY); #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif /* Wake anyone trying to lock the old identity. */ @@ -1514,7 +1514,7 @@ getnewbuf(int slpflag, int slptimeo, int from_bufq) /* clear out various other fields */ bp->b_cflags = BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_oflags = 0; bp->b_flags = 0; @@ -2129,7 +2129,7 @@ nestiobuf_setup(buf_t *mbp, buf_t *bp, int offset, size_t size) bp->b_objlock = mbp->b_objlock; bp->b_cflags = BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_flags = B_ASYNC | b_pass; bp->b_iodone = nestiobuf_iodone; @@ -2204,7 +2204,7 @@ buf_destroy(buf_t *bp) #ifdef LOCKDOC_VFS if ((bp->b_cflags & BC_BUSY) != 0) - lockdoc_log_lock(V_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_unbusy(&(bp->b_cflags)); lockdoc_log_memory(0, "buf", bp, sizeof(buf_t)); #endif } @@ -2244,7 +2244,7 @@ bbusy(buf_t *bp, bool intr, int timo, kmutex_t *interlock) } else { bp->b_cflags |= BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif error = 0; } diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 936a5c9670e..30f4c5e5120 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -254,7 +254,7 @@ restart: #endif bp->b_cflags |= BC_BUSY | BC_VFLUSH; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif mutex_exit(&bufcache_lock); VOP_BWRITE(bp->b_vp, bp); @@ -359,7 +359,7 @@ loop: panic("vflushbuf: not dirty, bp %p", bp); bp->b_cflags |= BC_BUSY | BC_VFLUSH; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif mutex_exit(&bufcache_lock); /* diff --git a/sys/kern/vfs_wapbl.c b/sys/kern/vfs_wapbl.c index 87fd9bec89f..35d94eff0e6 100644 --- a/sys/kern/vfs_wapbl.c +++ b/sys/kern/vfs_wapbl.c @@ -920,7 +920,7 @@ wapbl_doio(void *data, size_t len, struct vnode *devvp, daddr_t pbn, int flags) bp->b_flags = flags; bp->b_cflags |= BC_BUSY; /* mandatory, asserted by biowait() */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_dev = devvp->v_rdev; bp->b_data = data; @@ -998,7 +998,7 @@ wapbl_buffered_write_async(struct wapbl *wl, struct buf *bp) bp->b_flags |= B_WRITE; bp->b_cflags |= BC_BUSY; /* mandatory, asserted by biowait() */ #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_oflags = 0; bp->b_bcount = bp->b_resid; diff --git a/sys/lockdoc/log.c b/sys/lockdoc/log.c index b06c3232e1f..8de09c7384e 100644 --- a/sys/lockdoc/log.c +++ b/sys/lockdoc/log.c @@ -10,30 +10,30 @@ struct log_action la_buffer; #define LOCK_TYPE "kmutex_t" // Mutexes are always considered write locks -inline void __mutex_enter(kmutex_t * lock, const char* file, int line, const char* func) { +inline void __mutex_enter(kmutex_t * lock, const char* file, int line, const char* func, const char* name) { _mutex_enter(lock); - lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); } -inline void __mutex_exit(kmutex_t * lock, const char* file, int line, const char* func) { - lockdoc_log_lock(V_WRITE, lock, file, line, func, LOCK_TYPE, 0); +inline void __mutex_exit(kmutex_t * lock, const char* file, int line, const char* func, const char* name) { + lockdoc_log_lock(V_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); _mutex_exit(lock); } -inline void __mutex_spin_enter(kmutex_t * lock, const char* file, int line, const char* func) { +inline void __mutex_spin_enter(kmutex_t * lock, const char* file, int line, const char* func, const char* name) { _mutex_spin_enter(lock); - lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); } -inline void __mutex_spin_exit(kmutex_t * lock, const char* file, int line, const char* func) { - lockdoc_log_lock(V_WRITE, lock, file, line, func, LOCK_TYPE, 0); +inline void __mutex_spin_exit(kmutex_t * lock, const char* file, int line, const char* func, const char* name) { + lockdoc_log_lock(V_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); _mutex_spin_exit(lock); } -inline int __mutex_tryenter(kmutex_t * lock, const char* file, int line, const char* func) { +inline int __mutex_tryenter(kmutex_t * lock, const char* file, int line, const char* func, const char* name) { int enter = _mutex_tryenter(lock); if(enter != 0) { - lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); } return enter; } @@ -41,47 +41,58 @@ inline int __mutex_tryenter(kmutex_t * lock, const char* file, int line, const c #undef LOCK_TYPE #define LOCK_TYPE "krwlock_t" -inline int __rw_tryupgrade(krwlock_t * lock, const char* file, int line, const char* func) { +inline int __rw_tryupgrade(krwlock_t * lock, const char* file, int line, const char* func, const char* name) { int upgrade = _rw_tryupgrade(lock); if(upgrade != 0) { - lockdoc_log_lock(V_READ, lock, file, line, func, LOCK_TYPE, 0); - lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(V_READ, lock, file, line, func, LOCK_TYPE, 0, name); + lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); } return upgrade; } -inline void __rw_downgrade(krwlock_t * lock, const char* file, int line, const char* func) { +inline void __rw_downgrade(krwlock_t * lock, const char* file, int line, const char* func, const char* name) { _rw_downgrade(lock); - lockdoc_log_lock(V_WRITE, lock, file, line, func, LOCK_TYPE, 0); - lockdoc_log_lock(P_READ, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(V_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); + lockdoc_log_lock(P_READ, lock, file, line, func, LOCK_TYPE, 0, name); } -inline void __rw_enter(krwlock_t * lock, const krw_t type, const char* file, int line, const char* func) { +inline void __rw_enter(krwlock_t * lock, const krw_t type, const char* file, int line, const char* func, const char* name) { _rw_enter(lock, type); if(type == RW_READER) - lockdoc_log_lock(P_READ, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(P_READ, lock, file, line, func, LOCK_TYPE, 0, name); else - lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); } -inline int __rw_tryenter(krwlock_t * lock, const krw_t type, const char* file, int line, const char* func) { +inline int __rw_tryenter(krwlock_t * lock, const krw_t type, const char* file, int line, const char* func, const char* name) { int enter = _rw_tryenter(lock, type); if(enter != 0) { if(type == RW_READER) - lockdoc_log_lock(P_READ, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(P_READ, lock, file, line, func, LOCK_TYPE, 0, name); else - lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(P_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); } return enter; } -inline void __rw_exit(krwlock_t * lock, const char* file, int line, const char* func) { +inline void __rw_exit(krwlock_t * lock, const char* file, int line, const char* func, const char* name) { if(rw_lock_op(lock) == RW_WRITER) - lockdoc_log_lock(V_WRITE, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(V_WRITE, lock, file, line, func, LOCK_TYPE, 0, name); else - lockdoc_log_lock(V_READ, lock, file, line, func, LOCK_TYPE, 0); + lockdoc_log_lock(V_READ, lock, file, line, func, LOCK_TYPE, 0, name); _rw_exit(lock); } + +#undef LOCK_TYPE +#define LOCK_TYPE "b_cflags" + +inline void __b_cflags_busy(int * b_cflags, const char* file, int line, const char* func, const char* name){ + lockdoc_log_lock(P_WRITE, b_cflags, __FILE__, __LINE__, __func__, LOCK_TYPE, 0, name); +} +inline void __b_cflags_unbusy(int * b_cflags, const char* file, int line, const char* func, const char* name){ + lockdoc_log_lock(V_WRITE, b_cflags, __FILE__, __LINE__, __func__, LOCK_TYPE, 0, name); +} + #undef LOCK_TYPE inline void __x86_disable_intr(const char* file, int line, const char* func) { @@ -89,7 +100,7 @@ inline void __x86_disable_intr(const char* file, int line, const char* func) { eflags = x86_read_flags(); if (eflags & (1 << 9)){ // Check if interrupts were enabled in the first place - lockdoc_log_lock(P_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0); + lockdoc_log_lock(P_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0, "dummy"); } _x86_disable_intr(); @@ -100,21 +111,21 @@ inline void __x86_enable_intr(const char* file, int line, const char* func) { eflags = x86_read_flags(); if (!(eflags & (1 << 9))){ // Check if interrupts were disabled in the first place - lockdoc_log_lock(V_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0); + lockdoc_log_lock(V_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0, "dummy"); } _x86_enable_intr(); } void __trace_irqs_on(const char *file, int line) { - lockdoc_log_lock(V_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0); + lockdoc_log_lock(V_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0, "dummy"); } void __trace_irqs_on_check(int tf_eflags, const char *file, int line) { u_long cur_eflags; cur_eflags = x86_read_flags(); if ((tf_eflags & (1 << 9)) && !(cur_eflags & (1 << 9))) { - lockdoc_log_lock(V_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0); + lockdoc_log_lock(V_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0, "dummy"); } } @@ -124,14 +135,14 @@ void __trace_irqs_on_asm(void) { } void __trace_irqs_off(const char *file, int line) { - lockdoc_log_lock(P_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0); + lockdoc_log_lock(P_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0, "dummy"); } void __trace_irqs_off_check(int tf_eflags, const char *file, int line) { u_long cur_eflags; cur_eflags = x86_read_flags(); if ((tf_eflags & (1 << 9)) && !(cur_eflags & (1 << 9))) { - lockdoc_log_lock(P_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0); + lockdoc_log_lock(P_WRITE, (void *)PSEUDOLOCK_ADDR_HARDIRQ, file, line, "dummy", "dummy", 0, "dummy"); } } diff --git a/sys/miscfs/genfs/genfs_io.c b/sys/miscfs/genfs/genfs_io.c index 614afe76d62..e4544900f07 100644 --- a/sys/miscfs/genfs/genfs_io.c +++ b/sys/miscfs/genfs/genfs_io.c @@ -612,7 +612,7 @@ genfs_getpages_read(struct vnode *vp, struct vm_page **pgs, int npages, mbp->b_resid = mbp->b_bcount = bytes; mbp->b_cflags |= BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(mbp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(mbp->b_cflags)); #endif if (async) { mbp->b_flags = B_READ | B_ASYNC; @@ -1484,7 +1484,7 @@ genfs_do_io(struct vnode *vp, off_t off, vaddr_t kva, size_t len, int flags, 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); + b_cflags_busy(&(mbp->b_cflags)); #endif if (async) { mbp->b_flags = brw | B_ASYNC; @@ -1719,7 +1719,7 @@ genfs_compat_gop_write(struct vnode *vp, struct vm_page **pgs, int npages, bp = getiobuf(vp, true); bp->b_cflags |= BC_BUSY | BC_AGE; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_lblkno = offset >> vp->v_mount->mnt_fs_bshift; bp->b_data = (char *)kva; diff --git a/sys/sys/lockdoc.h b/sys/sys/lockdoc.h index 347c03e3e19..11fc6c3a48d 100644 --- a/sys/sys/lockdoc.h +++ b/sys/sys/lockdoc.h @@ -10,7 +10,7 @@ #include <sys/mutex.h> #include <sys/rwlock.h> -#define LOCKDOC_VERSION "ms-vfs-0.3" +#define LOCKDOC_VERSION "ms-vfs-0.4" #define LOCKDOC_DELIMITER "#" #define LOCKDOC_DELIMITER_CHAR '#' #define LOCKDOC_PING() lockdoc_outb('p',0x00e9); @@ -31,17 +31,20 @@ void lockdoc_send_pid_offset(void); void lockdoc_send_kernel_version(void); int32_t lockdoc_get_ctx(void); -void __mutex_enter(kmutex_t *, const char*, int, const char*); -void __mutex_exit(kmutex_t *, const char*, int, const char*); -void __mutex_spin_enter(kmutex_t *, const char*, int, const char*); -void __mutex_spin_exit(kmutex_t *, const char*, int, const char*); -int __mutex_tryenter(kmutex_t *, const char*, int, const char*); +void __mutex_enter(kmutex_t *, const char*, int, const char*, const char*); +void __mutex_exit(kmutex_t *, const char*, int, const char*, const char*); +void __mutex_spin_enter(kmutex_t *, const char*, int, const char*, const char*); +void __mutex_spin_exit(kmutex_t *, const char*, int, const char*, const char*); +int __mutex_tryenter(kmutex_t *, const char*, int, const char*, const char*); -int __rw_tryupgrade(krwlock_t *, const char*, int, const char*); -void __rw_downgrade(krwlock_t *, const char*, int, const char*); -void __rw_enter(krwlock_t *, const krw_t, const char*, int, const char*); -int __rw_tryenter(krwlock_t *, const krw_t, const char*, int, const char*); -void __rw_exit(krwlock_t *, const char*, int, const char*); +int __rw_tryupgrade(krwlock_t *, const char*, int, const char*, const char*); +void __rw_downgrade(krwlock_t *, const char*, int, const char*, const char*); +void __rw_enter(krwlock_t *, const krw_t, const char*, int, const char*, const char*); +int __rw_tryenter(krwlock_t *, const krw_t, const char*, int, const char*, const char*); +void __rw_exit(krwlock_t *, const char*, int, const char*, const char*); + +void __b_cflags_busy(int *, const char*, int, const char*, const char*); +void __b_cflags_unbusy(int *, const char*, int, const char*, const char*); void __x86_disable_intr(const char*, int, const char*); void __x86_enable_intr(const char*, int, const char*); @@ -61,17 +64,20 @@ krw_t rw_lock_op(krwlock_t *rw); * Redefine lock/interrupt function as macros instead of normal functions, * so that __FILE__ etc. will work properly */ -#define mutex_enter(lock) __mutex_enter(lock, __FILE__, __LINE__, __func__) -#define mutex_exit(lock) __mutex_exit(lock, __FILE__, __LINE__, __func__) -#define mutex_spin_enter(lock) __mutex_spin_enter(lock, __FILE__, __LINE__, __func__) -#define mutex_spin_exit(lock) __mutex_spin_exit(lock, __FILE__, __LINE__, __func__) -#define mutex_tryenter(lock) __mutex_tryenter(lock, __FILE__, __LINE__, __func__) - -#define rw_tryupgrade(lock) __rw_tryupgrade(lock, __FILE__, __LINE__, __func__) -#define rw_downgrade(lock) __rw_downgrade(lock, __FILE__, __LINE__, __func__) -#define rw_enter(lock, type) __rw_enter(lock, type, __FILE__, __LINE__, __func__) -#define rw_tryenter(lock, type) __rw_tryenter(lock, type, __FILE__, __LINE__, __func__) -#define rw_exit(lock) __rw_exit(lock, __FILE__, __LINE__, __func__) +#define mutex_enter(lock) __mutex_enter(lock, __FILE__, __LINE__, __func__, (#lock)) +#define mutex_exit(lock) __mutex_exit(lock, __FILE__, __LINE__, __func__, (#lock)) +#define mutex_spin_enter(lock) __mutex_spin_enter(lock, __FILE__, __LINE__, __func__, (#lock)) +#define mutex_spin_exit(lock) __mutex_spin_exit(lock, __FILE__, __LINE__, __func__, (#lock)) +#define mutex_tryenter(lock) __mutex_tryenter(lock, __FILE__, __LINE__, __func__, (#lock)) + +#define rw_tryupgrade(lock) __rw_tryupgrade(lock, __FILE__, __LINE__, __func__, (#lock)) +#define rw_downgrade(lock) __rw_downgrade(lock, __FILE__, __LINE__, __func__, (#lock)) +#define rw_enter(lock, type) __rw_enter(lock, type, __FILE__, __LINE__, __func__, (#lock)) +#define rw_tryenter(lock, type) __rw_tryenter(lock, type, __FILE__, __LINE__, __func__, (#lock)) +#define rw_exit(lock) __rw_exit(lock, __FILE__, __LINE__, __func__, (#lock)) + +#define b_cflags_busy(b_cflags) __b_cflags_busy(b_cflags, __FILE__, __LINE__, __func__, (#b_cflags)) +#define b_cflags_unbusy(b_cflags) __b_cflags_unbusy(b_cflags, __FILE__, __LINE__, __func__, (#b_cflags)) #define x86_disable_intr() __x86_disable_intr(__FILE__, __LINE__, __func__) #define x86_enable_intr() __x86_enable_intr(__FILE__, __LINE__, __func__) @@ -129,7 +135,7 @@ static inline void __lockdoc_log_memory(int alloc, const char *datatype, const v x86_write_flags(eflags); } -static inline void lockdoc_log_lock(int lock_op, const volatile void* ptr, const char *file, int line, const char* func, const char* lock_type, int irq_sync) { +static inline void lockdoc_log_lock(int lock_op, const volatile void* ptr, const char *file, int line, const char* func, const char* lock_type, int irq_sync, const char* name) { u_long eflags; eflags = x86_read_flags(); _x86_disable_intr(); @@ -157,7 +163,7 @@ static inline void lockdoc_log_lock(int lock_op, const volatile void* ptr, const la_buffer.type[LOCKDOC_LOG_CHAR_BUFFER_LEN - 1] = '\0'; // TODO lock_member - strncpy(la_buffer.lock_member, "dummy", LOCKDOC_LOG_CHAR_BUFFER_LEN); + strncpy(la_buffer.lock_member, name, LOCKDOC_LOG_CHAR_BUFFER_LEN); la_buffer.lock_member[LOCKDOC_LOG_CHAR_BUFFER_LEN - 1] = '\0'; // file diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index db8d4dfb471..546ce0616c6 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -2196,7 +2196,7 @@ rwfsblk(struct vnode *vp, int flags, void *data, daddr_t lbn) 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); + b_cflags_busy(&(nbp->b_cflags)); #endif bdev_strategy(nbp); diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c index 340860c86ac..408c1fb8814 100644 --- a/sys/ufs/ffs/ffs_vnops.c +++ b/sys/ufs/ffs/ffs_vnops.c @@ -380,7 +380,7 @@ ffs_fsync(void *v) 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); + b_cflags_busy(&(bp->b_cflags)); #endif mutex_exit(&bufcache_lock); bawrite(bp); diff --git a/sys/ufs/lfs/lfs_bio.c b/sys/ufs/lfs/lfs_bio.c index 06bd348b340..7987fac4b4c 100644 --- a/sys/ufs/lfs/lfs_bio.c +++ b/sys/ufs/lfs/lfs_bio.c @@ -437,7 +437,7 @@ lfs_bwrite_ext(struct buf *bp, int flags) if (LFS_IS_MALLOC_BUF(bp)){ bp->b_cflags &= ~BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(V_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_unbusy(&(bp->b_cflags)); #endif } else brelsel(bp, 0); @@ -487,7 +487,7 @@ lfs_bwrite_ext(struct buf *bp, int flags) if (bp->b_iodone != NULL) { bp->b_cflags &= ~BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(V_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_unbusy(&(bp->b_cflags)); #endif } else brelsel(bp, 0); @@ -743,7 +743,7 @@ lfs_newbuf(struct lfs *fs, struct vnode *vp, daddr_t daddr, size_t size, int typ 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); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_private = fs; diff --git a/sys/ufs/lfs/lfs_segment.c b/sys/ufs/lfs/lfs_segment.c index 39c4114ba06..0e5477bc095 100644 --- a/sys/ufs/lfs/lfs_segment.c +++ b/sys/ufs/lfs/lfs_segment.c @@ -2125,7 +2125,7 @@ lfs_writeseg(struct lfs *fs, struct segment *sp) 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); + b_cflags_busy(&(bp->b_cflags)); #endif continue; } @@ -2140,7 +2140,7 @@ lfs_writeseg(struct lfs *fs, struct segment *sp) } bp->b_cflags |= BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif mutex_exit(&bufcache_lock); unbusybp = NULL; @@ -2208,7 +2208,7 @@ lfs_writeseg(struct lfs *fs, struct segment *sp) 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); + b_cflags_unbusy(&(unbusybp->b_cflags)); #endif if (unbusybp->b_cflags & BC_WANTED) cv_broadcast(&bp->b_busy); @@ -2290,7 +2290,7 @@ 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); + b_cflags_busy(&(cbp->b_cflags)); #endif cbp->b_bcount = 0; @@ -2444,7 +2444,7 @@ lfs_writesuper(struct lfs *fs, daddr_t daddr) bp->b_cflags |= BC_BUSY; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_flags = (bp->b_flags & ~B_READ) | B_ASYNC; bp->b_oflags &= ~(BO_DONE | BO_DELWRI); diff --git a/sys/ufs/lfs/lfs_vfsops.c b/sys/ufs/lfs/lfs_vfsops.c index e47d761b76e..24ea51f73aa 100644 --- a/sys/ufs/lfs/lfs_vfsops.c +++ b/sys/ufs/lfs/lfs_vfsops.c @@ -2128,7 +2128,7 @@ lfs_gop_write(struct vnode *vp, struct vm_page **pgs, int npages, 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); + b_cflags_busy(&(mbp->b_cflags)); #endif mbp->b_iodone = uvm_aio_aiodone; diff --git a/sys/uvm/uvm_swap.c b/sys/uvm/uvm_swap.c index 78e066c3f53..96dba58afcd 100644 --- a/sys/uvm/uvm_swap.c +++ b/sys/uvm/uvm_swap.c @@ -1962,7 +1962,7 @@ uvm_swap_io(struct vm_page **pps, int startslot, int npages, int flags) bp->b_cflags = BC_BUSY | BC_NOCACHE; #ifdef LOCKDOC_VFS - lockdoc_log_lock(P_WRITE, &(bp->b_cflags), __FILE__, __LINE__, __func__, "b_cflags", 0); + b_cflags_busy(&(bp->b_cflags)); #endif bp->b_flags = (flags & (B_READ|B_ASYNC)); bp->b_proc = &proc0; /* XXX */ |
