From c3b50730b843f156a36858fa605851bdbe4df6b9 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 3 Mar 2009 16:35:32 +0000 Subject: [PATCH] vgname_from_mda now tries to parse for vgname even if rlocn not defined (there is no metadata area). In most cases it fails in validate_name(), unfortunately there are situatuions, when validate_name is ok and later code fails with checksum error. Reproducer: # dd if=/dev/zero of=/dev/loop0 # pvcreate --metadatasize 637k /dev/loop0 Physical volume "/dev/loop0" successfully created # pvs /dev/loop0 /dev/loop0: Checksum error PV VG Fmt Attr PSize PFree /dev/loop0 lvm2 -- 1.00M 1.00M Signed-off-by: Milan Broz - --- WHATS_NEW | 1 + lib/format_text/format-text.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/WHATS_NEW b/WHATS_NEW index 920874d9e..db7aaaa70 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.45 - 3rd March 2009 ================================ + Avoid scanning empty metadata areas for VG names. Attempt proper clean up in child before executing new binary in exec_cmd(). Do not scan devices if reporting only attributes from PV label. Use pkgconfig to obtain corosync library details during configuration. diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c index 768446fb6..b70a97f61 100644 --- a/lib/format_text/format-text.c +++ b/lib/format_text/format-text.c @@ -1061,6 +1061,12 @@ const char *vgname_from_mda(const struct format_type *fmt, /* FIXME Cope with returning a list */ rlocn = mdah->raw_locns; + /* + * If no valid offset, do not try to search for vgname + */ + if (!rlocn->offset) + goto out; + /* Do quick check for a vgname */ if (!dev_read(dev_area->dev, dev_area->start + rlocn->offset, NAME_LEN, buf))