git: 9488262679d0 - main - rms: add rms_assert_rlock_ok

From: Mateusz Guzik <mjg_at_FreeBSD.org>
Date: Tue, 23 Aug 2022 19:15:52 UTC
The branch main has been updated by mjg:

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

commit 9488262679d083ff0de97ff608f6a8a95291b13d
Author:     Mateusz Guzik <mjg@FreeBSD.org>
AuthorDate: 2022-08-16 12:22:31 +0000
Commit:     Mateusz Guzik <mjg@FreeBSD.org>
CommitDate: 2022-08-23 19:15:48 +0000

    rms: add rms_assert_rlock_ok
    
    So that callers which opportunistically elide the lock can still
    assert that they can take it.
    
    Reviewed by:
    Differential Revision:
---
 sys/kern/kern_rmlock.c | 2 +-
 sys/sys/rmlock.h       | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/sys/kern/kern_rmlock.c b/sys/kern/kern_rmlock.c
index d7dea8efc40e..8a39c6b0d880 100644
--- a/sys/kern/kern_rmlock.c
+++ b/sys/kern/kern_rmlock.c
@@ -1025,7 +1025,7 @@ rms_rlock(struct rmslock *rms)
 {
 	struct rmslock_pcpu *pcpu;
 
-	WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, __func__);
+	rms_assert_rlock_ok(rms);
 	MPASS(atomic_load_ptr(&rms->owner) != curthread);
 
 	critical_enter();
diff --git a/sys/sys/rmlock.h b/sys/sys/rmlock.h
index 5aaf8f039026..6ff561c5e4b0 100644
--- a/sys/sys/rmlock.h
+++ b/sys/sys/rmlock.h
@@ -150,6 +150,13 @@ rms_wowned(struct rmslock *rms)
 	return (rms->owner == curthread);
 }
 
+#ifdef INVARIANTS
+#define rms_assert_rlock_ok(x)	\
+	WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, __func__);
+#else
+#define rms_assert_rlock_ok(x)
+#endif
+
 #ifdef INVARIANTS
 /*
  * For assertion purposes.