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 ./WHATS_NEW lib/metadata/metadata-exporte ... Date: Mon, 23 Jul 2007 17:27:00 -0000 [thread overview] Message-ID: <20070723172755.15375.qmail@sourceware.org> (raw) CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: wysochanski@sourceware.org 2007-07-23 17:27:55 Modified files: . : WHATS_NEW lib/metadata : metadata-exported.h metadata.c tools : pvmove.c vgextend.c vgmerge.c vgsplit.c Log message: Add vg_lock_and_read() external library function. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.667&r2=1.668 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.127&r2=1.128 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/pvmove.c.diff?cvsroot=lvm2&r1=1.38&r2=1.39 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgextend.c.diff?cvsroot=lvm2&r1=1.31&r2=1.32 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.37&r2=1.38 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgsplit.c.diff?cvsroot=lvm2&r1=1.31&r2=1.32 --- LVM2/WHATS_NEW 2007/07/23 10:45:49 1.667 +++ LVM2/WHATS_NEW 2007/07/23 17:27:54 1.668 @@ -1,5 +1,6 @@ Version 2.02.28 - ================================ + Add vg_lock_and_read() external library function. Fix loading of persistent cache if cache_dir is used. (2.02.23) Eliminate uses of strdup+basename. Use last_path_component instead. Use gcc's printf attribute wherever possible. --- LVM2/lib/metadata/metadata-exported.h 2007/07/18 15:38:58 1.1 +++ LVM2/lib/metadata/metadata-exported.h 2007/07/23 17:27:54 1.2 @@ -292,6 +292,8 @@ int pv_write(struct cmd_context *cmd, struct physical_volume *pv, 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); /* 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/12 15:38:53 1.127 +++ LVM2/lib/metadata/metadata.c 2007/07/23 17:27:54 1.128 @@ -1792,6 +1792,41 @@ return 1; } +/** + * vg_lock_and_read - Attempt to lock a volume group, read, and check status + * @cmd - command context + * @vg_name - name of the volume group to lock and read + * @lock_flags - locking flags to use + * @status_flags - status flags to check + * + * 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) +{ + struct volume_group *vg; + int consistent = 1; + + 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) { + log_error("Volume group \"%s\" not found", vg_name); + unlock_vg(cmd, vg_name); + return NULL; + } + + if (!vg_check_status(vg, status_flags)) { + unlock_vg(cmd, vg_name); + return NULL; + } + return vg; +} + /* * Gets/Sets for external LVM library --- LVM2/tools/pvmove.c 2007/06/15 22:16:55 1.38 +++ LVM2/tools/pvmove.c 2007/07/23 17:27:55 1.39 @@ -50,26 +50,13 @@ static struct volume_group *_get_vg(struct cmd_context *cmd, const char *vgname) { - int consistent = 1; struct volume_group *vg; dev_close_all(); - if (!lock_vol(cmd, vgname, LCK_VG_WRITE)) { - log_error("Can't get lock for %s", vgname); - return NULL; - } - - if (!(vg = vg_read(cmd, vgname, NULL, &consistent)) || !consistent) { - log_error("Volume group \"%s\" doesn't exist", vgname); - unlock_vg(cmd, vgname); - return NULL; - } - - if (!vg_check_status(vg, CLUSTERED | EXPORTED_VG | LVM_WRITE)) { - unlock_vg(cmd, vgname); - return NULL; - } + if (!(vg = vg_lock_and_read(cmd, vgname, LCK_VG_WRITE, + CLUSTERED | EXPORTED_VG | LVM_WRITE))) + return NULL; return vg; } --- LVM2/tools/vgextend.c 2007/06/19 00:33:43 1.31 +++ LVM2/tools/vgextend.c 2007/07/23 17:27:55 1.32 @@ -19,7 +19,6 @@ { char *vg_name; struct volume_group *vg = NULL; - int consistent = 1; if (!argc) { log_error("Please enter volume group name and " @@ -48,21 +47,12 @@ } log_verbose("Checking for volume group \"%s\"", vg_name); - if (!lock_vol(cmd, vg_name, LCK_VG_WRITE | LCK_NONBLOCK)) { - unlock_vg(cmd, ORPHAN); - log_error("Can't get lock for %s", vg_name); - goto error; - } - - if (!(vg = vg_read(cmd, vg_name, NULL, &consistent)) || !consistent) { - log_error("Volume group \"%s\" not found.", vg_name); - goto error; - } - - if (!vg_check_status(vg, CLUSTERED | EXPORTED_VG | - LVM_WRITE | RESIZEABLE_VG)) - goto error; - + if (!(vg = vg_lock_and_read(cmd, vg_name, LCK_VG_WRITE | LCK_NONBLOCK, + CLUSTERED | EXPORTED_VG | + LVM_WRITE | RESIZEABLE_VG))) { + unlock_vg(cmd, ORPHAN); + return ECMD_FAILED; + } /********** FIXME log_print("maximum logical volume size is %s", (dummy = lvm_show_size(LVM_LV_SIZE_MAX(vg) / 2, LONG))); --- LVM2/tools/vgmerge.c 2007/06/06 19:40:28 1.37 +++ LVM2/tools/vgmerge.c 2007/07/23 17:27:55 1.38 @@ -22,7 +22,6 @@ struct lv_list *lvl1, *lvl2; struct pv_list *pvl; int active; - int consistent = 1; if (!strcmp(vg_name_to, vg_name_from)) { log_error("Duplicate volume group name \"%s\"", vg_name_from); @@ -30,38 +29,18 @@ } log_verbose("Checking for volume group \"%s\"", vg_name_to); - if (!lock_vol(cmd, vg_name_to, LCK_VG_WRITE)) { - log_error("Can't get lock for %s", vg_name_to); - return ECMD_FAILED; - } - - if (!(vg_to = vg_read(cmd, vg_name_to, NULL, &consistent)) || !consistent) { - log_error("Volume group \"%s\" doesn't exist", vg_name_to); - unlock_vg(cmd, vg_name_to); - return ECMD_FAILED; - } - - if (!vg_check_status(vg_to, CLUSTERED | EXPORTED_VG | LVM_WRITE)) { - unlock_vg(cmd, vg_name_to); - return ECMD_FAILED; - } + if (!(vg_to = vg_lock_and_read(cmd, vg_name_to, LCK_VG_WRITE, + CLUSTERED | EXPORTED_VG | LVM_WRITE))) + return ECMD_FAILED; log_verbose("Checking for volume group \"%s\"", vg_name_from); - if (!lock_vol(cmd, vg_name_from, LCK_VG_WRITE | LCK_NONBLOCK)) { - log_error("Can't get lock for %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))) { unlock_vg(cmd, vg_name_to); return ECMD_FAILED; } - consistent = 1; - if (!(vg_from = vg_read(cmd, vg_name_from, NULL, &consistent)) || !consistent) { - log_error("Volume group \"%s\" doesn't exist", vg_name_from); - goto error; - } - - if (!vg_check_status(vg_from, CLUSTERED | EXPORTED_VG | LVM_WRITE)) - goto error; - if ((active = lvs_in_vg_activated(vg_from))) { log_error("Logical volumes in \"%s\" must be inactive", vg_name_from); --- LVM2/tools/vgsplit.c 2007/06/28 17:59:34 1.31 +++ LVM2/tools/vgsplit.c 2007/07/23 17:27:55 1.32 @@ -240,22 +240,10 @@ } log_verbose("Checking for volume group \"%s\"", vg_name_from); - if (!lock_vol(cmd, vg_name_from, LCK_VG_WRITE)) { - log_error("Can't get lock for %s", vg_name_from); - return ECMD_FAILED; - } - - if (!(vg_from = vg_read(cmd, vg_name_from, NULL, &consistent)) || !consistent) { - log_error("Volume group \"%s\" doesn't exist", vg_name_from); - unlock_vg(cmd, vg_name_from); - return ECMD_FAILED; - } - - if (!vg_check_status(vg_from, CLUSTERED | EXPORTED_VG | - RESIZEABLE_VG | LVM_WRITE)) { - unlock_vg(cmd, vg_name_from); - return ECMD_FAILED; - } + if (!(vg_to = vg_lock_and_read(cmd, vg_name_from, LCK_VG_WRITE, + CLUSTERED | EXPORTED_VG | + RESIZEABLE_VG | LVM_WRITE))) + return ECMD_FAILED; log_verbose("Checking for volume group \"%s\"", vg_name_to); if (!lock_vol(cmd, vg_name_to, LCK_VG_WRITE | LCK_NONBLOCK)) {
next reply other threads:[~2007-07-23 17:27 UTC|newest] Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-07-23 17:27 wysochanski [this message] 2007-08-21 17:38 wysochanski 2007-08-30 20:30 wysochanski 2007-09-20 21:39 wysochanski 2007-10-12 14:08 wysochanski 2007-11-15 2:20 agk 2008-01-07 20:42 mbroz 2008-01-16 18:15 agk 2008-01-18 22:02 agk 2008-02-13 20:01 meyering 2008-04-23 14:33 wysochanski 2009-02-03 16:19 wysochanski 2009-06-01 14:43 mbroz 2009-06-05 20:00 mbroz 2009-07-14 2:19 wysochanski 2010-03-16 14:37 agk 2010-03-16 15:30 agk 2010-05-14 15:19 jbrassow 2010-05-21 12:52 zkabelac 2010-05-21 12:55 zkabelac 2010-05-21 14:07 zkabelac 2011-02-25 14:02 prajnoha 2011-03-02 20:00 mbroz 2011-03-11 14:56 prajnoha 2011-08-18 19:34 jbrassow 2011-08-18 19:43 jbrassow 2011-09-07 8:34 zkabelac 2011-09-14 9:57 zkabelac 2011-10-07 14:56 jbrassow 2011-10-28 20:12 zkabelac 2011-12-01 0:09 jbrassow
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=20070723172755.15375.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).