All of lore.kernel.org
 help / color / mirror / Atom feed
From: agk@sourceware.org <agk@sourceware.org>
To: lvm-devel@redhat.com
Subject: LVM2 tools/commands.h tools/tools.h tools/lvcr ...
Date: 1 Jun 2011 19:21:06 -0000	[thread overview]
Message-ID: <20110601192106.21049.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk at sourceware.org	2011-06-01 19:21:04

Modified files:
	tools          : commands.h tools.h lvcreate.c 
	man            : lvcreate.8.in 
	.              : WHATS_NEW 
	lib/metadata   : metadata-exported.h lv_manip.c 
	liblvm         : lvm_lv.c 

Log message:
	Permit --available with lvcreate so non-snapshot LVs need not be activated.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/commands.h.diff?cvsroot=lvm2&r1=1.157&r2=1.158
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/tools.h.diff?cvsroot=lvm2&r1=1.74&r2=1.75
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvcreate.c.diff?cvsroot=lvm2&r1=1.230&r2=1.231
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/man/lvcreate.8.in.diff?cvsroot=lvm2&r1=1.18&r2=1.19
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2002&r2=1.2003
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.191&r2=1.192
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv_manip.c.diff?cvsroot=lvm2&r1=1.258&r2=1.259
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/liblvm/lvm_lv.c.diff?cvsroot=lvm2&r1=1.35&r2=1.36

--- LVM2/tools/commands.h	2010/10/25 11:20:56	1.157
+++ LVM2/tools/commands.h	2011/06/01 19:21:03	1.158
@@ -148,6 +148,7 @@
    0,
    "lvcreate " "\n"
    "\t[-A|--autobackup {y|n}]\n"
+   "\t[-a|--available [e|l]y|n]\n"
    "\t[--addtag Tag]\n"
    "\t[--alloc AllocationPolicy]\n"
    "\t[-C|--contiguous {y|n}]\n"
@@ -198,12 +199,12 @@
 
    "\t[PhysicalVolumePath...]\n\n",
 
-   addtag_ARG, alloc_ARG, autobackup_ARG, chunksize_ARG, contiguous_ARG,
-   corelog_ARG, extents_ARG, ignoremonitoring_ARG, major_ARG, minor_ARG,
-   mirrorlog_ARG, mirrors_ARG, monitor_ARG, name_ARG, nosync_ARG, noudevsync_ARG,
-   permission_ARG, persistent_ARG, readahead_ARG, regionsize_ARG, size_ARG,
-   snapshot_ARG, stripes_ARG, stripesize_ARG, test_ARG, type_ARG,
-   virtualoriginsize_ARG, virtualsize_ARG, zero_ARG)
+   addtag_ARG, alloc_ARG, autobackup_ARG, available_ARG, chunksize_ARG,
+   contiguous_ARG, corelog_ARG, extents_ARG, ignoremonitoring_ARG, major_ARG,
+   minor_ARG, mirrorlog_ARG, mirrors_ARG, monitor_ARG, name_ARG, nosync_ARG,
+   noudevsync_ARG, permission_ARG, persistent_ARG, readahead_ARG,
+   regionsize_ARG, size_ARG, snapshot_ARG, stripes_ARG, stripesize_ARG,
+   test_ARG, type_ARG, virtualoriginsize_ARG, virtualsize_ARG, zero_ARG)
 
 xx(lvdisplay,
    "Display information about a logical volume",
--- LVM2/tools/tools.h	2010/11/30 11:53:33	1.74
+++ LVM2/tools/tools.h	2011/06/01 19:21:03	1.75
@@ -87,14 +87,6 @@
 	PERCENT_ORIGIN
 } percent_type_t;
 
-enum {
-	CHANGE_AY = 0,
-	CHANGE_AN = 1,
-	CHANGE_AE = 2,
-	CHANGE_ALY = 3,
-	CHANGE_ALN = 4
-};
-
 #define ARG_COUNTABLE 0x00000001	/* E.g. -vvvv */
 #define ARG_GROUPABLE 0x00000002	/* E.g. --addtag */
 
--- LVM2/tools/lvcreate.c	2011/03/25 21:56:28	1.230
+++ LVM2/tools/lvcreate.c	2011/06/01 19:21:03	1.231
@@ -429,12 +429,21 @@
 	    !_read_mirror_params(lp, cmd))
 		return_0;
 
+	lp->activate = arg_uint_value(cmd, available_ARG, CHANGE_AY);
+
 	/*
 	 * Should we zero the lv.
 	 */
 	lp->zero = strcmp(arg_str_value(cmd, zero_ARG,
 		(lp->segtype->flags & SEG_CANNOT_BE_ZEROED) ? "n" : "y"), "n");
 
+	if (lp->activate == CHANGE_AN || lp->activate == CHANGE_ALN) {
+		if (lp->zero) {
+			log_error("--available n requires --zero n");
+			return 0;
+		}
+	}
+
 	/*
 	 * Alloc policy
 	 */
--- LVM2/man/lvcreate.8.in	2010/05/28 03:50:18	1.18
+++ LVM2/man/lvcreate.8.in	2011/06/01 19:21:04	1.19
@@ -5,6 +5,7 @@
 .B lvcreate
 [\-\-addtag Tag]
 [\-\-alloc AllocationPolicy]
+[\-a|\-\-available y|n|ey|en|ly|ln]
 [\-A|\-\-autobackup y|n] [\-C|\-\-contiguous y|n] [\-d|\-\-debug]
 [\-h|\-?|\-\-help] [\-\-noudevsync]
 [\-\-ignoremonitoring]
@@ -55,6 +56,18 @@
 .SH OPTIONS
 See \fBlvm\fP for common options.
 .TP
+.I \-a, \-\-available y|n|ey|en|ly|ln
+Controls the availability of the Logical Volumes for immediate use after 
+the command finishes running.
+By default, new Logical Volumes are activated automatically (-ay).
+If it is possible technically, -an will leave the new Logical Volume inactive.
+But for example, snapshots can only be created
+in the active state so -an cannot be used with --snapshot.
+Normally the --zero n argument has to be supplied too because zeroing (the
+default behaviour) also requires activation.
+If clustered locking is enabled, -aey will activate exclusively
+on one node and -aly will activate only on the local node.
+.TP
 .I \-c, \-\-chunksize ChunkSize
 Power of 2 chunk size for the snapshot logical volume between 4k and 512k.
 .TP
--- LVM2/WHATS_NEW	2011/06/01 15:30:36	1.2002
+++ LVM2/WHATS_NEW	2011/06/01 19:21:04	1.2003
@@ -1,5 +1,6 @@
 Version 2.02.86 -  
 =================================
+  Permit --available with lvcreate so non-snapshot LVs need not be activated.
   Report sector containing label in verbose message.
   Clarify error message when unable to convert an LV into a snapshot of an LV.
   Add and use dev_open_readonly and variations.
--- LVM2/lib/metadata/metadata-exported.h	2011/05/07 13:32:05	1.191
+++ LVM2/lib/metadata/metadata-exported.h	2011/06/01 19:21:04	1.192
@@ -78,6 +78,7 @@
 
 #define REPLICATOR		0x20000000U	/* LV -internal use only for replicator */
 #define REPLICATOR_LOG		0x40000000U	/* LV -internal use only for replicator-dev */
+#define UNLABELLED_PV           0x80000000U     /* PV -this PV had no label written yet */
 
 #define LVM_READ              	0x00000100U	/* LV VG */
 #define LVM_WRITE             	0x00000200U	/* LV VG */
@@ -360,7 +361,8 @@
 
 struct physical_volume *pvcreate_single(struct cmd_context *cmd,
 					const char *pv_name,
-					struct pvcreate_params *pp);
+					struct pvcreate_params *pp,
+					int write_now);
 void pvcreate_params_set_defaults(struct pvcreate_params *pp);
 
 /*
@@ -372,7 +374,7 @@
 struct volume_group *vg_read_internal(struct cmd_context *cmd, const char *vg_name,
 			     const char *vgid, int warnings, int *consistent);
 struct physical_volume *pv_read(struct cmd_context *cmd, const char *pv_name,
-				uint64_t *label_sector, int warnings,
+				int warnings,
 				int scan_label_only);
 struct dm_list *get_pvs(struct cmd_context *cmd);
 
@@ -519,6 +521,17 @@
 uint64_t extents_from_size(struct cmd_context *cmd, uint64_t size,
 			   uint32_t extent_size);
 
+/*
+ * Activation options
+ */
+typedef enum {
+	CHANGE_AY = 0,
+	CHANGE_AN = 1,
+	CHANGE_AE = 2,
+	CHANGE_ALY = 3,
+	CHANGE_ALN = 4
+} activation_change_t;
+
 /* FIXME: refactor and reduce the size of this struct! */
 struct lvcreate_params {
 	/* flags */
@@ -529,6 +542,7 @@
 	int log_count; /* mirror */
 	int nosync; /* mirror */
 	int activation_monitoring; /* all */
+	activation_change_t activate; /* non-snapshot, non-mirror */
 
 	char *origin; /* snap */
 	const char *vg_name; /* all */
--- LVM2/lib/metadata/lv_manip.c	2011/04/09 19:05:24	1.258
+++ LVM2/lib/metadata/lv_manip.c	2011/06/01 19:21:04	1.259
@@ -3711,7 +3711,9 @@
 				  "exception store.");
 			goto revert_new_lv;
 		}
-	} else if (!activate_lv(cmd, lv)) {
+	} else if ((lp->activate == CHANGE_AY && !activate_lv(cmd, lv)) ||
+		   (lp->activate == CHANGE_AE && !activate_lv_excl(cmd, lv)) ||
+		   (lp->activate == CHANGE_ALY && !activate_lv_local(cmd, lv))) {
 		log_error("Failed to activate new LV.");
 		if (lp->zero)
 			goto deactivate_and_revert_new_lv;
--- LVM2/liblvm/lvm_lv.c	2011/02/03 01:24:46	1.35
+++ LVM2/liblvm/lvm_lv.c	2011/06/01 19:21:04	1.36
@@ -111,6 +111,7 @@
 	lp->major = -1;
 	lp->minor = -1;
 	lp->activation_monitoring = DEFAULT_DMEVENTD_MONITOR;
+	lp->activate = CHANGE_AY;
 	lp->vg_name = vg->name;
 	lp->lv_name = lvname; /* FIXME: check this for safety */
 	lp->pvh = &vg->pvs;



                 reply	other threads:[~2011-06-01 19:21 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20110601192106.21049.qmail@sourceware.org \
    --to=agk@sourceware.org \
    --cc=lvm-devel@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.