The branch main has been updated by rlibby:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=bd56aad33c2533615f76c17795f0aa70b7686309

commit bd56aad33c2533615f76c17795f0aa70b7686309
Author:     Ryan Libby <rli...@freebsd.org>
AuthorDate: 2024-05-21 17:21:50 +0000
Commit:     Ryan Libby <rli...@freebsd.org>
CommitDate: 2024-05-21 17:21:50 +0000

    buf: define and use BUF_DISOWNED
    
    Implement an API where previously code was directly reaching into the
    buf's internal lock.
    
    Reviewed by:    mckusick, imp, kib, markj
    Sponsored by:   Dell EMC Isilon
    Differential Revision:  https://reviews.freebsd.org/D45249
---
 sys/geom/geom_vfs.c | 4 ++--
 sys/sys/buf.h       | 7 +++++++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/sys/geom/geom_vfs.c b/sys/geom/geom_vfs.c
index 893c8dfffa6f..87b2fea21baa 100644
--- a/sys/geom/geom_vfs.c
+++ b/sys/geom/geom_vfs.c
@@ -124,12 +124,12 @@ g_vfs_done(struct bio *bip)
                        mp = cdevp->si_mountpt;
                if (mp != NULL) {
                        if (bp->b_iocmd == BIO_READ) {
-                               if (LK_HOLDER(bp->b_lock.lk_lock) == 
LK_KERNPROC)
+                               if (BUF_DISOWNED(bp))
                                        mp->mnt_stat.f_asyncreads++;
                                else
                                        mp->mnt_stat.f_syncreads++;
                        } else if (bp->b_iocmd == BIO_WRITE) {
-                               if (LK_HOLDER(bp->b_lock.lk_lock) == 
LK_KERNPROC)
+                               if (BUF_DISOWNED(bp))
                                        mp->mnt_stat.f_asyncwrites++;
                                else
                                        mp->mnt_stat.f_syncwrites++;
diff --git a/sys/sys/buf.h b/sys/sys/buf.h
index 70fb2812c3ba..cee9547912a6 100644
--- a/sys/sys/buf.h
+++ b/sys/sys/buf.h
@@ -341,6 +341,13 @@ struct buf {
  */
 #define        BUF_ISLOCKED(bp)                                                
\
        lockstatus(&(bp)->b_lock)
+
+/*
+ * Check if a buffer lock is currently held by LK_KERNPROC.
+ */
+#define        BUF_DISOWNED(bp)                                                
\
+       lockmgr_disowned(&(bp)->b_lock)
+
 /*
  * Free a buffer lock.
  */

Reply via email to