From 9553dc77611e787999923a4cfeb223360ce00672 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Thu, 15 Mar 2018 12:30:45 +0100 Subject: [PATCH] activation: separate prioritized counter While prioritized_section() based on raised priority works nicely for standard lvm comman - separate counter is actually needed when it's used in daemons like clvmd/dmeventd where priority stays raised all the time. --- lib/mm/memlock.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/mm/memlock.c b/lib/mm/memlock.c index b55cc97f9..b15058ec5 100644 --- a/lib/mm/memlock.c +++ b/lib/mm/memlock.c @@ -87,6 +87,7 @@ static void *_malloc_mem = NULL; static int _mem_locked = 0; static int _priority_raised = 0; static int _critical_section = 0; +static int _prioritized_section = 0; static int _memlock_count_daemon = 0; static int _priority; static int _default_priority; @@ -618,6 +619,7 @@ void critical_section_inc(struct cmd_context *cmd, const char *reason) log_debug_activation("Entering prioritized section (%s).", reason); _raise_priority(cmd); + _prioritized_section++; } void critical_section_dec(struct cmd_context *cmd, const char *reason) @@ -627,6 +629,9 @@ void critical_section_dec(struct cmd_context *cmd, const char *reason) log_debug_activation("Leaving critical section (%s).", reason); } else log_debug_activation("Leaving section (%s).", reason); + + if (_prioritized_section > 0) + _prioritized_section--; } int critical_section(void) @@ -636,7 +641,7 @@ int critical_section(void) int prioritized_section(void) { - return _priority_raised; + return _prioritized_section; } /* @@ -680,6 +685,7 @@ void memlock_reset(void) _mem_locked = 0; _priority_raised = 0; _critical_section = 0; + _prioritized_section = 0; _memlock_count_daemon = 0; } -- 2.43.5