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: linkBe 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).