* [PATCH] Fix log allocation segfault
@ 2009-05-31 20:45 Milan Broz
0 siblings, 0 replies; only message in thread
From: Milan Broz @ 2009-05-31 20:45 UTC (permalink / raw)
To: lvm-devel
Fix log allocation segfault.
If there is no free area for log, code should break the loop.
(Otherwise it uses uninitializes areas later.)
Easily reproducible using lvconvert --repair
- kill device with log
- run lvconvert --repair vg/lv (with no PV usable for log)
(patch just reintroduces part of previous code)
Signed-off-by: Milan Broz <mbroz@redhat.com>
---
lib/metadata/lv_manip.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 79407ae..3e64f48 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -1124,6 +1124,10 @@ static int _find_parallel_space(struct alloc_handle *ah, alloc_policy_t alloc,
if ((contiguous || cling) && (preferred_count < ix_offset))
break;
+ if (ix + ix_offset < ah->area_count +
+ ((ah->log_count && !ah->log_area.len) ? ah->log_count : 0))
+ break;
+
/* sort the areas so we allocate from the biggest */
if (ix > 1)
qsort(areas + ix_offset, ix, sizeof(*areas),
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2009-05-31 20:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-31 20:45 [PATCH] Fix log allocation segfault Milan Broz
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.