[lvm-devel] master - locking: memory locking ONLY with suspending reason
Zdenek Kabelac
zkabelac at sourceware.org
Mon Jul 2 08:26:53 UTC 2018
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=0bae9a1bffe34170569ce37bd7effbdfe0603fa1
Commit: 0bae9a1bffe34170569ce37bd7effbdfe0603fa1
Parent: b55d30956d77afec7a985132225d5b64d072b598
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Sat Jun 30 10:35:08 2018 +0200
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Jul 2 10:21:42 2018 +0200
locking: memory locking ONLY with suspending reason
It's important to lock memory beforo running SUSPEND ioctl - but whole
lvm preload runs in memory unlocked environment - as in this phase
memory allocation is allowed and is meant to happen.
Once all targets are preload and ready (confirmed from all targets)
we start suspending tree - and here the memory allocation (or i.e.
opening files) is no longer allowed - as it may cause kernel deadlock.
---
lib/mm/memlock.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/lib/mm/memlock.c b/lib/mm/memlock.c
index 65f13c4..9ebf96d 100644
--- a/lib/mm/memlock.c
+++ b/lib/mm/memlock.c
@@ -604,8 +604,7 @@ static void _unlock_mem_if_possible(struct cmd_context *cmd)
void critical_section_inc(struct cmd_context *cmd, const char *reason)
{
if (!_critical_section &&
- ((strcmp(reason, "suspending") == 0) ||
- (strcmp(reason, "locking for suspend") == 0))) {
+ (strcmp(reason, "suspending") == 0)) {
/*
* Profiles are loaded on-demand so make sure that before
* entering the critical section all needed profiles are
More information about the lvm-devel
mailing list