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)) {


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