diff --git a/src/slurmctld/locks.c b/src/slurmctld/locks.c
index 70a4012097e674db2b5c33516393d5b89d789360..80a5d1251fb8c9e1a0e2d5d103771b7ee8b55728 100644
--- a/src/slurmctld/locks.c
+++ b/src/slurmctld/locks.c
@@ -102,6 +102,11 @@ static bool _clear_locks(slurmctld_lock_t lock_levels)
 
 	return true;
 }
+
+extern bool verify_lock(lock_datatype_t datatype, lock_level_t level)
+{
+	return (((lock_level_t *) &thread_locks)[datatype] >= level);
+}
 #endif
 
 /* init_locks - create locks used for slurmctld data structure access
diff --git a/src/slurmctld/locks.h b/src/slurmctld/locks.h
index 443cda3a6e8f39602aef87ed3e99d4735f4e96da..1cf4d0479bc389ad0209e29f938fc82bf88b4bc0 100644
--- a/src/slurmctld/locks.h
+++ b/src/slurmctld/locks.h
@@ -91,6 +91,8 @@
 #ifndef _SLURMCTLD_LOCKS_H
 #define _SLURMCTLD_LOCKS_H
 
+#include <stdbool.h>
+
 /* levels of locking required for each data structure */
 typedef enum {
 	NO_LOCK,
@@ -125,6 +127,10 @@ typedef enum {
 	ENTITY_COUNT
 }	lock_datatype_t;
 
+#ifndef NDEBUG
+extern bool verify_lock(lock_datatype_t datatype, lock_level_t level);
+#endif
+
 #define read_lock(data_type)		(data_type * 4 + 0)
 #define write_lock(data_type)		(data_type * 4 + 1)
 #define write_wait_lock(data_type)	(data_type * 4 + 2)