summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--WHATS_NEW1
-rw-r--r--man/pvcreate.8.in4
-rw-r--r--man/vgchange.8.in2
-rw-r--r--man/vgconvert.8.in2
-rw-r--r--man/vgcreate.8.in4
-rw-r--r--man/vgextend.8.in2
-rwxr-xr-xtest/t-pvcreate-usage.sh15
-rwxr-xr-xtest/t-vgcreate-usage.sh6
-rw-r--r--test/t-vgextend-usage.sh4
-rw-r--r--tools/args.h1
-rw-r--r--tools/commands.h18
-rw-r--r--tools/lvmcmdline.c3
-rw-r--r--tools/toollib.c8
-rw-r--r--tools/vgconvert.c13
-rw-r--r--tools/vgcreate.c5
-rw-r--r--tools/vgextend.c5
16 files changed, 58 insertions, 35 deletions
diff --git a/WHATS_NEW b/WHATS_NEW
index 09053171..3d432a1c 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.54 -
=====================================
+ Add --pvmetadatacopies for pvcreate, vgcreate, vgextend, vgconvert.
Add implict pvcreate support to vgcreate and vgextend.
Correct example.conf to indicate that lvm2 not lvm1 is the default format.
Remove an unused stray LVM1_SUPPORT ifdef.
diff --git a/man/pvcreate.8.in b/man/pvcreate.8.in
index 2f214e33..d0ba898e 100644
--- a/man/pvcreate.8.in
+++ b/man/pvcreate.8.in
@@ -11,7 +11,7 @@ pvcreate \- initialize a disk or partition for use by LVM
.RB [ \-v | \-\-verbose ]
.RB [ \-\-labelsector ]
.RB [ \-M | \-\-metadatatype type ]
-.RB [ \-\-metadatacopies #copies ]
+.RB [ \-\-[pv]metadatacopies #copies ]
.RB [ \-\-metadatasize size ]
.RB [ \-\-dataalignment alignment ]
.RB [ \-\-dataalignmentoffset alignment_offset ]
@@ -105,7 +105,7 @@ use \fBpvs -o +pe_start\fP . It will be a multiple of the requested
.BR \-\-dataalignmentoffset " alignment_offset"
Shift the start of the data area by this additional \fBalignment_offset\fP.
.TP
-.BR \-\-metadatacopies " copies"
+.BR \-\-[pv]metadatacopies " copies"
The number of metadata areas to set aside on each PV. Currently
this can be 0, 1 or 2.
If set to 2, two copies of the volume group metadata
diff --git a/man/vgchange.8.in b/man/vgchange.8.in
index c2b09baa..bacb3b48 100644
--- a/man/vgchange.8.in
+++ b/man/vgchange.8.in
@@ -113,7 +113,7 @@ removes this restriction: there is then no limit.
If you have a large number of physical volumes in
a volume group with metadata in lvm2 format,
for tool performance reasons, you should consider
-some use of \fB--metadatacopies 0\fP
+some use of \fB--pvmetadatacopies 0\fP
as described in \fBpvcreate(8)\fP.
.TP
.BR \-s ", " \-\-physicalextentsize " " \fIPhysicalExtentSize\fR[\fBbBsSkKmMgGtTpPeE\fR]
diff --git a/man/vgconvert.8.in b/man/vgconvert.8.in
index f5353a02..14e95f40 100644
--- a/man/vgconvert.8.in
+++ b/man/vgconvert.8.in
@@ -9,7 +9,7 @@ vgconvert \- convert volume group metadata format
.RB [ \-v | \-\-verbose ]
.RB [ \-\-labelsector ]
.RB [ \-M | \-\-metadatatype type ]
-.RB [ \-\-metadatacopies #copies ]
+.RB [ \-\-pvmetadatacopies #copies ]
.RB [ \-\-metadatasize size ]
.RB [ \-\-version ]
.IR VolumeGroupName " [" VolumeGroupName ...]
diff --git a/man/vgcreate.8.in b/man/vgcreate.8.in
index f00afcf6..1a4e7721 100644
--- a/man/vgcreate.8.in
+++ b/man/vgcreate.8.in
@@ -71,7 +71,7 @@ which removes this restriction: there is then no limit.
If you have a large number of physical volumes in
a volume group with metadata in lvm2 format,
for tool performance reasons, you should consider
-some use of \fB--metadatacopies 0\fP
+some use of \fB--pvmetadatacopies 0\fP
as described in \fBpvcreate(8)\fP.
.TP
.BR \-s ", " \-\-physicalextentsize " " \fIPhysicalExtentSize\fR[\fBbBsSkKmMgGtTpPeE\fR]
@@ -108,7 +108,7 @@ volume group. These options are further described in the pvcreate man page.
.TP
.BR \-\-metadatasize " size"
.TP
-.BR \-\-metadatacopies " copies"
+.BR \-\-pvmetadatacopies " copies"
.TP
.BR \-\-dataalignment " alignment"
.TP
diff --git a/man/vgextend.8.in b/man/vgextend.8.in
index 9cfc6310..7f34b96c 100644
--- a/man/vgextend.8.in
+++ b/man/vgextend.8.in
@@ -42,7 +42,7 @@ volume group. These options are further described in the pvcreate man page.
.TP
.BR \-\-metadatasize " size"
.TP
-.BR \-\-metadatacopies " copies"
+.BR \-\-pvmetadatacopies " copies"
.TP
.BR \-\-dataalignment " alignment"
.TP
diff --git a/test/t-pvcreate-usage.sh b/test/t-pvcreate-usage.sh
index a61d5cdc..01f13dbe 100755
--- a/test/t-pvcreate-usage.sh
+++ b/test/t-pvcreate-usage.sh
@@ -46,15 +46,18 @@ vgremove -ff $vg
not pvcreate --metadatacopies -1 $dev1
#COMM 'pvcreate accepts metadatacopies = 0, 1, 2'
-pvcreate --metadatacopies 0 $dev1
-pvcreate --metadatacopies 1 $dev2
-pvcreate --metadatacopies 2 $dev3
-check_pv_field_ $dev1 pv_mda_count 0
-check_pv_field_ $dev2 pv_mda_count 1
-check_pv_field_ $dev3 pv_mda_count 2
+for j in metadatacopies pvmetadatacopies
+do
+pvcreate --$j 0 $dev1
+pvcreate --$j 1 $dev2
+pvcreate --$j 2 $dev3
+check_pv_field_ $dev1 pv_mda_count 0
+check_pv_field_ $dev2 pv_mda_count 1
+check_pv_field_ $dev3 pv_mda_count 2
pvremove $dev1
pvremove $dev2
pvremove $dev3
+done
#COMM 'pvcreate rejects metadatacopies > 2'
not pvcreate --metadatacopies 3 $dev1
diff --git a/test/t-vgcreate-usage.sh b/test/t-vgcreate-usage.sh
index fb9904d8..44049581 100755
--- a/test/t-vgcreate-usage.sh
+++ b/test/t-vgcreate-usage.sh
@@ -105,17 +105,17 @@ do
pvremove -f $dev1
done
-# metadatacopies
+# pvmetadatacopies
for i in 1 2
do
- vgcreate --metadatacopies $i $vg $dev1
+ vgcreate --pvmetadatacopies $i $vg $dev1
check_pv_field_ $dev1 pv_mda_count $i
vgremove -f $vg
pvremove -f $dev1
done
not vgcreate --metadatacopies 0 $vg $dev1
pvcreate --metadatacopies 1 $dev2
-vgcreate --metadatacopies 0 $vg $dev1 $dev2
+vgcreate --pvmetadatacopies 0 $vg $dev1 $dev2
check_pv_field_ $dev1 pv_mda_count 0
check_pv_field_ $dev2 pv_mda_count 1
vgremove -f $vg
diff --git a/test/t-vgextend-usage.sh b/test/t-vgextend-usage.sh
index b47cedd4..039ab7e1 100644
--- a/test/t-vgextend-usage.sh
+++ b/test/t-vgextend-usage.sh
@@ -51,10 +51,10 @@ do
pvremove -f $dev1
done
-# metadatacopies
+# pvmetadatacopies
for i in 0 1 2
do
- vgextend --metadatacopies $i $vg $dev1
+ vgextend --pvmetadatacopies $i $vg $dev1
check_pv_field_ $dev1 pv_mda_count $i
vgreduce $vg $dev1
pvremove -f $dev1
diff --git a/tools/args.h b/tools/args.h
index 1204683d..3f8cda51 100644
--- a/tools/args.h
+++ b/tools/args.h
@@ -23,6 +23,7 @@ arg(quiet_ARG, '\0', "quiet", NULL, 0)
arg(physicalvolumesize_ARG, '\0', "setphysicalvolumesize", size_mb_arg, 0)
arg(ignorelockingfailure_ARG, '\0', "ignorelockingfailure", NULL, 0)
arg(nolocking_ARG, '\0', "nolocking", NULL, 0)
+arg(pvmetadatacopies_ARG, '\0', "pvmetadatacopies", int_arg, 0)
arg(metadatacopies_ARG, '\0', "metadatacopies", int_arg, 0)
arg(metadatasize_ARG, '\0', "metadatasize", size_mb_arg, 0)
arg(restorefile_ARG, '\0', "restorefile", string_arg, 0)
diff --git a/tools/commands.h b/tools/commands.h
index 728ebd56..b54809b8 100644
--- a/tools/commands.h
+++ b/tools/commands.h
@@ -479,7 +479,7 @@ xx(pvcreate,
"\t[-h|-?|--help] " "\n"
"\t[--labelsector sector] " "\n"
"\t[-M|--metadatatype 1|2]" "\n"
- "\t[--metadatacopies #copies]" "\n"
+ "\t[--pvmetadatacopies #copies]" "\n"
"\t[--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]]" "\n"
"\t[--dataalignment Alignment[bBsSkKmMgGtTpPeE]]" "\n"
"\t[--dataalignmentoffset AlignmentOffset[bBsSkKmMgGtTpPeE]]" "\n"
@@ -493,8 +493,9 @@ xx(pvcreate,
"\tPhysicalVolume [PhysicalVolume...]\n",
dataalignment_ARG, dataalignmentoffset_ARG, force_ARG, test_ARG,
- labelsector_ARG, metadatatype_ARG, metadatacopies_ARG, metadatasize_ARG,
- physicalvolumesize_ARG, restorefile_ARG, uuidstr_ARG, yes_ARG, zero_ARG)
+ labelsector_ARG, metadatatype_ARG, metadatacopies_ARG, pvmetadatacopies_ARG,
+ metadatasize_ARG, physicalvolumesize_ARG, restorefile_ARG, uuidstr_ARG,
+ yes_ARG, zero_ARG)
xx(pvdata,
"Display the on-disk metadata for physical volume(s)",
@@ -727,7 +728,7 @@ xx(vgconvert,
"\t[-h|--help] " "\n"
"\t[--labelsector sector] " "\n"
"\t[-M|--metadatatype 1|2]" "\n"
- "\t[--metadatacopies #copies]" "\n"
+ "\t[--pvmetadatacopies #copies]" "\n"
"\t[--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]]" "\n"
"\t[-t|--test] " "\n"
"\t[-v|--verbose] " "\n"
@@ -735,7 +736,7 @@ xx(vgconvert,
"\tVolumeGroupName [VolumeGroupName...]\n",
force_ARG, test_ARG, labelsector_ARG, metadatatype_ARG, metadatacopies_ARG,
- metadatasize_ARG )
+ pvmetadatacopies_ARG, metadatasize_ARG )
xx(vgcreate,
"Create a volume group",
@@ -760,7 +761,8 @@ xx(vgcreate,
addtag_ARG, alloc_ARG, autobackup_ARG, clustered_ARG, maxlogicalvolumes_ARG,
maxphysicalvolumes_ARG, metadatatype_ARG, physicalextentsize_ARG, test_ARG,
force_ARG, yes_ARG, zero_ARG, labelsector_ARG, metadatasize_ARG,
- metadatacopies_ARG, dataalignment_ARG, dataalignmentoffset_ARG)
+ pvmetadatacopies_ARG, metadatacopies_ARG, dataalignment_ARG,
+ dataalignmentoffset_ARG)
xx(vgdisplay,
"Display volume group information",
@@ -826,8 +828,8 @@ xx(vgextend,
autobackup_ARG, test_ARG,
force_ARG, yes_ARG, zero_ARG, labelsector_ARG, metadatatype_ARG,
- metadatasize_ARG, metadatacopies_ARG, dataalignment_ARG,
- dataalignmentoffset_ARG)
+ metadatasize_ARG, pvmetadatacopies_ARG, metadatacopies_ARG,
+ dataalignment_ARG, dataalignmentoffset_ARG)
xx(vgimport,
"Register exported volume group with system",
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index 80c1a469..31ebd124 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -837,7 +837,8 @@ static int _get_settings(struct cmd_context *cmd)
if (!_merge_synonym(cmd, resizable_ARG, resizeable_ARG) ||
!_merge_synonym(cmd, allocation_ARG, allocatable_ARG) ||
!_merge_synonym(cmd, allocation_ARG, resizeable_ARG) ||
- !_merge_synonym(cmd, virtualoriginsize_ARG, virtualsize_ARG))
+ !_merge_synonym(cmd, virtualoriginsize_ARG, virtualsize_ARG) ||
+ !_merge_synonym(cmd, metadatacopies_ARG, pvmetadatacopies_ARG))
return EINVALID_CMD_LINE;
/* Zero indicates success */
diff --git a/tools/toollib.c b/tools/toollib.c
index 92115763..c48314fa 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -1305,7 +1305,7 @@ int pvcreate_validate_params(struct cmd_context *cmd,
}
if (!(cmd->fmt->features & FMT_MDAS) &&
- (arg_count(cmd, metadatacopies_ARG) ||
+ (arg_count(cmd, pvmetadatacopies_ARG) ||
arg_count(cmd, metadatasize_ARG) ||
arg_count(cmd, dataalignment_ARG) ||
arg_count(cmd, dataalignmentoffset_ARG))) {
@@ -1314,8 +1314,8 @@ int pvcreate_validate_params(struct cmd_context *cmd,
return 0;
}
- if (arg_count(cmd, metadatacopies_ARG) &&
- arg_int_value(cmd, metadatacopies_ARG, -1) > 2) {
+ if (arg_count(cmd, pvmetadatacopies_ARG) &&
+ arg_int_value(cmd, pvmetadatacopies_ARG, -1) > 2) {
log_error("Metadatacopies may only be 0, 1 or 2");
return 0;
}
@@ -1371,7 +1371,7 @@ int pvcreate_validate_params(struct cmd_context *cmd,
"metadata/pvmetadatasize",
DEFAULT_PVMETADATASIZE);
- pp->pvmetadatacopies = arg_int_value(cmd, metadatacopies_ARG, -1);
+ pp->pvmetadatacopies = arg_int_value(cmd, pvmetadatacopies_ARG, -1);
if (pp->pvmetadatacopies < 0)
pp->pvmetadatacopies = find_config_tree_int(cmd,
"metadata/pvmetadatacopies",
diff --git a/tools/vgconvert.c b/tools/vgconvert.c
index 2c41402e..288ccd7e 100644
--- a/tools/vgconvert.c
+++ b/tools/vgconvert.c
@@ -57,7 +57,7 @@ static int vgconvert_single(struct cmd_context *cmd, const char *vg_name,
"metadata/pvmetadatasize",
DEFAULT_PVMETADATASIZE);
- pvmetadatacopies = arg_int_value(cmd, metadatacopies_ARG, -1);
+ pvmetadatacopies = arg_int_value(cmd, pvmetadatacopies_ARG, -1);
if (pvmetadatacopies < 0)
pvmetadatacopies =
find_config_tree_int(cmd,
@@ -211,15 +211,20 @@ int vgconvert(struct cmd_context *cmd, int argc, char **argv)
return EINVALID_CMD_LINE;
}
+ if (arg_count(cmd, metadatacopies_ARG)) {
+ log_error("Invalid option --metadatacopies, "
+ "use --pvmetadatacopies instead.");
+ return EINVALID_CMD_LINE;
+ }
if (!(cmd->fmt->features & FMT_MDAS) &&
- (arg_count(cmd, metadatacopies_ARG) ||
+ (arg_count(cmd, pvmetadatacopies_ARG) ||
arg_count(cmd, metadatasize_ARG))) {
log_error("Metadata parameters only apply to text format");
return EINVALID_CMD_LINE;
}
- if (arg_count(cmd, metadatacopies_ARG) &&
- arg_int_value(cmd, metadatacopies_ARG, -1) > 2) {
+ if (arg_count(cmd, pvmetadatacopies_ARG) &&
+ arg_int_value(cmd, pvmetadatacopies_ARG, -1) > 2) {
log_error("Metadatacopies may only be 0, 1 or 2");
return EINVALID_CMD_LINE;
}
diff --git a/tools/vgcreate.c b/tools/vgcreate.c
index ff5f5aee..858812b5 100644
--- a/tools/vgcreate.c
+++ b/tools/vgcreate.c
@@ -35,6 +35,11 @@ int vgcreate(struct cmd_context *cmd, int argc, char **argv)
argc--;
argv++;
+ if (arg_count(cmd, metadatacopies_ARG)) {
+ log_error("Invalid option --metadatacopies, "
+ "use --pvmetadatacopies instead.");
+ return EINVALID_CMD_LINE;
+ }
fill_default_pvcreate_params(&pp);
if (!pvcreate_validate_params(cmd, argc, argv, &pp)) {
return EINVALID_CMD_LINE;
diff --git a/tools/vgextend.c b/tools/vgextend.c
index 76554e75..178def60 100644
--- a/tools/vgextend.c
+++ b/tools/vgextend.c
@@ -32,6 +32,11 @@ int vgextend(struct cmd_context *cmd, int argc, char **argv)
argc--;
argv++;
+ if (arg_count(cmd, metadatacopies_ARG)) {
+ log_error("Invalid option --metadatacopies, "
+ "use --pvmetadatacopies instead.");
+ return EINVALID_CMD_LINE;
+ }
fill_default_pvcreate_params(&pp);
if (!pvcreate_validate_params(cmd, argc, argv, &pp)) {
return EINVALID_CMD_LINE;