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/metadata/metadata-exported.h lib/meta ... Date: Mon, 23 Jul 2007 21:03:00 -0000 [thread overview] Message-ID: <20070723210343.7626.qmail@sourceware.org> (raw) CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: wysochanski@sourceware.org 2007-07-23 21:03:42 Modified files: lib/metadata : metadata-exported.h metadata.c tools : pvmove.c vgextend.c vgmerge.c vgsplit.c Log message: Add CORRECT_INCONSISTENT and FAIL_INCONSISTENT flags to vg_lock_and_read Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.128&r2=1.129 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/pvmove.c.diff?cvsroot=lvm2&r1=1.39&r2=1.40 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgextend.c.diff?cvsroot=lvm2&r1=1.32&r2=1.33 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.38&r2=1.39 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgsplit.c.diff?cvsroot=lvm2&r1=1.32&r2=1.33 --- LVM2/lib/metadata/metadata-exported.h 2007/07/23 17:27:54 1.2 +++ LVM2/lib/metadata/metadata-exported.h 2007/07/23 21:03:42 1.3 @@ -83,6 +83,10 @@ #define FMT_RESIZE_PV 0x00000080U /* Supports pvresize? */ #define FMT_UNLIMITED_STRIPESIZE 0x00000100U /* Unlimited stripe size? */ +/* LVM2 external library flags */ +#define CORRECT_INCONSISTENT 0x00000001U /* Correct inconsistent metadata */ +#define FAIL_INCONSISTENT 0x00000002U /* Fail if metadata inconsistent */ + /* Ordered list - see lv_manip.c */ typedef enum { ALLOC_INVALID, @@ -293,7 +297,8 @@ struct list *mdas, int64_t label_sector); int is_orphan(pv_t *pv); vg_t *vg_lock_and_read(struct cmd_context *cmd, const char *vg_name, - uint32_t lock_flags, uint32_t status_flags); + uint32_t lock_flags, uint32_t status_flags, + uint32_t misc_flags); /* pe_start and pe_end relate to any existing data so that new metadata * areas can avoid overlap */ --- LVM2/lib/metadata/metadata.c 2007/07/23 17:27:54 1.128 +++ LVM2/lib/metadata/metadata.c 2007/07/23 21:03:42 1.129 @@ -1798,23 +1798,29 @@ * @vg_name - name of the volume group to lock and read * @lock_flags - locking flags to use * @status_flags - status flags to check + * @misc_flags - function modifier flags * * Returns: * NULL - failure * non-NULL - success; volume group handle */ vg_t *vg_lock_and_read(struct cmd_context *cmd, const char *vg_name, - uint32_t lock_flags, uint32_t status_flags) + uint32_t lock_flags, uint32_t status_flags, + uint32_t misc_flags) { struct volume_group *vg; int consistent = 1; - + + if (!(misc_flags & CORRECT_INCONSISTENT)) + consistent = 0; + if (!lock_vol(cmd, vg_name, lock_flags)) { log_error("Can't get lock for %s", vg_name); return NULL; } - if (!(vg = vg_read(cmd, vg_name, NULL, &consistent)) || !consistent) { + if (!(vg = vg_read(cmd, vg_name, NULL, &consistent)) || + ((misc_flags & FAIL_INCONSISTENT) && !consistent)) { log_error("Volume group \"%s\" not found", vg_name); unlock_vg(cmd, vg_name); return NULL; --- LVM2/tools/pvmove.c 2007/07/23 17:27:55 1.39 +++ LVM2/tools/pvmove.c 2007/07/23 21:03:42 1.40 @@ -55,7 +55,8 @@ dev_close_all(); if (!(vg = vg_lock_and_read(cmd, vgname, LCK_VG_WRITE, - CLUSTERED | EXPORTED_VG | LVM_WRITE))) + CLUSTERED | EXPORTED_VG | LVM_WRITE, + CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) return NULL; return vg; --- LVM2/tools/vgextend.c 2007/07/23 17:27:55 1.32 +++ LVM2/tools/vgextend.c 2007/07/23 21:03:42 1.33 @@ -49,7 +49,8 @@ log_verbose("Checking for volume group \"%s\"", vg_name); if (!(vg = vg_lock_and_read(cmd, vg_name, LCK_VG_WRITE | LCK_NONBLOCK, CLUSTERED | EXPORTED_VG | - LVM_WRITE | RESIZEABLE_VG))) { + LVM_WRITE | RESIZEABLE_VG, + CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) { unlock_vg(cmd, ORPHAN); return ECMD_FAILED; } --- LVM2/tools/vgmerge.c 2007/07/23 17:27:55 1.38 +++ LVM2/tools/vgmerge.c 2007/07/23 21:03:42 1.39 @@ -30,13 +30,15 @@ log_verbose("Checking for volume group \"%s\"", vg_name_to); if (!(vg_to = vg_lock_and_read(cmd, vg_name_to, LCK_VG_WRITE, - CLUSTERED | EXPORTED_VG | LVM_WRITE))) + CLUSTERED | EXPORTED_VG | LVM_WRITE, + CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) return ECMD_FAILED; log_verbose("Checking for volume group \"%s\"", vg_name_from); if (!(vg_from = vg_lock_and_read(cmd, vg_name_from, LCK_VG_WRITE | LCK_NONBLOCK, - CLUSTERED | EXPORTED_VG | LVM_WRITE))) { + CLUSTERED | EXPORTED_VG | LVM_WRITE, + CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) { unlock_vg(cmd, vg_name_to); return ECMD_FAILED; } --- LVM2/tools/vgsplit.c 2007/07/23 17:27:55 1.32 +++ LVM2/tools/vgsplit.c 2007/07/23 21:03:42 1.33 @@ -242,7 +242,8 @@ log_verbose("Checking for volume group \"%s\"", vg_name_from); if (!(vg_to = vg_lock_and_read(cmd, vg_name_from, LCK_VG_WRITE, CLUSTERED | EXPORTED_VG | - RESIZEABLE_VG | LVM_WRITE))) + RESIZEABLE_VG | LVM_WRITE, + CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) return ECMD_FAILED; log_verbose("Checking for volume group \"%s\"", vg_name_to);
next reply other threads:[~2007-07-23 21:03 UTC|newest] Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-07-23 21:03 wysochanski [this message] 2007-11-15 22:11 agk 2007-12-22 2:13 agk 2008-01-15 22:56 wysochanski 2008-01-16 19:54 wysochanski 2008-06-24 20:10 wysochanski 2009-07-01 17:01 wysochanski 2009-07-08 14:33 wysochanski 2009-07-09 10:03 wysochanski 2009-07-09 10:04 wysochanski 2009-07-09 10:06 wysochanski 2009-07-09 10:07 wysochanski 2009-07-09 10:08 wysochanski 2009-07-09 10:09 wysochanski 2009-07-10 20:05 wysochanski 2009-07-10 20:07 wysochanski 2009-07-14 2:15 wysochanski 2009-07-15 5:50 mornfall 2009-07-26 1:53 wysochanski 2009-07-26 2:34 wysochanski 2009-07-28 13:17 wysochanski 2009-07-28 15:14 wysochanski 2009-09-02 21:39 wysochanski 2009-09-02 21:39 wysochanski 2009-09-14 15:45 wysochanski 2009-10-01 1:04 agk 2009-10-05 20:02 wysochanski 2009-10-05 20:03 wysochanski 2009-10-31 17:30 wysochanski 2009-11-01 19:51 wysochanski 2009-11-01 20:05 wysochanski 2010-02-14 3:21 wysochanski 2010-02-14 3:21 wysochanski 2010-02-24 18:15 wysochanski 2010-02-24 18:15 wysochanski 2010-06-28 20:40 wysochanski 2010-06-29 21:32 wysochanski 2010-06-30 18:03 wysochanski 2010-06-30 20:03 agk 2010-10-12 16:41 mornfall 2011-02-21 12:29 prajnoha
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=20070723210343.7626.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).