public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
From: wysochanski@sourceware.org
To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org
Subject: LVM2/lib cache/lvmcache.c metadata/metadata.c
Date: Mon, 28 Jun 2010 20:34:00 -0000 [thread overview]
Message-ID: <20100628203458.16392.qmail@sourceware.org> (raw)
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: wysochanski@sourceware.org 2010-06-28 20:34:58
Modified files:
lib/cache : lvmcache.c
lib/metadata : metadata.c
Log message:
Use mdas_empty_or_ignored() in place of checks for empty mda list.
With the addition of ignored mdas, we replace all checks for an empty
mda list with a new function to look for either an empty mda list or
ignored mdas.
Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/cache/lvmcache.c.diff?cvsroot=lvm2&r1=1.91&r2=1.92
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.353&r2=1.354
--- LVM2/lib/cache/lvmcache.c 2010/05/19 11:52:21 1.91
+++ LVM2/lib/cache/lvmcache.c 2010/06/28 20:34:58 1.92
@@ -1197,7 +1197,8 @@
}
/* If PV without mdas is already in a real VG, don't make it orphan */
- if (is_orphan_vg(vgname) && info->vginfo && !dm_list_size(&info->mdas) &&
+ if (is_orphan_vg(vgname) && info->vginfo &&
+ mdas_empty_or_ignored(&info->mdas) &&
!is_orphan_vg(info->vginfo->vgname) && memlock())
return 1;
--- LVM2/lib/metadata/metadata.c 2010/06/28 20:34:40 1.353
+++ LVM2/lib/metadata/metadata.c 2010/06/28 20:34:58 1.354
@@ -1305,7 +1305,7 @@
* this means checking every VG by scanning every PV on the
* system.
*/
- if (pv && is_orphan(pv) && !dm_list_size(&mdas)) {
+ if (pv && is_orphan(pv) && mdas_empty_or_ignored(&mdas)) {
if (!scan_vgs_for_pvs(cmd))
return_0;
pv = pv_read(cmd, name, NULL, NULL, 0, 0);
@@ -1798,7 +1798,7 @@
return NULL;
}
- if (is_orphan_vg(pv->vg_name) && !dm_list_size(&mdas)) {
+ if (is_orphan_vg(pv->vg_name) && mdas_empty_or_ignored(&mdas)) {
/* If a PV has no MDAs - need to search all VGs for it */
if (!scan_vgs_for_pvs(cmd))
return_NULL;
@@ -2722,8 +2722,8 @@
/* Ensure every PV in the VG was in the cache */
if (correct_vg) {
/*
- * If the VG has PVs without mdas, they may still be
- * orphans in the cache: update the cache state here.
+ * If the VG has PVs without mdas, or ignored mdas, they may
+ * still be orphans in the cache: update the cache state here.
*/
if (!inconsistent &&
dm_list_size(&correct_vg->pvs) > dm_list_size(pvids)) {
@@ -2738,11 +2738,12 @@
/*
* PV not marked as belonging to this VG in cache.
- * Check it's an orphan without metadata area.
+ * Check it's an orphan without metadata area
+ * not ignored.
*/
if (!(info = info_from_pvid(pvl->pv->dev->pvid, 1)) ||
!info->vginfo || !is_orphan_vg(info->vginfo->vgname) ||
- dm_list_size(&info->mdas)) {
+ !mdas_empty_or_ignored(&info->mdas)) {
inconsistent_pvs = 1;
break;
}
@@ -3128,20 +3129,24 @@
return_NULL;
}
/*
- * If an orphan PV has no MDAs it may appear to be an
- * orphan until the metadata is read off another PV in
- * the same VG. Detecting this means checking every VG
- * by scanning every PV on the system.
+ * If an orphan PV has no MDAs, or it has MDAs but the
+ * MDA is ignored, it may appear to be an orphan until
+ * the metadata is read off another PV in the same VG.
+ * Detecting this means checking every VG by scanning
+ * every PV on the system.
*/
- if (!dm_list_size(&info->mdas)) {
+ if (mdas_empty_or_ignored(&info->mdas)) {
if (!scan_vgs_for_pvs(cmd)) {
log_error("Rescan for PVs without "
"metadata areas failed.");
return NULL;
}
+ /*
+ * Ask lvmcache again - we may have a non-orphan
+ * name now
+ */
+ vgname = lvmcache_vgname_from_pvid(cmd, pvid);
}
- /* Ask lvmcache again - we may have a non-orphan name now */
- vgname = lvmcache_vgname_from_pvid(cmd, pvid);
}
return vgname;
}
next reply other threads:[~2010-06-28 20:34 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-28 20:34 wysochanski [this message]
-- strict thread matches above, loose matches on Subject: below --
2008-06-06 11:12 agk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100628203458.16392.qmail@sourceware.org \
--to=wysochanski@sourceware.org \
--cc=lvm-devel@redhat.com \
--cc=lvm2-cvs@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).