summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMerlin Scholz <merlin@scholz.ruhr>2023-08-20 18:36:09 +0200
committerMerlin Scholz <merlin@scholz.ruhr>2023-08-20 18:36:09 +0200
commit6545533869a1eba7272e380cbf5ca103e9181251 (patch)
treee07d35c6c738c92ad8769b40bc4f47a28aebd6ba
parente7b3826cda40b7e543318c19b9093dcceb8b4237 (diff)
Reorganize b_cache logging, un-deprecate variable name logging
-rw-r--r--sys/dev/ata/ata_raid.c2
-rw-r--r--sys/dev/dkwedge/dk.c2
-rw-r--r--sys/dev/fss.c4
-rw-r--r--sys/dev/isa/fd.c2
-rw-r--r--sys/dev/ld.c2
-rw-r--r--sys/dev/raidframe/rf_diskqueue.c2
-rw-r--r--sys/dev/vme/xd.c2
-rw-r--r--sys/dev/vme/xy.c2
-rw-r--r--sys/fs/udf/udf_readwrite.c8
-rw-r--r--sys/fs/udf/udf_strat_rmw.c4
-rw-r--r--sys/kern/kern_physio.c6
-rw-r--r--sys/kern/vfs_bio.c14
-rw-r--r--sys/kern/vfs_subr.c4
-rw-r--r--sys/kern/vfs_wapbl.c4
-rw-r--r--sys/lockdoc/log.c73
-rw-r--r--sys/miscfs/genfs/genfs_io.c6
-rw-r--r--sys/sys/lockdoc.h54
-rw-r--r--sys/ufs/ffs/ffs_snapshot.c2
-rw-r--r--sys/ufs/ffs/ffs_vnops.c2
-rw-r--r--sys/ufs/lfs/lfs_bio.c6
-rw-r--r--sys/ufs/lfs/lfs_segment.c10
-rw-r--r--sys/ufs/lfs/lfs_vfsops.c2
-rw-r--r--sys/uvm/uvm_swap.c2
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 */