master - misc: after releasing a PV segment, merge it with any adjacent free space
by Jonathan Brassow
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=7028fd31a0f2d2...
Commit: 7028fd31a0f2d2234ffdd1b94ea6ae6128ca9362
Parent: b35fb0b15af1d87693be286f0630e95622056a77
Author: Jonathan Brassow <jbrassow(a)redhat.com>
AuthorDate: Wed Jun 25 22:04:58 2014 -0500
Committer: Jonathan Brassow <jbrassow(a)redhat.com>
CommitterDate: Wed Jun 25 22:04:58 2014 -0500
misc: after releasing a PV segment, merge it with any adjacent free space
Previously, the seg_pvs used to track free and allocated space where left
in place after 'release_pv_segment' was called to free space from an LV.
Now, an attempt is made to combine any adjacent seg_pvs that also track
free space. Usually, this doesn't provide much benefit, but in a case
where one command might free some space and then do an allocation, it
can make a difference. One such case is during a repair of a RAID LV,
where one PV of a multi-PV image fails. This new behavior is used when
the replacement image can be allocated from the remaining space of the
PV that did not fail. (First the entire image with the failed PV is
removed. Then the image is reallocated from the remaining PVs.)
---
lib/metadata/pv_manip.c | 67 ++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 64 insertions(+), 3 deletions(-)
diff --git a/lib/metadata/pv_manip.c b/lib/metadata/pv_manip.c
index 2717031..2cc7892 100644
--- a/lib/metadata/pv_manip.c
+++ b/lib/metadata/pv_manip.c
@@ -246,8 +246,65 @@ int discard_pv_segment(struct pv_segment *peg, uint32_t discard_area_reduction)
return 1;
}
+static int _merge_free_pv_segment(struct pv_segment *peg)
+{
+ struct dm_list *l;
+ struct pv_segment *merge_peg;
+
+ if (peg->lvseg) {
+ log_error(INTERNAL_ERROR
+ "_merge_free_pv_seg called on a"
+ " segment that is not free.");
+ return 0;
+ }
+
+ /*
+ * FIXME:
+ * Should we free the list element once it is deleted
+ * from the list? I think not. It is likely part of
+ * a mempool.
+ */
+ /* Attempt to merge with Free space before */
+ if ((l = dm_list_prev(&peg->pv->segments, &peg->list))) {
+ merge_peg = dm_list_item(l, struct pv_segment);
+ if (!merge_peg->lvseg) {
+ merge_peg->len += peg->len;
+ dm_list_del(&peg->list);
+ peg = merge_peg;
+ }
+ }
+
+ /* Attempt to merge with Free space after */
+ if ((l = dm_list_next(&peg->pv->segments, &peg->list))) {
+ merge_peg = dm_list_item(l, struct pv_segment);
+ if (!merge_peg->lvseg) {
+ peg->len += merge_peg->len;
+ dm_list_del(&merge_peg->list);
+ }
+ }
+
+ return 1;
+}
+
+/*
+ * release_pv_segment
+ * @peg
+ * @area_reduction
+ *
+ * WARNING: When release_pv_segment is called, the freed space may be
+ * merged into the 'pv_segment's before and after it in the
+ * list if they are also free. Thus, any iterators of the
+ * 'pv->segments' list that call this function must be aware
+ * that the list can change in a way that is unsafe even for
+ * *_safe iterators. Restart the iterator in these cases.
+ *
+ * Returns: 1 on success, 0 on failure
+ */
int release_pv_segment(struct pv_segment *peg, uint32_t area_reduction)
{
+ struct dm_list *l;
+ struct pv_segment *merge_peg;
+
if (!peg->lvseg) {
log_error("release_pv_segment with unallocated segment: "
"%s PE %" PRIu32, pv_dev_name(peg->pv), peg->pe);
@@ -261,9 +318,7 @@ int release_pv_segment(struct pv_segment *peg, uint32_t area_reduction)
peg->lvseg = NULL;
peg->lv_area = 0;
- /* FIXME merge free space */
-
- return 1;
+ return _merge_free_pv_segment(peg);
}
if (!pv_split_segment(peg->lvseg->lv->vg->vgmem,
@@ -271,6 +326,12 @@ int release_pv_segment(struct pv_segment *peg, uint32_t area_reduction)
area_reduction, NULL))
return_0;
+ /* The segment after 'peg' now holds free space, try to merge it */
+ if ((l = dm_list_next(&peg->pv->segments, &peg->list))) {
+ merge_peg = dm_list_item(l, struct pv_segment);
+ return _merge_free_pv_segment(merge_peg);
+ }
+
return 1;
}
9 years, 9 months
master - raid/misc: Allow creation of parallel areas by LV vs segment
by Jonathan Brassow
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=b35fb0b15af1d8...
Commit: b35fb0b15af1d87693be286f0630e95622056a77
Parent: 1f1675b059d65768524398791b2e505b7dfe2497
Author: Jonathan Brassow <jbrassow(a)redhat.com>
AuthorDate: Wed Jun 25 21:20:41 2014 -0500
Committer: Jonathan Brassow <jbrassow(a)redhat.com>
CommitterDate: Wed Jun 25 21:20:41 2014 -0500
raid/misc: Allow creation of parallel areas by LV vs segment
I've changed build_parallel_areas_from_lv to take a new parameter
that allows the caller to build parallel areas by LV vs by segment.
Previously, the function created a list of parallel areas for each
segment in the given LV. When it came time for allocation, the
parallel areas were honored on a segment basis. This was problematic
for RAID because any new RAID image must avoid being placed on any
PVs used by other images in the RAID. For example, if we have a
linear LV that has half its space on one PV and half on another, we
do not want an up-convert to use either of those PVs. It should
especially not wind up with the following, where the first portion
of one LV is paired up with the second portion of the other:
------PV1------- ------PV2-------
[ 2of2 image_1 ] [ 1of2 image_1 ]
[ 1of2 image_0 ] [ 2of2 image_0 ]
---------------- ----------------
Previously, it was possible for this to happen. The change makes
it so that the returned parallel areas list contains one "super"
segment (seg_pvs) with a list of all the PVs from every actual
segment in the given LV and covering the entire logical extent range.
This change allows RAID conversions to function properly when there
are existing images that contain multiple segments that span more
than one PV.
---
WHATS_NEW | 1 +
lib/metadata/lv_alloc.h | 3 +-
lib/metadata/lv_manip.c | 55 +++++++++++++++++++++--------
lib/metadata/mirror.c | 6 ++--
lib/metadata/raid_manip.c | 2 +-
test/shell/lvconvert-raid-allocation.sh | 57 +++++++++++++++++++++++++++++++
test/shell/lvconvert-raid.sh | 22 ------------
7 files changed, 104 insertions(+), 42 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 3ab7046..05b3c7c 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.108 -
=================================
+ New RAID images now avoid allocation on any PVs in the same parent RAID LV.
Always reevaluate filters just before creating PV.
Version 2.02.107 - 23rd June 2014
diff --git a/lib/metadata/lv_alloc.h b/lib/metadata/lv_alloc.h
index f99e1a1..9824c67 100644
--- a/lib/metadata/lv_alloc.h
+++ b/lib/metadata/lv_alloc.h
@@ -86,6 +86,7 @@ int lv_add_virtual_segment(struct logical_volume *lv, uint64_t status,
void alloc_destroy(struct alloc_handle *ah);
struct dm_list *build_parallel_areas_from_lv(struct logical_volume *lv,
- unsigned use_pvmove_parent_lv);
+ unsigned use_pvmove_parent_lv,
+ unsigned create_single_list);
#endif
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 069e5a6..05293f1 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -4664,15 +4664,30 @@ static int _add_pvs(struct cmd_context *cmd, struct pv_segment *peg,
}
/*
- * Construct dm_list of segments of LVs showing which PVs they use.
- * For pvmove we use the *parent* LV so we can pick up stripes & existing mirrors etc.
+ * build_parallel_areas_from_lv
+ * @lv
+ * @use_pvmove_parent_lv
+ * @create_single_list
+ *
+ * For each segment in an LV, create a list of PVs used by the segment.
+ * Thus, the returned list is really a list of segments (seg_pvs)
+ * containing a list of PVs that are in use by that segment.
+ *
+ * use_pvmove_parent_lv: For pvmove we use the *parent* LV so we can
+ * pick up stripes & existing mirrors etc.
+ * create_single_list : Instead of creating a list of segments that
+ * each contain a list of PVs, return a list
+ * containing just one segment (i.e. seg_pvs)
+ * that contains a list of all the PVs used by
+ * the entire LV and all it's segments.
*/
struct dm_list *build_parallel_areas_from_lv(struct logical_volume *lv,
- unsigned use_pvmove_parent_lv)
+ unsigned use_pvmove_parent_lv,
+ unsigned create_single_list)
{
struct cmd_context *cmd = lv->vg->cmd;
struct dm_list *parallel_areas;
- struct seg_pvs *spvs;
+ struct seg_pvs *spvs = NULL;
uint32_t current_le = 0;
uint32_t raid_multiple;
struct lv_segment *seg = first_seg(lv);
@@ -4685,19 +4700,20 @@ struct dm_list *build_parallel_areas_from_lv(struct logical_volume *lv,
dm_list_init(parallel_areas);
do {
- if (!(spvs = dm_pool_zalloc(cmd->mem, sizeof(*spvs)))) {
- log_error("allocation failed");
- return NULL;
- }
-
- dm_list_init(&spvs->pvs);
+ if (!spvs || !create_single_list) {
+ if (!(spvs = dm_pool_zalloc(cmd->mem, sizeof(*spvs)))) {
+ log_error("allocation failed");
+ return NULL;
+ }
+ dm_list_init(&spvs->pvs);
+ dm_list_add(parallel_areas, &spvs->list);
+ }
spvs->le = current_le;
spvs->len = lv->le_count - current_le;
- dm_list_add(parallel_areas, &spvs->list);
-
- if (use_pvmove_parent_lv && !(seg = find_seg_by_le(lv, current_le))) {
+ if (use_pvmove_parent_lv &&
+ !(seg = find_seg_by_le(lv, current_le))) {
log_error("Failed to find segment for %s extent %" PRIu32,
lv->name, current_le);
return 0;
@@ -4718,7 +4734,16 @@ struct dm_list *build_parallel_areas_from_lv(struct logical_volume *lv,
seg->area_count - seg->segtype->parity_devs : 1;
} while ((current_le * raid_multiple) < lv->le_count);
- /* FIXME Merge adjacent segments with identical PV lists (avoids need for contiguous allocation attempts between successful allocations) */
+ if (create_single_list) {
+ spvs->le = 0;
+ spvs->len = lv->le_count;
+ }
+
+ /*
+ * FIXME: Merge adjacent segments with identical PV lists
+ * (avoids need for contiguous allocation attempts between
+ * successful allocations)
+ */
return parallel_areas;
}
@@ -5165,7 +5190,7 @@ int split_parent_segments_for_layer(struct cmd_context *cmd,
uint32_t s;
struct dm_list *parallel_areas;
- if (!(parallel_areas = build_parallel_areas_from_lv(layer_lv, 0)))
+ if (!(parallel_areas = build_parallel_areas_from_lv(layer_lv, 0, 0)))
return_0;
/* Loop through all LVs except itself */
diff --git a/lib/metadata/mirror.c b/lib/metadata/mirror.c
index 484b1f1..985bde0 100644
--- a/lib/metadata/mirror.c
+++ b/lib/metadata/mirror.c
@@ -1687,7 +1687,7 @@ static int _add_mirrors_that_preserve_segments(struct logical_volume *lv,
uint32_t adjusted_region_size;
int r = 1;
- if (!(parallel_areas = build_parallel_areas_from_lv(lv, 1)))
+ if (!(parallel_areas = build_parallel_areas_from_lv(lv, 1, 0)))
return_0;
if (!(segtype = get_segtype_from_string(cmd, "mirror")))
@@ -1971,7 +1971,7 @@ int add_mirror_log(struct cmd_context *cmd, struct logical_volume *lv,
return 1;
}
- if (!(parallel_areas = build_parallel_areas_from_lv(lv, 0)))
+ if (!(parallel_areas = build_parallel_areas_from_lv(lv, 0, 0)))
return_0;
if (!(segtype = get_segtype_from_string(cmd, "mirror")))
@@ -2044,7 +2044,7 @@ int add_mirror_images(struct cmd_context *cmd, struct logical_volume *lv,
* allocate destination extents
*/
- if (!(parallel_areas = build_parallel_areas_from_lv(lv, 0)))
+ if (!(parallel_areas = build_parallel_areas_from_lv(lv, 0, 0)))
return_0;
if (!(segtype = get_segtype_from_string(cmd, "mirror")))
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index cdfbc84..0303654 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -392,7 +392,7 @@ static int _alloc_image_components(struct logical_volume *lv,
if (!lvl_array)
return_0;
- if (!(parallel_areas = build_parallel_areas_from_lv(lv, 0)))
+ if (!(parallel_areas = build_parallel_areas_from_lv(lv, 0, 1)))
return_0;
if (seg_is_linear(seg))
diff --git a/test/shell/lvconvert-raid-allocation.sh b/test/shell/lvconvert-raid-allocation.sh
new file mode 100644
index 0000000..804317b
--- /dev/null
+++ b/test/shell/lvconvert-raid-allocation.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Copyright (C) 2011-2012 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+. lib/inittest
+
+aux have_raid 1 3 0 || skip
+
+aux prepare_pvs 5
+vgcreate -s 256k $vg $(cat DEVICES)
+
+# Start with linear on 2 PV and ensure that converting to
+# RAID is not allowed to reuse PVs for different images. (Bug 1113180)
+lvcreate -l 4 -n $lv1 $vg "$dev1:0-1" "$dev2:0-1"
+not lvconvert --type raid1 -m 1 $vg/$lv1 "$dev1" "$dev2"
+not lvconvert --type raid1 -m 1 $vg/$lv1 "$dev1" "$dev3:0-2"
+lvconvert --type raid1 -m 1 $vg/$lv1 "$dev3"
+lvconvert -m 0 $vg/$lv1
+# RAID conversions are not honoring allocation policy!
+# lvconvert --type raid1 -m 1 --alloc anywhere $vg/$lv1 "$dev1" "$dev2"
+lvremove -ff $vg
+
+# Setup 2-way RAID1 LV to spread across 4 devices.
+# For each image:
+# - metadata LV + 1 image extent (2 total extents) on one PV
+# - 2 image extents on the other PV
+# Then attempt allocation of another image from 2 extents on
+# a 5th PV and the remainder of the rest of already used PVs.
+#
+# This should fail because there is insufficient space on the
+# non-parallel PV (i.e. there is not enough space for the image
+# if it doesn't share a PV with another image).
+lvcreate --type raid1 -m 1 -l 3 -n $lv1 $vg \
+ "$dev1:0-1" "$dev2:0-1" "$dev3:0-1" "$dev4:0-1"
+aux wait_for_sync $vg $lv1
+# Should not be enough non-overlapping space.
+not lvconvert -m +1 $vg/$lv1 \
+ "$dev5:0-1" "$dev1" "$dev2" "$dev3" "$dev4"
+
+lvconvert -m +1 $vg/$lv1 "$dev5"
+lvconvert -m 0 $vg/$lv1
+
+# Should work due to '--alloc anywhere'
+# RAID conversion not honoring allocation policy!
+#lvconvert -m +1 --alloc anywhere $vg/$lv1 \
+# "$dev5:0-1" "$dev1" "$dev2" "$dev3" "$dev4"
+lvremove -ff $vg
+
+
+vgremove -ff $vg
diff --git a/test/shell/lvconvert-raid.sh b/test/shell/lvconvert-raid.sh
index 8bd56ec..6f17303 100644
--- a/test/shell/lvconvert-raid.sh
+++ b/test/shell/lvconvert-raid.sh
@@ -202,26 +202,4 @@ for i in {1..3}; do
lvremove -ff $vg
done
-# Setup 2-way RAID1 LV to spread across 4 devices.
-# For each image:
-# - metadata LV + 1 image extent (2 total extents) on one PV
-# - 2 image extents on the other PV
-# Then attempt allocation of another image from 2 extents on
-# a 5th PV and the remainder of the rest of already used PVs.
-#
-# This should fail because there is insufficient space on the
-# non-parallel PV (i.e. there is not enough space for the image
-# if it doesn't share a PV with another image).
-lvcreate --type raid1 -m 1 -l 3 -n $lv1 $vg \
- "$dev1:0-1" "$dev2:0-1" "$dev3:0-1" "$dev4:0-1"
-aux wait_for_sync $vg $lv1
-# Should not be enough non-overlapping space.
-not lvconvert -m +1 $vg/$lv1 \
- "$dev5:0-1" "$dev1" "$dev2" "$dev3" "$dev4"
-# Should work due to '--alloc anywhere'
-lvconvert -m +1 --alloc anywhere $vg/$lv1 \
- "$dev5:0-1" "$dev1" "$dev2" "$dev3" "$dev4"
-lvremove -ff $vg
-
-
vgremove -ff $vg
9 years, 9 months
master - test: Test addition to show incorrect allocator behavior
by Jonathan Brassow
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=1f1675b059d657...
Commit: 1f1675b059d65768524398791b2e505b7dfe2497
Parent: e80884cd080cad7e10be4588e3493b9000649426
Author: Jonathan Brassow <jbrassow(a)redhat.com>
AuthorDate: Sat Jun 21 15:33:52 2014 -0500
Committer: Jonathan Brassow <jbrassow(a)redhat.com>
CommitterDate: Sat Jun 21 15:33:52 2014 -0500
test: Test addition to show incorrect allocator behavior
If a RAID LV has images that are spread across more than one PV
and you allocate a new image that requires more than one PV,
parallel_areas is only honored for one segment. This commit
adds a test for this condition.
---
test/shell/lvconvert-raid.sh | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/test/shell/lvconvert-raid.sh b/test/shell/lvconvert-raid.sh
index 6f17303..8bd56ec 100644
--- a/test/shell/lvconvert-raid.sh
+++ b/test/shell/lvconvert-raid.sh
@@ -202,4 +202,26 @@ for i in {1..3}; do
lvremove -ff $vg
done
+# Setup 2-way RAID1 LV to spread across 4 devices.
+# For each image:
+# - metadata LV + 1 image extent (2 total extents) on one PV
+# - 2 image extents on the other PV
+# Then attempt allocation of another image from 2 extents on
+# a 5th PV and the remainder of the rest of already used PVs.
+#
+# This should fail because there is insufficient space on the
+# non-parallel PV (i.e. there is not enough space for the image
+# if it doesn't share a PV with another image).
+lvcreate --type raid1 -m 1 -l 3 -n $lv1 $vg \
+ "$dev1:0-1" "$dev2:0-1" "$dev3:0-1" "$dev4:0-1"
+aux wait_for_sync $vg $lv1
+# Should not be enough non-overlapping space.
+not lvconvert -m +1 $vg/$lv1 \
+ "$dev5:0-1" "$dev1" "$dev2" "$dev3" "$dev4"
+# Should work due to '--alloc anywhere'
+lvconvert -m +1 --alloc anywhere $vg/$lv1 \
+ "$dev5:0-1" "$dev1" "$dev2" "$dev3" "$dev4"
+lvremove -ff $vg
+
+
vgremove -ff $vg
9 years, 10 months
master - filters: always reevaluate filter before creating a PV
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e80884cd080cad...
Commit: e80884cd080cad7e10be4588e3493b9000649426
Parent: e329c3146d91aba94f77a6d5da149e31b20ce60b
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Wed Jun 25 16:19:27 2014 +0200
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Wed Jun 25 16:24:28 2014 +0200
filters: always reevaluate filter before creating a PV
...to avoid using cached value (persistent filter) and therefore
not noticing any change made after last scan/filtering - the state
of the device may have changed, for example new signatures added.
$ lvm dumpconfig --type diff
allocation {
use_blkid_wiping=0
}
devices {
obtain_device_list_from_udev=0
}
$ cat /etc/lvm/cache/.cache | grep sda
$ vgscan
Reading all physical volumes. This may take a while...
Found volume group "fedora" using metadata type lvm2
$ cat /etc/lvm/cache/.cache | grep sda
"/dev/sda",
$ parted /dev/sda mklabel gpt
Information: You may need to update /etc/fstab.
$ parted /dev/sda print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sda: 134MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
$ cat /etc/lvm/cache/.cache | grep sda
"/dev/sda",
====
Before this patch:
$ pvcreate /dev/sda
Physical volume "/dev/sda" successfully created
With this patch applied:
$ pvcreate /dev/sda
Physical volume /dev/sda not found
Device /dev/sda not found (or ignored by filtering).
---
WHATS_NEW | 1 +
lib/metadata/metadata.c | 7 +++++++
2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 9db42d2..3ab7046 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.108 -
=================================
+ Always reevaluate filters just before creating PV.
Version 2.02.107 - 23rd June 2014
=================================
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 599ebb6..0a6e9e9 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -1337,6 +1337,13 @@ static int pvcreate_check(struct cmd_context *cmd, const char *name,
/* FIXME Check partition type is LVM unless --force is given */
+ /*
+ * Make sure we don't overwrite any existing signature
+ * that may have been created after last time we did filtering.
+ */
+ if (cmd->filter->wipe)
+ cmd->filter->wipe(cmd->filter);
+
/* Is there a pv here already? */
pv = find_pv_by_name(cmd, name, 1, 1);
9 years, 10 months
master - coverity: mark new switch cases with 'fall through' comment for coverity to stop complaining
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e329c3146d91ab...
Commit: e329c3146d91aba94f77a6d5da149e31b20ce60b
Parent: 3208396ce5ef1c754e8e164f84dbc97727ddb5a4
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Wed Jun 25 08:51:37 2014 +0200
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Wed Jun 25 08:51:37 2014 +0200
coverity: mark new switch cases with 'fall through' comment for coverity to stop complaining
---
libdm/libdm-report.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c
index 180bb9b..00c3d3f 100644
--- a/libdm/libdm-report.c
+++ b/libdm/libdm-report.c
@@ -1354,6 +1354,7 @@ static int _compare_selection_field(struct dm_report *rh,
*/
if (*(const uint64_t *) f->sort_value > DM_PERCENT_100)
return 0;
+ /* fall through */
case DM_REPORT_FIELD_TYPE_NUMBER:
r = _cmp_field_int(field_id, *(const uint64_t *) f->sort_value, fs->v.i, fs->flags);
break;
@@ -1839,7 +1840,7 @@ static const char *_tok_value_regex(struct dm_report *rh,
case '(': c = ')'; break;
case '{': c = '}'; break;
case '[': c = ']'; break;
- case '"':
+ case '"': /* fall through */
case '\'': c = *s; break;
default: c = 0;
}
@@ -2075,7 +2076,9 @@ static const char *_tok_value(struct dm_report *rh,
break;
case DM_REPORT_FIELD_TYPE_NUMBER:
+ /* fall through */
case DM_REPORT_FIELD_TYPE_SIZE:
+ /* fall through */
case DM_REPORT_FIELD_TYPE_PERCENT:
if (!(s = _tok_value_number(s, begin, end))) {
log_error("Failed to parse numeric value "
9 years, 10 months
master - coverity: fix issues reported by coverity
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=3208396ce5ef1c...
Commit: 3208396ce5ef1c754e8e164f84dbc97727ddb5a4
Parent: 29ca0573baa0172ae9e1b137c51c39446baa9ee9
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Tue Jun 24 14:58:53 2014 +0200
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Tue Jun 24 14:58:53 2014 +0200
coverity: fix issues reported by coverity
---
daemons/clvmd/clvmd-cman.c | 10 +++++-----
lib/commands/toolcontext.c | 5 ++++-
lib/config/config.c | 3 +--
lib/metadata/metadata.c | 2 +-
lib/metadata/raid_manip.c | 2 +-
libdaemon/server/daemon-server.c | 3 ++-
libdm/libdm-report.c | 12 ++++++------
7 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/daemons/clvmd/clvmd-cman.c b/daemons/clvmd/clvmd-cman.c
index e41d0cf..9efa92d 100644
--- a/daemons/clvmd/clvmd-cman.c
+++ b/daemons/clvmd/clvmd-cman.c
@@ -110,12 +110,12 @@ static void _cluster_init_completed(void)
clvmd_cluster_init_completed();
}
-static int _get_main_cluster_fd()
+static int _get_main_cluster_fd(void)
{
return cman_get_fd(c_handle);
}
-static int _get_num_nodes()
+static int _get_num_nodes(void)
{
int i;
int nnodes = 0;
@@ -243,7 +243,7 @@ static void _add_up_node(const char *csid)
DEBUGLOG("Added new node %d to updown list\n", nodeid);
}
-static void _cluster_closedown()
+static void _cluster_closedown(void)
{
dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
cman_finish(c_handle);
@@ -282,7 +282,7 @@ static void count_clvmds_running(void)
}
/* Get a list of active cluster members */
-static void get_members()
+static void get_members(void)
{
int retnodes;
int status;
@@ -380,7 +380,7 @@ static int nodeid_from_csid(const char *csid)
return nodeid;
}
-static int _is_quorate()
+static int _is_quorate(void)
{
return cman_is_quorate(c_handle);
}
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 326bfe0..18fa12d 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -642,7 +642,10 @@ static int _init_profiles(struct cmd_context *cmd)
dm_list_init(&cmd->profile_params->profiles);
}
- dm_strncpy(cmd->profile_params->dir, dir, sizeof(cmd->profile_params->dir));
+ if (!(dm_strncpy(cmd->profile_params->dir, dir, sizeof(cmd->profile_params->dir)))) {
+ log_error("_init_profiles: dm_strncpy failed");
+ return 0;
+ }
return 1;
}
diff --git a/lib/config/config.c b/lib/config/config.c
index ecb674e..2ed3db6 100644
--- a/lib/config/config.c
+++ b/lib/config/config.c
@@ -334,7 +334,7 @@ struct dm_config_tree *remove_config_tree_by_source(struct cmd_context *cmd,
struct cft_check_handle *get_config_tree_check_handle(struct cmd_context *cmd,
struct dm_config_tree *cft)
{
- struct config_source *cs = dm_config_get_custom(cft);
+ struct config_source *cs;
if (!(cs = dm_config_get_custom(cft)))
return NULL;
@@ -438,7 +438,6 @@ static int _override_config_tree_from_metadata_profile(struct cmd_context *cmd,
if (cs->type == CONFIG_PROFILE_COMMAND) {
cft_previous = cft;
cft = cft->cascade;
- cs = dm_config_get_custom(cft);
}
cs = dm_config_get_custom(cft);
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 5c0a474..599ebb6 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -370,7 +370,7 @@ static int _move_pv(struct volume_group *vg_from, struct volume_group *vg_to,
/* FIXME: handle tags */
if (!(pvl = find_pv_in_vg(vg_from, pv_name))) {
if (!enforce_pv_from_source &&
- (pvl = find_pv_in_vg(vg_to, pv_name)))
+ find_pv_in_vg(vg_to, pv_name))
/*
* PV has already been moved. This can happen if an
* LV is being moved that has multiple sub-LVs on the
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 4c13b66..cdfbc84 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -865,7 +865,7 @@ static int _raid_extract_images(struct logical_volume *lv, uint32_t new_count,
(first_seg(seg_metalv(seg, s))->segtype != error_segtype))
continue;
- if (target_pvs && !dm_list_empty(target_pvs) &&
+ if (!dm_list_empty(target_pvs) &&
(target_pvs != &lv->vg->pvs)) {
/*
* User has supplied a list of PVs, but we
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index 8ed3cce..3b390a3 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -497,7 +497,8 @@ static void reap(daemon_state s, int waiting)
while (ts) {
if (waiting || !ts->active) {
- pthread_join(ts->client.thread_id, &rv);
+ if ((errno = pthread_join(ts->client.thread_id, &rv)))
+ ERROR(&s, "pthread_join failed: %s", strerror(errno));
last->next = ts->next;
dm_free(ts);
} else
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c
index 957a4c9..180bb9b 100644
--- a/libdm/libdm-report.c
+++ b/libdm/libdm-report.c
@@ -1050,14 +1050,14 @@ struct dm_report *dm_report_init(uint32_t *report_types,
struct dm_report *rh;
const struct dm_report_object_type *type;
+ if (_contains_reserved_report_type(types))
+ return_NULL;
+
if (!(rh = dm_zalloc(sizeof(*rh)))) {
log_error("dm_report_init: dm_malloc failed");
- return 0;
+ return NULL;
}
- if (_contains_reserved_report_type(types))
- return_0;
-
/*
* rh->report_types is updated in _parse_fields() and _parse_keys()
* to contain all types corresponding to the fields specified by
@@ -1432,7 +1432,7 @@ int dm_report_object(struct dm_report *rh, void *object)
if (!rh) {
log_error(INTERNAL_ERROR "dm_report handler is NULL.");
- goto out;
+ return 0;
}
if (rh->flags & RH_ALREADY_REPORTED)
@@ -1440,7 +1440,7 @@ int dm_report_object(struct dm_report *rh, void *object)
if (!(row = dm_pool_zalloc(rh->mem, sizeof(*row)))) {
log_error("dm_report_object: struct row allocation failed");
- goto out;
+ return 0;
}
row->rh = rh;
9 years, 10 months
v2_02_107 annotated tag has been created
by Alasdair Kergon
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=3cfd48c0960f99...
Commit: 3cfd48c0960f99eca3cd6b667c5b2980882a376b
Parent: 0000000000000000000000000000000000000000
Author: Alasdair G Kergon <agk(a)redhat.com>
AuthorDate: 2014-06-23 13:51 +0000
Committer: Alasdair G Kergon <agk(a)redhat.com>
CommitterDate: 2014-06-23 13:51 +0000
annotated tag: v2_02_107 has been created
at 3cfd48c0960f99eca3cd6b667c5b2980882a376b (tag)
tagging 0bb6ffb81fac3b51fb7986aa29b84687499a1c78 (commit)
replaces v2_02_106
Release 2.02.107.
430 files changed, 9745 insertions(+), 4434 deletions(-)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
iEYEABECAAYFAlOoMQEACgkQIoGRwVZ+LBeAngCePncRfLAS+058cy4pKZ4z11iS
CisAnjlEe5sS8yGBry1qP2c5IocoN7nO
=U2OG
-----END PGP SIGNATURE-----
Alasdair G Kergon (25):
post-release
alloc: Refactor area reservation code.
alloc: Access alloc_parms from alloc_state.
alloc: Introduce A_POSITIONAL_FILL.
alloc: Correct existing use of positional fill.
pvscan: Use lvmetad_used().
reports: Use X for unknown LV attr when no dm.
metadata: Fix unlock on VG recovery error path.
tools: Add --readonly support.
test: Fix default.profile path.
test: configurable write timeout
pvremove: Catch CTRL-c during prompts.
locking: Separate out flock and signal code.
signals: Move sigint handling out to lvm-signal.
signals: Add init_signals.
man: Fix man7 dir dependency.
allocation: Fix alloc anywhere with parity.
report: Add metadata_percent to lvs_cols.
pvmove: tidy
pvvmove: add a few comments
locking: Introduce LCK_ACTIVATION.
locking: fix cluster locking
man: More /dev/vg and /dev/mapper documentation.
pre-release
pre-release
David Teigland (3):
man: more lvmthin discard references
man: lvmthin cover snapshot merge and xfs
man: lvmthin
Dongmao Zhang (1):
systemd: use umask 022 for generated systemd units by lvm2-activation-generator
Jonathan Brassow (18):
vgsplit: Make vgsplit work on mirrors with leg and log on same PV
WHATS_NEW: Add message for commit 9ac858f
test/vgsplit-operation.sh: Add vgsplit tests for RAID
vgsplit: Make RAID 4/5/6 fail cleanly when too few PV specified
test: Move the RAID vgsplit test into a separate file
test: Add the new vgsplit RAID test file forgotten in the last commit
logging: Add LCK_REVERT_MODE to flags printed by decode_flags()
activation: Remove empty DM device when table fails to load.
test: use direct I/O when injecting bad data into RAID images
vgchange: Prompt when setting VG cluster attr if cluster is not setup
WHATS_NEW: For commit 9399b743 (prompt for VG cluster attr change)
vgchange: With '--yes', don't prompt the user
cache: Properly rename origin LV tree when adding "_corig"
poll_daemon: Cleanly exit polling if the LV is no longer active
pvmove: Enable all-or-nothing (atomic) pvmoves
test: Clean-up pvmove-basic for atomic pvmove test
pvmove: Clean-up iterator.
pvmove: Fix code that looks up the "move pv" for display
Marian Csontos (1):
test: add lvresize tests
Peter Rajnoha (79):
profiles: comment out thin_pool_chunk_size in default.profile
lvmdump: add -s to gather system info and context (currently systemd-related only)
lvmdump: list also inactive units for lvmdump -s
configure: use configure's --enable-udev-systemd-background-jobs by default
man: minor fixes in lvmetad man page
config: use devices/ignore_suspended_devices=0 by default
libdevmapper: add dm_units_to_factor for size unit parsing
cleanup: _move_pv is static
systemd: make sysinit.target to pull in lvm2-lvmetad.socket, not sockets.target
systemd: use lvm binary insetad of command symlink in lvm2-pvscan.service
cleanup: fix compiler warning
make: fix commit 1756bf6
report: export DM_REPORT_FIELD_RESERVED_NAME_{HELP,HELP_ALT} and show help on '<lvm_command> -O help'
config: add CONFIG_FILE_SPECIAL config source id
config: attach cft_check_handle to each config tree instead of global cmd_context
config: fix incorrect profile initialization on cmd context refresh
dumpconfig: fix dumpconfig --type diff used in lvm shell as second and later command
commands: do not register profile_ARG for lvcreate/lvchange separetely
config: add CFG_PROFILABLE_METADATA flag
config: differentiate command and metadata profiles and consolidate profile handling code
dumpconfig: add --type profilable-command/profilable-metadata, --metadataprofile/--commandprofile
tests: update profiles.sh test for latest changes
systemd: install lvm2-cluster-activation script as executable
cleanup: remove duplicate --commandprofile reference in dumpconfig's help string
man: update dumpconfig man page for latest changes
profiles: remove default.profile and add {command,metadata}_profile_template.profile
man: update lvm.conf man page for latest changes
man: more man page updates for --commandprofile and --metadataprofile split
man: missing space between option name and value name
lvm_init: don't use name mangling for LVM
cleanup: use const for endptr in dm_units_to_factor
udev: also print subsystem udev flags in debug message about udev flags + fix typo DM_SUBSSYTEM_UDEV_FLAG7 -> DM_SUBSYSTEM_UDEV_FLAG7
report: fix report field type for lv_kernel_major/minor
cleanup: commit c0f9c79 to work also with for non-clustered configuration
cleanup: default.profile is not used (and it was split in two and renamed anyway)
cleanup: move the "daemon is running" checks to lvm-wrappers
tests: some more renames lib/test -> lib/inittest
profile: add thin-generic.profile
spec: new thin-generic.profile
systemd: use RemoveOnStop for dm-event.socket and lvm2-lvmetad.socket
report: select: add DM_REPORT_FIELD_TYPE_SIZE to make a difference between NUMBER and SIZE
report: select: add structs for report selection
report: select: add supporting infrastucture for token parsing in report selections
report: select: add dm_report_init_with_selection to libdm
report: select: add _check_selection fn to support checking fields against given selections
report: select: use _check_report_selection in dm_report_object to report only objects that satisfy the report selection
report: select: add --select arg to dmsetup
report: select: add --select arg to pvs, vgs and lvs
report: select: add --select arg to pvdisplay, vgdisplay and lvdisplay
report: select: refactor: move str_list to libdm
report: select: add dm_report_field_string_list to libdm
report: select: add DM_REPORT_FIELD_TYPE_STRING_LIST to make a difference between STRING and STRING_LIST
report: select: add support for processing string lists in selection
report: select: add support for comparing string lists with selection defined
report: select: add help for creating selections
report: select: show field type in field list if in context of selection
report: select: add support for reserved value recognition in report selection string - add struct dm_report_reserved_value
report: select: refactor: move percent handling code to libdm for reuse
report: select: add support for percent selection
tests: select: add test for report selection feature
report: add support for implicit fields, add implicit "selected" field
report: select: add --select arg to lvm devtypes
report: select: add man pages for report selection feature
prop: update FIELD macro to accomodate the differentiation of number, size and percent field values
tests: update lvcreate-thin for latest changes
test: fix report_select test to work in cluster
WHATS_NEW: commits 7dbbc05a69c4cb9756464720cad29e3c1ed971c3..b16f5633ab199dedfd25f08562f686a6fb4aba9d
WHATS_NEW: commit 76467bdcfd297ffbe2c088b6340ecc7d17d56742
cleanup: gcc warnings and report-select test vs snap_percent 0%
man: add man page entry for dmsetup info -c -S/--select + minor cleanups
compilation: fix warnings: build_dm_uuid now accepts whole struct logical_volume, not lvid
select: add list of allowed types for each selection operator mentioned in help
report: make "help" and "?" field implicit
libdevmapper: revoke commit 7c86131233011c9fb81190bcb40d5d4ac54a533d
report: display explicit fields first, then implicit fields in field help
dmsetup: no need to check for "help" field name after report init
select: add FLD_UNCOMPARABLE flag for fields which can't be compared
select: also mark uncomparable/unselectable fields in field/selection help
select: add message about 'help' field to get more help on each error hit during selection parsing
Petr Rockai (13):
NIX: Fix failure mode for "make check".
NIX: Use VM images with the correct root module list.
metadata: Make it possible to write partial VGs obtained from lvmetad.
test: Make it possible to enable/disable devices silently.
test: Fail devices silently in lvconvert-repair-transient.sh.
test: Fix the vgck test after vg_write change.
lvm1: Fail vg_write graciously when devices are missing.
test: Try harder to vgremove in lvmetad-lvm1.sh.
lvmetad: Avoid "connect failed" spamming when lvmetad is not available.
pvremove: Update lvmcache => avoid spurious error messages.
test: Reflect that --sysinit only treats lvmetad specially with -aay (not -ay).
libdaemon: Keep track of client threads, wait before shutdown.
lvmetad: Drop active connection upon lvmetad_set_active(0).
Zdenek Kabelac (197):
polldaemon: ret invalid cmd for negative interval
pvmove: remove locked flag from error pvmove0
memlock: ignore more libraries
clvmd: fix test mode race
clvmd: move mutex init and detroy
clvmd: set finished flag with mutex
clvmd: drop reply_mutex
clvmd: improve mutex usage in request_timed_out
clvmd: skip adding reply when finished
clvmd: use thread-safe ctime_r when debugging
cleanup: clvmd reindent local_pipe_callback
cleanup: clvmd drop unused enum state
cleanup: corrent indent level
tests: implement lv_attr_bit
tests: check there is really pvmove lv
tests: correct test condition
unknown: fix mempool used for name allocation
thin: dmeventd plugins support more minors
asprintf: fix test for error result
dmeventd: check for list size within lock
devmapper-event: always initialize timeout
makefiles: wait till include is populated
makefiles: clear targets in with make clean
makefiles: compile files on make
makefiles: drop linking of deamon libs to plugins
makefiles: move subdir into same section
libdaemon: header cleanup
cleanup: include stdarg.h where needed.
cleanup: reduce inclusion of unnecessary headers
cleanup: drop inclusion of devmap - merge
cleanup: set _REENTRANT in header
cleanup: skip zeroing of cleared areas
cleanup: add some comment indents...
cleanup: dmeventd abstract lvm2cmd interface
cleanup: dmeventd reorder _fill_device_data
cleanup: dmeventd simplify status processing
cleanup: dmeventd simplify buffer write loop
cleanup: dmeventd improve _get_status
cleanup: dmeventd set next_time when registering
cleanup: dmeventd improve _clien_write code
cleanup: dmeventd improve _handle_request
cleanup: dmeventd drop setting of size
cleanup: dmeventd simplify restart message parsing
tests: fix creation of scsi debug
display: use Virtual for virtual LV
display: show monitoring status
thin: display info when -tpool is running
thin: move segment info display to correct code section
lvscan: drop test for snapshosts
cleanup: put all tests within switch
tests: improve coverage
display: check for dmeventd support
configure: corrected ioctl option
libdm: cleanup complation without DM_IOCTLS
devmapper: fix compilation without devmapper
devmapper-event: always initialize timeout
lv: show X attr when lv_info fails
makefile: fix regression
unknown: add_target_line is not needed
cleanup: indent in devmapper-event
cleanup: indent
cleanup: modules_needed only for devmapper
tests: lets the test continue
locking: use sigaction signal handling
debug: add more debug message for signal handling
signals: better nesting support
cache: avoid expression overflow
coverity: check for profile
coverity: error for undefined origin
coverity: ignore ret val
cleanup: drop uneeded headers
cleanup: cosmetics.
cleanup: missed conversion to dm_malloc/free usage
clenaup: drop unused assigns
cleanup: constify pointers
cleanup: use enum return codes
configure: drop siginterrupt
configure: improve needs_check thin_check test
coverity: catch unwanted path
conf: document new thin_check option
cleanup: cast int to typedef
cleanup: drop unused header
tests: replance hostname call
tests: updates
cleanup: improve error message
man:misc updates
tests: speedup
display: print skipped prompt
man: lvmcache
debug: backtrace error path
cleanup: device extent_size first
man: lvmcache
tests: drop nosync
thin: lvconvert warn before conversion
lvconvert: check ret code of mirror_remove_missing
debug: fix backtracing
man: cleanup style
cleanup: unneeded initialization
cleanup: indent
cleanup: use print when displaying info
thin: improve lvconvert messages
tests: update lvconvert test
tests: wait before down-convert
tests: add have_cache and have_raid
tests: rebuild paths when Makefile is updated
spec: configurable cache build
tests: lvconvert needs --yes
tests: checking mirror_remove_missing
man: call installers only when there are set vars.
tests: notify lvmetad after udev transation
tests: notify loop needs maj:min
tests: skips on unsupported systems
tests: restore disable_dev behavior
vgcfgrestore: return invalid cmd line
cleanup: indent
cleanup: make error message more readable
tests: more vgcfgrestore testing
tests: more pvchange tests
tests: raid and dmeventd
cleanup: use y/n instead of y|n
tests: detect raid presence
tests: add check vg_attr_bit
tests: swap tests
tests: check more things with vgchange
dev_manager: disable extra udev loop
cleanup: add seg_is_pool macro
cleanup: use directly segtype->name
cleanup: indent
vgextend: allow --yes to skip prompt
tests: increase min version for raid testing
tests: add unusable kernel for raid5 testing
tests: improve command coverage
dmsetup: add warning
man: cleanup dmsetup
cleanup: internal error for impossible path
tests: update aux disable_dev
tests: support thin_restore configurable
activate: cleanup lv_check_not_in_use
raid: cleanup error messages
tests: detect same uuid on PV
tests: raid syncaction activation race
tests: dd needs to hit disk
revert: restore original timeout
tests: rename test
man: document DM_DEFAULT_NAME_MANGLING_MODE
configure: accept 'none' as mangling mode
configure: cleanups
configure: reconfigure
tests: fix use of double apostrophes in get
tests: use shell arrays to keep device names
tests: add get_devs function
tests: use manglename none for dmsetup
tests: use get_devs
tests: typo
configure: do not exit with error code
tests: adapt test for newline delimit
tests: fix test compare
tests: disable python failing test
configure: update libcpg test
activation: retry cleanup deactivation
cleanup: drop inline keyword
cleanup: add missing log_error
tests: make timeouts longer
tests: rename test to inittest
man: advertise lvmcache, lvmthin
man: use bullets
man: properly escape -
man: more compliant
man: update lvmthin
man: kiB uppercase
man: dmsetup manglename
tests: update vgchange -c
tests: change to inittest
report: avoid passing NULL label
libdm: dm_report_object avoid duplicat strlen call
libdm: dm_report_object report error for no data
test: pvs bz1108394
snapshot: check it's still snapshot
snapshot: check snapshot exists
snapshot: do not spawn when origin is not active
snapshot: report proper error message
snapshot: %ORIGIN is relative to data size
cleanup: use stack for small buffer
cleanup: we already know max device name size
tests: wait for udev
tests: detect version of thin_restore command
tests: check new snapshot skills
lvconvert: print warning when not convert thinpool
cleanup: use insert_layer_for_lv implicit rename
lvchange: better --refresh of raid and mirrors
cleanup: more readable
cleanup: rename variable wait
tests: remove dmeventd usage
memlock: skip more entries
cleanup: use simplier test
tests: add udev sync point
lv: fix lv_is_raid
9 years, 10 months
master - post-release
by Alasdair Kergon
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=29ca0573baa017...
Commit: 29ca0573baa0172ae9e1b137c51c39446baa9ee9
Parent: 0bb6ffb81fac3b51fb7986aa29b84687499a1c78
Author: Alasdair G Kergon <agk(a)redhat.com>
AuthorDate: Mon Jun 23 15:23:09 2014 +0100
Committer: Alasdair G Kergon <agk(a)redhat.com>
CommitterDate: Mon Jun 23 15:23:09 2014 +0100
post-release
---
VERSION | 2 +-
VERSION_DM | 2 +-
WHATS_NEW | 3 +++
WHATS_NEW_DM | 3 +++
4 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/VERSION b/VERSION
index 59da36c..4695aab 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.02.107(2)-git (2014-06-23)
+2.02.108(2)-git (2014-06-23)
diff --git a/VERSION_DM b/VERSION_DM
index d519151..12a8c3d 100644
--- a/VERSION_DM
+++ b/VERSION_DM
@@ -1 +1 @@
-1.02.86-git (2014-06-23)
+1.02.87-git (2014-06-23)
diff --git a/WHATS_NEW b/WHATS_NEW
index 7ab7422..9db42d2 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,3 +1,6 @@
+Version 2.02.108 -
+=================================
+
Version 2.02.107 - 23rd June 2014
=================================
Introduce LCK_ACTIVATION to avoid concurrent activation of basic LV types.
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index e8386b0..f25fa92 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,3 +1,6 @@
+Version 1.02.87 -
+================================
+
Version 1.02.86 - 23rd June 2014
================================
Make "help" and "?" reporting fields implicit.
9 years, 10 months
master - pre-release
by Alasdair Kergon
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=0bb6ffb81fac3b...
Commit: 0bb6ffb81fac3b51fb7986aa29b84687499a1c78
Parent: 8d27f8e00392e3bd748cf7ba743a8652e6e7b2f1
Author: Alasdair G Kergon <agk(a)redhat.com>
AuthorDate: Mon Jun 23 14:16:39 2014 +0100
Committer: Alasdair G Kergon <agk(a)redhat.com>
CommitterDate: Mon Jun 23 14:16:39 2014 +0100
pre-release
---
WHATS_NEW_DM | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index fddc996..e8386b0 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,4 +1,4 @@
-Version 1.02.88 - 23rd June 2014
+Version 1.02.86 - 23rd June 2014
================================
Make "help" and "?" reporting fields implicit.
Recognize implicit "selected" field if using dm_report_init_with_selection.
9 years, 10 months
master - pre-release
by Alasdair Kergon
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=8d27f8e00392e3...
Commit: 8d27f8e00392e3bd748cf7ba743a8652e6e7b2f1
Parent: 867b92b031b4913213c335bd0bf7363e934f379d
Author: Alasdair G Kergon <agk(a)redhat.com>
AuthorDate: Mon Jun 23 14:03:32 2014 +0100
Committer: Alasdair G Kergon <agk(a)redhat.com>
CommitterDate: Mon Jun 23 14:03:32 2014 +0100
pre-release
---
VERSION | 2 +-
VERSION_DM | 2 +-
WHATS_NEW | 12 ++++++++----
WHATS_NEW_DM | 4 ++--
4 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/VERSION b/VERSION
index bcbb09e..59da36c 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.02.107(2)-git (2014-04-10)
+2.02.107(2)-git (2014-06-23)
diff --git a/VERSION_DM b/VERSION_DM
index 8b95ed0..d519151 100644
--- a/VERSION_DM
+++ b/VERSION_DM
@@ -1 +1 @@
-1.02.86-git (2014-04-10)
+1.02.86-git (2014-06-23)
diff --git a/WHATS_NEW b/WHATS_NEW
index c2b443c..7ab7422 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,5 @@
-Version 2.02.107 -
-==================================
+Version 2.02.107 - 23rd June 2014
+=================================
Introduce LCK_ACTIVATION to avoid concurrent activation of basic LV types.
Fix open_count test for lvchange --refresh or mirrors and raids.
Update pvs,vgs,lvs and lvm man page for selection support.
@@ -12,8 +12,12 @@ Version 2.02.107 -
When converting RAID origin to cache LV, properly rename sub-LVs.
Use RemoveOnStop for lvm2-lvmetad.socket systemd unit.
Add thin-generic configuration profile for generic thin settings.
- Fix crash when reporting of empty labels on pvs.
+ Fix crash when reporting empty labels on pvs.
Use retry_deactivation also when cleaning orphan devices.
+ Wait for client threads when shutting down lvmetad.
+ Remove PV from cache on pvremove.
+ Avoid repeatedly reporting of failure to connect to lvmetad.
+ Introduce MDA_FAILED to permit metadata updates even if some mdas are missing.
Prompt when setting the VG cluster attr if the cluster is not setup.
Allow --yes to skip prompt in vgextend (worked only with -f).
Don't use name mangling for LVM - it never uses dm names with wrong char set.
@@ -27,7 +31,7 @@ Version 2.02.107 -
Strictly separate command profiles and per-VG/LV profiles referenced in mda.
Fix dumpconfig --type diff when run as second and later cmd in lvm shell.
Fix wrong profile reuse from previous run if another cmd is run in lvm shell.
- Move cache description from lvm(8) to lvmcache(7) man page.
+ Move cache description from lvm(8) to new lvmcache(7) man page.
Display skipped prompt in silent mode.
Make reporting commands show help about possible sort keys on '-O help'.
Add metadata_percent to lvs_cols.
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index 119016a..fddc996 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,5 @@
-Version 1.02.88 -
-=================================
+Version 1.02.88 - 23rd June 2014
+================================
Make "help" and "?" reporting fields implicit.
Recognize implicit "selected" field if using dm_report_init_with_selection.
Add support for implicit reporting fields which are predefined in libdm.
9 years, 10 months