From 63ae0d14643b05a4085220727c12940e275f72b9 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Thu, 3 Dec 2009 19:23:40 +0000 Subject: [PATCH] Fix memory lock imbalance in lv_suspend if already suspended. pvmove suspends all moved LVs + pvmoveX mirrored LV itself. This suspends even underlying pvmoveX and following explicit suspend call is just noop. But in resume the pvmoveX volume is no longer underlying device for moved LVs, so it performs full resume with memlock decrease. Code must call memlock_inc() if suspend is requested, volume is already suspended and error is not requested. --- WHATS_NEW | 1 + lib/activate/activate.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/WHATS_NEW b/WHATS_NEW index 5b1c9263f..2dc1aefd8 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.57 - ==================================== + Fix memory lock imbalance in lv_suspend if already suspended. Fix pvmove test mode to not fail and do not poll. Fix error message if VG already exist in vgcreate. Fix tools to use log_error when stopped by user. diff --git a/lib/activate/activate.c b/lib/activate/activate.c index 1aaa16cf1..cfd2953fb 100644 --- a/lib/activate/activate.c +++ b/lib/activate/activate.c @@ -879,7 +879,11 @@ static int _lv_suspend(struct cmd_context *cmd, const char *lvid_s, goto_out; if (!info.exists || info.suspended) { - r = error_if_not_suspended ? 0 : 1; + if (!error_if_not_suspended) { + r = 1; + if (info.suspended) + memlock_inc(); + } goto out; } -- 2.43.5