master - raid: define seg->extents_copied
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=3a5561e5ab5c916df8f...
Commit: 3a5561e5ab5c916df8f90cc880ce2acb04ee2ecb
Parent: aedac100f9474bb9b5184f9c6efbc25d49eb742a
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Tue Mar 7 23:28:09 2017 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Tue Mar 7 23:28:09 2017 +0100
raid: define seg->extents_copied
seg->extents_copied has to be defined properly on reducing
the size of a raid LV or conversion from raid5 with 1 stripe
to raid1 will fail.
Related: rhbz834579
Related: rhbz1191935
Related: rhbz1191978
---
lib/metadata/lv_manip.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index f0c3058..90c61aa 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -1393,6 +1393,8 @@ static int _lv_reduce(struct logical_volume *lv, uint32_t extents, int delete)
lv->le_count -= extents;
lv->size = (uint64_t) lv->le_count * lv->vg->extent_size;
+ if (seg)
+ seg->extents_copied = seg->len;
if (!delete)
return 1;
6 years, 2 months
master - report: correct lv_size for 2-legged raid5
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=aedac100f9474bb9b51...
Commit: aedac100f9474bb9b5184f9c6efbc25d49eb742a
Parent: 18bbeec8257f2806770601db9483309c35cb5225
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Tue Mar 7 22:36:50 2017 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Tue Mar 7 22:36:50 2017 +0100
report: correct lv_size for 2-legged raid5
Reshaping a raid5 LV to one stripe aiming to convert it to
raid1 (and optionally to linear) reports the wrong LV size
when still having reshape space allocated.
---
lib/report/report.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/lib/report/report.c b/lib/report/report.c
index e426371..4204d47 100644
--- a/lib/report/report.c
+++ b/lib/report/report.c
@@ -2305,7 +2305,7 @@ static int _lv_size_disp(struct dm_report *rh, struct dm_pool *mem,
uint64_t size = lv->le_count;
if (!lv_is_raid_image(lv))
- size -= seg->reshape_len * seg->area_count;
+ size -= seg->reshape_len * (seg->area_count > 2 ? seg->area_count : 1);
size *= lv->vg->extent_size;
6 years, 2 months
master - raid: fix raid LV resizing
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=18bbeec8257f2806770...
Commit: 18bbeec8257f2806770601db9483309c35cb5225
Parent: 9ed11e919187fcc6d2a0ab192937e3cebed08592
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Tue Mar 7 22:05:23 2017 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Tue Mar 7 22:05:23 2017 +0100
raid: fix raid LV resizing
The lv_extend/_lv_reduce API doesn't cope with resizing RaidLVs
with allocated reshape space and ongoing conversions. Prohibit
resizing during conversions and remove the reshape space before
processing resize. Add missing seg->data_copies initialisation.
Fix typo/comment.
---
lib/metadata/lv_manip.c | 30 +++++++++++++++++++++++----
lib/metadata/metadata-exported.h | 1 +
lib/metadata/raid_manip.c | 41 ++++++++++++++++++++++++++-----------
3 files changed, 55 insertions(+), 17 deletions(-)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index b98391b..f0c3058 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -1505,11 +1505,10 @@ int lv_reduce(struct logical_volume *lv, uint32_t extents)
{
struct lv_segment *seg = first_seg(lv);
- /* Ensure stipe boundary extents on RAID LVs */
+ /* Ensure stripe boundary extents on RAID LVs */
if (lv_is_raid(lv) && extents != lv->le_count)
extents =_round_to_stripe_boundary(lv->vg, extents,
seg_is_raid1(seg) ? 0 : _raid_stripes_count(seg), 0);
-
return _lv_reduce(lv, extents, 1);
}
@@ -3943,7 +3942,7 @@ bad:
static int _lv_extend_layered_lv(struct alloc_handle *ah,
struct logical_volume *lv,
uint32_t extents, uint32_t first_area,
- uint32_t stripes, uint32_t stripe_size)
+ uint32_t mirrors, uint32_t stripes, uint32_t stripe_size)
{
const struct segment_type *segtype;
struct logical_volume *sub_lv, *meta_lv;
@@ -3971,7 +3970,7 @@ static int _lv_extend_layered_lv(struct alloc_handle *ah,
for (fa = first_area, s = 0; s < seg->area_count; s++) {
if (is_temporary_mirror_layer(seg_lv(seg, s))) {
if (!_lv_extend_layered_lv(ah, seg_lv(seg, s), extents / area_multiple,
- fa, stripes, stripe_size))
+ fa, mirrors, stripes, stripe_size))
return_0;
fa += lv_mirror_count(seg_lv(seg, s));
continue;
@@ -3985,6 +3984,8 @@ static int _lv_extend_layered_lv(struct alloc_handle *ah,
return 0;
}
+ last_seg(lv)->data_copies = mirrors;
+
/* Extend metadata LVs only on initial creation */
if (seg_is_raid_with_meta(seg) && !lv->le_count) {
if (!seg->meta_areas) {
@@ -4192,7 +4193,7 @@ int lv_extend(struct logical_volume *lv,
}
if (!(r = _lv_extend_layered_lv(ah, lv, new_extents - lv->le_count, 0,
- stripes, stripe_size)))
+ mirrors, stripes, stripe_size)))
goto_out;
/*
@@ -5412,6 +5413,17 @@ int lv_resize(struct logical_volume *lv,
if (!_lvresize_check(lv, lp))
return_0;
+ if (seg->reshape_len) {
+ /* Prevent resizing on out-of-sync reshapable raid */
+ if (!lv_raid_in_sync(lv)) {
+ log_error("Can't resize reshaping LV %s.", display_lvname(lv));
+ return 0;
+ }
+ /* Remove any striped raid reshape space for LV resizing */
+ if (!lv_raid_free_reshape_space(lv))
+ return_0;
+ }
+
if (lp->use_policies) {
lp->extents = 0;
lp->sign = SIGN_PLUS;
@@ -5923,6 +5935,7 @@ int lv_remove_single(struct cmd_context *cmd, struct logical_volume *lv,
int ask_discard;
struct lv_list *lvl;
struct seg_list *sl;
+ struct lv_segment *seg = first_seg(lv);
int is_last_pool = lv_is_pool(lv);
vg = lv->vg;
@@ -6029,6 +6042,13 @@ int lv_remove_single(struct cmd_context *cmd, struct logical_volume *lv,
is_last_pool = 1;
}
+ /* Special case removing a striped raid LV with allocated reshape space */
+ if (seg && seg->reshape_len) {
+ if (!(seg->segtype = get_segtype_from_string(cmd, SEG_TYPE_NAME_STRIPED)))
+ return_0;
+ lv->le_count = seg->len = seg->area_len = seg_lv(seg, 0)->le_count * seg->area_count;
+ }
+
/* Used cache pool, COW or historical LV cannot be activated */
if ((!lv_is_cache_pool(lv) || dm_list_empty(&lv->segs_using_this_lv)) &&
!lv_is_cow(lv) && !lv_is_historical(lv) &&
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index 376fee9..4d02d04 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -1243,6 +1243,7 @@ int lv_raid_change_region_size(struct logical_volume *lv,
int yes, int force, uint32_t new_region_size);
int lv_raid_in_sync(const struct logical_volume *lv);
uint32_t lv_raid_data_copies(const struct segment_type *segtype, uint32_t area_count);
+int lv_raid_free_reshape_space(const struct logical_volume *lv);
/* -- metadata/raid_manip.c */
/* ++ metadata/cache_manip.c */
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 40044f2..d109c0a 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -1312,7 +1312,7 @@ static int _lv_set_image_lvs_start_les(struct logical_volume *lv)
}
/*
- * Relocate @out_of_place_les_per_disk from @lv's data images begin <-> end depending on @where
+ * Relocate @out_of_place_les_per_disk from @lv's data images begin <-> end depending on @where
*
* @where:
* alloc_begin: end -> begin
@@ -1448,9 +1448,15 @@ static int _lv_alloc_reshape_space(struct logical_volume *lv,
out_of_place_les_per_disk = max(2048U, (unsigned) seg->stripe_size);
out_of_place_les_per_disk = (uint32_t) max(out_of_place_les_per_disk / (unsigned long long) lv->vg->extent_size, 1ULL);
+ if (!lv_is_active(lv)) {
+ log_error("Can't remove reshape space from inactive LV %s.",
+ display_lvname(lv));
+ return 0;
+ }
+
/* Get data_offset and dev_sectors from the kernel */
if (!lv_raid_data_offset(lv, &data_offset)) {
- log_error("Can't get data offset and dev size for %s from kernel.",
+ log_error("Can't get data offset for %s from kernel.",
display_lvname(lv));
return 0;
}
@@ -1473,13 +1479,13 @@ static int _lv_alloc_reshape_space(struct logical_volume *lv,
}
/*
- * If we don't reshape space allocated extend the LV.
+ * If we don't have reshape space allocated extend the LV.
*
- * first_seg(lv)->reshape_len (only segment of top level raid LV)
- * is accounting for the data rimages so that unchanged
- * lv_extend()/lv_reduce() can be used to allocate/free,
- * because seg->len etc. still holds the whole size as before
- * including the reshape space
+ * first_seg(lv)->reshape_len (only segment of top level raid LV
+ * and first segment of the rimage sub LVs) are accounting for
+ * the reshape space so that lv_extend()/lv_reduce() can be used
+ * to allocate/free, because seg->len etc. still holds the whole
+ * size as before including the reshape space
*/
if (out_of_place_les_per_disk) {
uint32_t data_rimages = _data_rimages_count(seg, seg->area_count);
@@ -1488,7 +1494,7 @@ static int _lv_alloc_reshape_space(struct logical_volume *lv,
uint64_t lv_size = lv->size;
if (!lv_extend(lv, seg->segtype, data_rimages,
- seg->stripe_size, 1, seg->region_size,
+ seg->stripe_size, 1, /* seg_is_any_raid10(seg) ? seg->data_copies : 1, */ seg->region_size,
reshape_len /* # of reshape LEs to add */,
allocate_pvs, lv->alloc, 0)) {
log_error("Failed to allocate out-of-place reshape space for %s.",
@@ -1600,6 +1606,11 @@ static int _lv_free_reshape_space(struct logical_volume *lv)
return _lv_free_reshape_space_with_status(lv, NULL);
}
+int lv_raid_free_reshape_space(const struct logical_volume *lv)
+{
+ return _lv_free_reshape_space_with_status((struct logical_volume *) lv, NULL);
+}
+
/*
* HM
*
@@ -1754,6 +1765,10 @@ static int _raid_reshape_add_images(struct logical_volume *lv,
return 0;
}
+ /* raid10 new image allocation can't cope with allocated reshape space. */
+ if (seg_is_any_raid10(seg) && !_lv_free_reshape_space(lv))
+ return_0;
+
/* Allocate new image component pairs for the additional stripes and grow LV size */
log_debug_metadata("Adding %u data and metadata image LV pair%s to %s.",
new_image_count - old_image_count, new_image_count - old_image_count > 1 ? "s" : "",
@@ -4902,6 +4917,8 @@ static int _takeover_downconvert_wrapper(TAKEOVER_FN_ARGS)
if (seg_is_raid1(seg))
seg->stripe_size = 0;
+ seg->data_copies = new_data_copies;
+
if (!_lv_update_reload_fns_reset_eliminate_lvs(lv, 0, &removal_lvs, NULL))
return_0;
@@ -5125,6 +5142,8 @@ static int _takeover_upconvert_wrapper(TAKEOVER_FN_ARGS)
}
+ seg->data_copies = new_data_copies;
+
if (segtype_is_raid4(new_segtype) &&
(!_shift_parity_dev(seg) ||
!_rename_area_lvs(lv, "_"))) {
@@ -5133,9 +5152,6 @@ static int _takeover_upconvert_wrapper(TAKEOVER_FN_ARGS)
} else if (segtype_is_raid10_near(new_segtype)) {
uint32_t s;
- /* FIXME: raid10 ; needs to change once more than 2 data copies! */
- seg->data_copies = 2;
-
log_debug_metadata("Reordering areas for raid0 -> raid10 takeover.");
if (!_reorder_raid10_near_seg_areas(seg, reorder_to_raid10_near))
return 0;
@@ -5889,6 +5905,7 @@ int lv_raid_convert(struct logical_volume *lv,
return 0;
}
+ /* FIXME: as long as we only support even numbers of raid10 SubLV pairs */
if (seg_is_raid10(seg))
stripes *= 2;
6 years, 2 months
master - raid: cleanup _lv_set_image_lvs_start_les()
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=9ed11e919187fcc6d2a...
Commit: 9ed11e919187fcc6d2a0ab192937e3cebed08592
Parent: 05aceaffbd184c6b5d892d92a6c4d9db182da8f8
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Tue Mar 7 21:55:19 2017 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Tue Mar 7 21:55:19 2017 +0100
raid: cleanup _lv_set_image_lvs_start_les()
Avoid second loop.
---
lib/metadata/raid_manip.c | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 1a4a860..40044f2 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -1302,12 +1302,11 @@ static int _lv_set_image_lvs_start_les(struct logical_volume *lv)
data_seg->le = le;
le += data_seg->len;
}
- }
- /* Try merging rimage sub LV segments _after_ adjusting start LEs */
- for (s = 0; s < seg->area_count; s++)
+ /* Try merging rimage sub LV segments _after_ adjusting start LEs */
if (!lv_merge_segments(seg_lv(seg, s)))
return_0;
+ }
return 1;
}
6 years, 2 months
master - lvconvert: adjust --stripes on raid10 convert
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=05aceaffbd184c6b5d8...
Commit: 05aceaffbd184c6b5d892d92a6c4d9db182da8f8
Parent: f4b30b0daef3bac7f775dff29c21ac47fe5d82a7
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Tue Mar 7 21:36:03 2017 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Tue Mar 7 21:36:03 2017 +0100
lvconvert: adjust --stripes on raid10 convert
For the time being raid10 is limited to even number of total stripes
as is and 2 data copies. The number of stripes provided on creation
of a raid10(_near) LV with -i/--stripes gets doubled to define
that even total number of stripes (i.e. images).
Apply the same on disk adding conversions (reshapes) with
"lvconvert --stripes RaidLV" (e.g. 2 stripes = 4 images
total converted to 3 stripes = 6 images total).
Related: rhbz834579
Related: rhbz1191935
Related: rhbz1191978
---
lib/metadata/raid_manip.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 6cc1c12..1a4a860 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -5878,7 +5878,7 @@ int lv_raid_convert(struct logical_volume *lv,
struct dm_list *allocate_pvs)
{
struct lv_segment *seg = first_seg(lv);
- uint32_t stripes, stripe_size;
+ uint32_t stripes = new_stripes, stripe_size;
uint32_t new_image_count = seg->area_count;
uint32_t region_size = new_region_size;
uint32_t data_copies = seg->data_copies;
@@ -5890,7 +5890,10 @@ int lv_raid_convert(struct logical_volume *lv,
return 0;
}
- stripes = new_stripes ? : _data_rimages_count(seg, seg->area_count);
+ if (seg_is_raid10(seg))
+ stripes *= 2;
+
+ stripes = stripes ? : _data_rimages_count(seg, seg->area_count);
/* FIXME Ensure caller does *not* set wrong default value! */
/* Define new stripe size if not passed in */
6 years, 2 months
master - report: display proper LV size for reshapable RaidLVs
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=f4b30b0daef3bac7f77...
Commit: f4b30b0daef3bac7f775dff29c21ac47fe5d82a7
Parent: 43fb4aa69b720301e12a9c0a85e7e778f68f72bf
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Tue Mar 7 18:47:20 2017 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Tue Mar 7 18:47:20 2017 +0100
report: display proper LV size for reshapable RaidLVs
Subtract reshape space when reporting visible lv_size on RaidLV.
Related: rhbz834579
Related: rhbz1191935
Related: rhbz1191978
---
lib/report/columns.h | 2 +-
lib/report/report.c | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/lib/report/columns.h b/lib/report/columns.h
index f723ded..74078f5 100644
--- a/lib/report/columns.h
+++ b/lib/report/columns.h
@@ -69,7 +69,7 @@ FIELD(LVS, lv, BIN, "ActExcl", lvid, 10, lvactiveexclusively, lv_active_exclusiv
FIELD(LVS, lv, SNUM, "Maj", major, 0, int32, lv_major, "Persistent major number or -1 if not persistent.", 0)
FIELD(LVS, lv, SNUM, "Min", minor, 0, int32, lv_minor, "Persistent minor number or -1 if not persistent.", 0)
FIELD(LVS, lv, SIZ, "Rahead", lvid, 0, lvreadahead, lv_read_ahead, "Read ahead setting in current units.", 0)
-FIELD(LVS, lv, SIZ, "LSize", size, 0, size64, lv_size, "Size of LV in current units.", 0)
+FIELD(LVS, lv, SIZ, "LSize", lvid, 0, lv_size, lv_size, "Size of LV in current units.", 0)
FIELD(LVS, lv, SIZ, "MSize", lvid, 0, lvmetadatasize, lv_metadata_size, "For thin and cache pools, the size of the LV that holds the metadata.", 0)
FIELD(LVS, lv, NUM, "#Seg", lvid, 0, lvsegcount, seg_count, "Number of segments in LV.", 0)
FIELD(LVS, lv, STR, "Origin", lvid, 0, origin, origin, "For snapshots and thins, the origin device of this LV.", 0)
diff --git a/lib/report/report.c b/lib/report/report.c
index 1808a2b..e426371 100644
--- a/lib/report/report.c
+++ b/lib/report/report.c
@@ -2296,6 +2296,22 @@ static int _size64_disp(struct dm_report *rh __attribute__((unused)),
return _field_set_value(field, repstr, sortval);
}
+static int _lv_size_disp(struct dm_report *rh, struct dm_pool *mem,
+ struct dm_report_field *field,
+ const void *data, void *private)
+{
+ const struct logical_volume *lv = (const struct logical_volume *) data;
+ const struct lv_segment *seg = first_seg(lv);
+ uint64_t size = lv->le_count;
+
+ if (!lv_is_raid_image(lv))
+ size -= seg->reshape_len * seg->area_count;
+
+ size *= lv->vg->extent_size;
+
+ return _size64_disp(rh, mem, field, &size, private);
+}
+
static int _uint32_disp(struct dm_report *rh, struct dm_pool *mem __attribute__((unused)),
struct dm_report_field *field,
const void *data, void *private __attribute__((unused)))
6 years, 3 months
master - test: add delay to lvchange-raid1-writemostly.sh
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=43fb4aa69b720301e12...
Commit: 43fb4aa69b720301e12a9c0a85e7e778f68f72bf
Parent: 872932a0fb31af4bb52b575157bc7f93025bfd59
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Tue Mar 7 15:18:13 2017 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Tue Mar 7 15:18:13 2017 +0100
test: add delay to lvchange-raid1-writemostly.sh
Commit 8ab072507706 introduced this new test.
Add a read delay to the PVs to avoid a race
in the script causing the test to fail.
Correct comment.
---
test/shell/lvchange-raid1-writemostly.sh | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/test/shell/lvchange-raid1-writemostly.sh b/test/shell/lvchange-raid1-writemostly.sh
index 1414398..611992a 100644
--- a/test/shell/lvchange-raid1-writemostly.sh
+++ b/test/shell/lvchange-raid1-writemostly.sh
@@ -21,14 +21,14 @@ aux prepare_vg 4
for d in $dev1 $dev2 $dev3 $dev4
do
- aux delay_dev $d 1
+ aux delay_dev $d 1 1
done
#
# Test writemostly prohibited on resynchronizing raid1
#
-# Create 4-way striped LV
+# Create 4-way raid1 LV
lvcreate -aey --ty raid1 -m 3 -L 32M -n $lv1 $vg
not lvchange -y --writemostly $dev1 $vg/$lv1
check lv_field $vg/$lv1 segtype "raid1"
6 years, 3 months
master - man lvs: describe new 'R' volume health character
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=872932a0fb31af4bb52...
Commit: 872932a0fb31af4bb52b575157bc7f93025bfd59
Parent: 0b019c5406c27edfd00b502a95cb57e198c949a8
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Mon Mar 6 19:33:10 2017 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Mon Mar 6 19:33:10 2017 +0100
man lvs: describe new 'R' volume health character
---
man/lvs.8.end | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/man/lvs.8.end b/man/lvs.8.end
index d71f7c1..ff92148 100644
--- a/man/lvs.8.end
+++ b/man/lvs.8.end
@@ -56,6 +56,7 @@ Inconsistencies are detected by initiating a "check" on a RAID logical volume.
(The scrubbing operations, "check" and "repair", can be performed on a RAID
logical volume via the 'lvchange' command.) (w)ritemostly signifies the
devices in a RAID 1 logical volume that have been marked write-mostly.
+(R)emove after reshape signifies freed striped raid images to be removed.
.IP
Related to Thin pool Logical Volumes: (F)ailed, out of (D)ata space,
(M)etadata read only.
6 years, 3 months
master - man/help: improve stripes option wording
by David Teigland
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=0b019c5406c27edfd00...
Commit: 0b019c5406c27edfd00b502a95cb57e198c949a8
Parent: ef97360866d8a9221eb8d9b2d0e2f7e366bbd8ef
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Mon Mar 6 12:01:11 2017 -0600
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Mon Mar 6 12:20:33 2017 -0600
man/help: improve stripes option wording
---
tools/args.h | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/tools/args.h b/tools/args.h
index 7c44256..7bb177d 100644
--- a/tools/args.h
+++ b/tools/args.h
@@ -974,15 +974,15 @@ arg(stripes_ARG, 'i', "stripes", number_VAL, 0, 0,
"Specifies the number of stripes in a striped LV. This is the number of\n"
"PVs (devices) that a striped LV is spread across. Data that\n"
"appears sequential in the LV is spread across multiple devices in units of\n"
- "the stripe size (see --stripesize). This does not apply to\n"
- "existing allocated space, only newly allocated space can be striped.\n"
+ "the stripe size (see --stripesize). This does not change existing\n"
+ "allocated space, but only applies to space being allocated by the command.\n"
"When creating a RAID 4/5/6 LV, this number does not include the extra\n"
"devices that are required for parity. The largest number depends on\n"
- "the RAID type (raid0: 64, raid10: 32, raid4/5: 63, raid6: 62.)\n"
- "When unspecified, the default depends on the RAID type\n"
+ "the RAID type (raid0: 64, raid10: 32, raid4/5: 63, raid6: 62), and\n"
+ "when unspecified, the default depends on the RAID type\n"
"(raid0: 2, raid10: 4, raid4/5: 3, raid6: 5.)\n"
- "When unspecified, to stripe across all PVs of the VG,\n"
- "set lvm.conf allocation/raid_stripe_all_devices=1.\n")
+ "To stripe a new raid LV across all PVs by default,\n"
+ "see lvm.conf allocation/raid_stripe_all_devices.\n")
arg(stripesize_ARG, 'I', "stripesize", sizekb_VAL, 0, 0,
"The amount of data that is written to one device before\n"
6 years, 3 months
master - man lvextend: mention segment type
by David Teigland
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=ef97360866d8a9221eb...
Commit: ef97360866d8a9221eb8d9b2d0e2f7e366bbd8ef
Parent: 17838e6439f7cabfa4609dbfb48197d5a33138f8
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Mon Mar 6 11:27:56 2017 -0600
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Mon Mar 6 11:27:56 2017 -0600
man lvextend: mention segment type
---
man/lvextend.8.des | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/man/lvextend.8.des b/man/lvextend.8.des
index 346bd23..4c0575d 100644
--- a/man/lvextend.8.des
+++ b/man/lvextend.8.des
@@ -1,7 +1,10 @@
lvextend extends the size of an LV. This requires allocating logical
-extents from the VG's free physical extents. A copy\-on\-write snapshot LV
-can also be extended to provide more space to hold COW blocks. Use
-\fBlvconvert\fP(8) to change the number of data images in a RAID or
+extents from the VG's free physical extents. If the extension adds a new
+LV segment, the new segment will use the existing segment type of the LV.
+
+Extending a copy\-on\-write snapshot LV adds space for COW blocks.
+
+Use \fBlvconvert\fP(8) to change the number of data images in a RAID or
mirrored LV.
In the usage section below, \fB--size\fP \fISize\fP can be replaced
6 years, 3 months