mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-24 06:04:19 +03:00
Fix lvresize for thin pool
When resizing thin pool - we need to use strip info from _tdata volume. In future more generic solution will be necessary once we start to support lvconvert (resize of stacked devices and stay properly aligned). For now we just allow striped or linear LV so this code will work.
This commit is contained in:
parent
b51d131c59
commit
4c4094c33c
@ -1,5 +1,6 @@
|
||||
Version 2.02.96 -
|
||||
================================
|
||||
Fix lvresize of thin pool for stipped devices.
|
||||
For lvresize round upward when specifying number of extents.
|
||||
For lvcreate with %FREE support rounding downward strip alignment.
|
||||
Change message severity to log_very_verbose for missing dev info in udev db.
|
||||
|
@ -590,7 +590,10 @@ static int _lvresize(struct cmd_context *cmd, struct volume_group *vg,
|
||||
if ((lp->extents > lv->le_count) &&
|
||||
!(lp->stripes == 1 || (lp->stripes > 1 && lp->stripe_size))) {
|
||||
/* FIXME Don't assume mirror seg will always be AREA_LV */
|
||||
dm_list_iterate_items(seg, seg_mirrors ? &seg_lv(mirr_seg, 0)->segments : &lv->segments) {
|
||||
/* FIXME We will need to support resize for metadata LV as well,
|
||||
* and data LV could be any type (i.e. mirror)) */
|
||||
dm_list_iterate_items(seg, seg_mirrors ? &seg_lv(mirr_seg, 0)->segments :
|
||||
lv_is_thin_pool(lv) ? &seg_lv(first_seg(lv), 0)->segments : &lv->segments) {
|
||||
if (!seg_is_striped(seg))
|
||||
continue;
|
||||
|
||||
@ -739,13 +742,6 @@ static int _lvresize(struct cmd_context *cmd, struct volume_group *vg,
|
||||
log_warn("Thin pool volumes do not have filesystem.");
|
||||
lp->resizefs = 0;
|
||||
}
|
||||
|
||||
if (!lp->stripes) {
|
||||
/* Try to use the same strip settings for underlying pool data LV */
|
||||
lp->stripes = last_seg(seg_lv(first_seg(lv), 0))->area_count;
|
||||
if (!lp->stripe_size)
|
||||
lp->stripe_size = last_seg(seg_lv(first_seg(lv), 0))->stripe_size;
|
||||
}
|
||||
}
|
||||
|
||||
if ((lp->resize == LV_REDUCE) && lp->argc)
|
||||
|
Loading…
x
Reference in New Issue
Block a user