mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-30 17:18:21 +03:00
pre-release
Removing some unused new lines and changing some incorrect "can't release until this is fixed" comments. Rename license.txt to make it clear its merely an included file, not itself a licence.
This commit is contained in:
parent
b9399f2148
commit
396377bc03
@ -1 +1 @@
|
||||
1.02.138-git (2016-11-30)
|
||||
1.02.138-git (2017-03-28)
|
||||
|
28
WHATS_NEW
28
WHATS_NEW
@ -1,17 +1,17 @@
|
||||
Version 2.02.169 -
|
||||
=====================================
|
||||
man-generator - escape '-'
|
||||
Add configuration command line to 'lvm version' output.
|
||||
Adjust to misordered raid parameters
|
||||
Conditionally reject raid convert to striped/raid0* after reshape
|
||||
Ensure raid6 upconversion restrictions
|
||||
Adjust mirror+raid DSOs to aforementioned lvconvert --repair
|
||||
Version 2.02.169 - 28th March 2017
|
||||
==================================
|
||||
Automatically decide whether '-' in a man page is a hyphen or a minus sign.
|
||||
Add build-time configuration command line to 'lvm version' output.
|
||||
Handle known table line parameter order change in specific raid target vsns.
|
||||
Conditionally reject raid convert to striped/raid0* after reshape.
|
||||
Ensure raid6 upconversion restrictions.
|
||||
Adjust mirror & raid dmeventd plugins for new lvconvert --repair behaviour.
|
||||
Disable lvmetad when lvconvert --repair is run.
|
||||
Remove obsolete lvmchange binary - convert to built-in command.
|
||||
Lvdisplay [-m] shows more informations for cached volumes.
|
||||
Show more information for cached volumes in lvdisplay [-m].
|
||||
Add option for lvcreate/lvconvert --cachemetadataformat auto|1|2.
|
||||
Support cache segment with configurable metadata format.
|
||||
Add allocation/cache_metadata_format profilable setttings.
|
||||
Add allocation/cache_metadata_format profilable settings.
|
||||
Use function cache_set_params() for both lvcreate and lvconvert.
|
||||
Skip rounding on cache chunk size boudary when create cache LV.
|
||||
Improve cache_set_params support for chunk_size selection.
|
||||
@ -21,7 +21,7 @@ Version 2.02.169 -
|
||||
Support conversion of raid type, stripesize and number of disks
|
||||
Reject writemostly/writebehind in lvchange during resynchronization.
|
||||
Deactivate active origin first before removal for improved workflow.
|
||||
Fix regression of accepting options --type and -m with lvresize (2.02.158).
|
||||
Fix regression of accepting both --type and -m with lvresize. (2.02.158)
|
||||
Add lvconvert --swapmetadata, new specific way to swap pool metadata LVs.
|
||||
Add lvconvert --startpoll, new specific way to start polling conversions.
|
||||
Add lvconvert --mergethin, new specific way to merge thin snapshots.
|
||||
@ -34,9 +34,9 @@ Version 2.02.169 -
|
||||
Match every command run to one command definition.
|
||||
Specify every allowed command definition/syntax in command-lines.in.
|
||||
Add extra memory page when limiting pthread stack size in clvmd.
|
||||
Support striped/raid0* <-> raid10_near conversions
|
||||
Support shrinking of RaidLvs
|
||||
Support region size changes on existing RaidLVs
|
||||
Support striped/raid0* <-> raid10_near conversions.
|
||||
Support shrinking of RaidLVs.
|
||||
Support region size changes on existing RaidLVs.
|
||||
Avoid parallel usage of cpg_mcast_joined() in clvmd with corosync.
|
||||
Support raid6_{ls,rs,la,ra}_6 segment types and conversions from/to it.
|
||||
Support raid6_n_6 segment type and conversions from/to it.
|
||||
|
17
WHATS_NEW_DM
17
WHATS_NEW_DM
@ -1,23 +1,24 @@
|
||||
Version 1.02.138 -
|
||||
=====================================
|
||||
Version 1.02.138 - 28th March 2017
|
||||
==================================
|
||||
Support additional raid5/6 configurations.
|
||||
Provide dm_tree_node_add_cache_target@base compatible symbol.
|
||||
Support DM_CACHE_FEATURE_METADATA2, new cache metadata format 2.
|
||||
Improve code to handle mode mask for cache nodes.
|
||||
Cache status check for passthrough also require trailing space.
|
||||
Add extra memory page when limiting pthread stack size in dmeventd.
|
||||
Avoids immediate resume when preloaded device is smaller.
|
||||
Do not suppress kernel key description in dmsetup table output.
|
||||
Do not suppress kernel key description in dmsetup table output for dm-crypt.
|
||||
Support configurable command executed from dmeventd thin plugin.
|
||||
Support new R|r human readable units output format.
|
||||
Thin dmeventd plugin reacts faster on lvextend failure path with umount.
|
||||
Add dm_stats_bind_from_fd() to bind a stats handle from a file descriptor.
|
||||
Do not try call callback when reverting activation on error path.
|
||||
Fix file mapping for extents with physically adjacent extents.
|
||||
Fix file mapping for extents with physically adjacent extents in dmstats.
|
||||
Validation vsnprintf result in runtime translate of dm_log (1.02.136).
|
||||
Separate filemap extent allocation from region table.
|
||||
Fix segmentation fault when filemap region creation fails.
|
||||
Fix performance of region cleanup for failed filemap creation.
|
||||
Fix very slow region deletion with many regions.
|
||||
Separate filemap extent allocation from region table in dmstats.
|
||||
Fix segmentation fault when filemap region creation fails in dmstats.
|
||||
Fix performance of region cleanup for failed filemap creation in dmstats.
|
||||
Fix very slow region deletion with many regions in dmstats.
|
||||
|
||||
Version 1.02.137 - 30th November 2016
|
||||
=====================================
|
||||
|
@ -2305,7 +2305,8 @@ static int _raid_reshape(struct logical_volume *lv,
|
||||
} if (!_vg_write_commit_backup(lv->vg))
|
||||
return 0;
|
||||
|
||||
return 1; // force_repair ? _lv_cond_repair(lv) : 1;
|
||||
return 1;
|
||||
/* FIXME force_repair ? _lv_cond_repair(lv) : 1; */
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2325,6 +2326,8 @@ static int _raid_reshape(struct logical_volume *lv,
|
||||
* 1 -> allowed reshape request
|
||||
* 2 -> prohibited reshape request
|
||||
* 3 -> allowed region size change request
|
||||
*
|
||||
* FIXME Use alternative mechanism - separate parameter or enum.
|
||||
*/
|
||||
static int _reshape_requested(const struct logical_volume *lv, const struct segment_type *segtype,
|
||||
const int data_copies, const uint32_t region_size,
|
||||
@ -2364,33 +2367,6 @@ static int _reshape_requested(const struct logical_volume *lv, const struct segm
|
||||
display_lvname(lv));
|
||||
return 2;
|
||||
}
|
||||
#if 0
|
||||
if ((_lv_is_duplicating(lv) || lv_is_duplicated(lv)) &&
|
||||
((seg_is_raid1(seg) ? 0 : (stripes != _data_rimages_count(seg, seg->area_count))) ||
|
||||
data_copies != seg->data_copies))
|
||||
goto err;
|
||||
if ((!seg_is_striped(seg) && segtype_is_raid10_far(segtype)) ||
|
||||
(seg_is_raid10_far(seg) && !segtype_is_striped(segtype))) {
|
||||
if (data_copies == seg->data_copies &&
|
||||
region_size == seg->region_size) {
|
||||
log_error("Can't convert %sraid10_far.",
|
||||
seg_is_raid10_far(seg) ? "" : "to ");
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
if (seg_is_raid10_far(seg)) {
|
||||
if (stripes != _data_rimages_count(seg, seg->area_count)) {
|
||||
log_error("Can't change stripes in raid10_far.");
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (stripe_size != seg->stripe_size) {
|
||||
log_error("Can't change stripe size in raid10_far.");
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (seg_is_any_raid10(seg) && seg->area_count > 2 &&
|
||||
stripes && stripes < seg->area_count - seg->segtype->parity_devs) {
|
||||
@ -2401,45 +2377,7 @@ static int _reshape_requested(const struct logical_volume *lv, const struct segm
|
||||
if (data_copies != seg->data_copies) {
|
||||
if (seg_is_raid10_near(seg))
|
||||
return 0;
|
||||
#if 0
|
||||
if (seg_is_raid10_far(seg))
|
||||
return segtype_is_raid10_far(segtype) ? 1 : 0;
|
||||
|
||||
if (seg_is_raid10_offset(seg)) {
|
||||
log_error("Can't change number of data copies on %s LV %s.",
|
||||
lvseg_name(seg), display_lvname(lv));
|
||||
goto err;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* raid10_{near,offset} case */
|
||||
if ((seg_is_raid10_near(seg) && segtype_is_raid10_offset(segtype)) ||
|
||||
(seg_is_raid10_offset(seg) && segtype_is_raid10_near(segtype))) {
|
||||
if (stripes >= seg->area_count)
|
||||
return 1;
|
||||
|
||||
goto err;
|
||||
}
|
||||
|
||||
/*
|
||||
* raid10_far is not reshapable in MD at all;
|
||||
* lvm/dm adds reshape capability to add/remove data_copies
|
||||
*/
|
||||
if (seg_is_raid10_far(seg) && segtype_is_raid10_far(segtype)) {
|
||||
if (stripes && stripes == seg->area_count &&
|
||||
data_copies > 1 &&
|
||||
data_copies <= seg->area_count &&
|
||||
data_copies != seg->data_copies)
|
||||
return 1;
|
||||
|
||||
goto err;
|
||||
|
||||
} else if (seg_is_any_raid10(seg) && segtype_is_any_raid10(segtype) &&
|
||||
data_copies > 1 && data_copies != seg->data_copies)
|
||||
goto err;
|
||||
#endif
|
||||
|
||||
/* Change layout (e.g. raid5_ls -> raid5_ra) keeping # of stripes */
|
||||
if (seg->segtype != segtype) {
|
||||
@ -2459,12 +2397,6 @@ static int _reshape_requested(const struct logical_volume *lv, const struct segm
|
||||
return (stripes || stripe_size) ? 1 : 0;
|
||||
|
||||
err:
|
||||
#if 0
|
||||
if (lv_is_duplicated(lv))
|
||||
log_error("Conversion of duplicating sub LV %s rejected.", display_lvname(lv));
|
||||
else
|
||||
log_error("Use \"lvconvert --duplicate --type %s ... %s.", segtype->name, display_lvname(lv));
|
||||
#endif
|
||||
return 2;
|
||||
}
|
||||
|
||||
|
@ -141,7 +141,7 @@ struct dev_manager;
|
||||
#define segtype_is_raid10(segtype) ((segtype)->flags & SEG_RAID10 ? 1 : 0)
|
||||
#define segtype_is_raid10_near(segtype) segtype_is_raid10(segtype)
|
||||
/* FIXME: once raid10_offset supported */
|
||||
#define segtype_is_raid10_offset(segtype) 0 // ((segtype)->flags & SEG_RAID10_OFFSET ? 1 : 0)
|
||||
#define segtype_is_raid10_offset(segtype) 0 /* FIXME ((segtype)->flags & SEG_RAID10_OFFSET ? 1 : 0 */
|
||||
#define segtype_is_raid_with_meta(segtype) (segtype_is_raid(segtype) && !segtype_is_raid0(segtype))
|
||||
#define segtype_is_striped_raid(segtype) (segtype_is_raid(segtype) && !segtype_is_raid1(segtype))
|
||||
#define segtype_is_reshapable_raid(segtype) ((segtype_is_striped_raid(segtype) && !segtype_is_any_raid0(segtype)) || segtype_is_raid10_near(segtype) || segtype_is_raid10_offset(segtype))
|
||||
|
@ -100,9 +100,10 @@ int attach_thin_external_origin(struct lv_segment *seg,
|
||||
external_lv->status &= ~LVM_WRITE;
|
||||
}
|
||||
|
||||
// TODO: should we mark even origin read-only ?
|
||||
//if (lv_is_cache(external_lv)) /* read-only corigin of cache LV */
|
||||
// seg_lv(first_seg(external_lv), 0)->status &= ~LVM_WRITE;
|
||||
/* FIXME Mark origin read-only?
|
||||
if (lv_is_cache(external_lv)) // read-only corigin of cache LV
|
||||
seg_lv(first_seg(external_lv), 0)->status &= ~LVM_WRITE;
|
||||
*/
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
@ -1734,9 +1734,11 @@ static int _dm_tree_deactivate_children(struct dm_tree_node *dnode,
|
||||
!child->callback(child, DM_NODE_CALLBACK_DEACTIVATED,
|
||||
child->callback_data))
|
||||
stack;
|
||||
// FIXME: We need to let lvremove pass,
|
||||
// so for now deactivation ignores check result
|
||||
//r = 0; // FIXME: _node_clear_table() without callback ?
|
||||
/* FIXME Deactivation must currently ignore failure
|
||||
* here so that lvremove can continue: we need an
|
||||
* alternative way to handle this state without
|
||||
* setting r=0. Or better, skip calling thin_check
|
||||
* entirely if the device is about to be removed. */
|
||||
|
||||
if (dm_tree_node_num_children(child, 0) &&
|
||||
!_dm_tree_deactivate_children(child, uuid_prefix, uuid_prefix_len, level + 1))
|
||||
@ -2457,17 +2459,8 @@ static int _raid_emit_segment_line(struct dm_task *dmt, uint32_t major,
|
||||
type = seg->type;
|
||||
if (type == SEG_RAID0_META)
|
||||
type = SEG_RAID0;
|
||||
#if 0
|
||||
/* Kernel only expects "raid10", not "raid10_{far,offset}" */
|
||||
else if (type == SEG_RAID10_FAR ||
|
||||
type == SEG_RAID10_OFFSET) {
|
||||
param_count += 2;
|
||||
type = SEG_RAID10_NEAR;
|
||||
}
|
||||
#endif
|
||||
|
||||
EMIT_PARAMS(pos, "%s %d %u",
|
||||
// type == SEG_RAID10_NEAR ? "raid10" : _dm_segtypes[type].target,
|
||||
type == SEG_RAID10 ? "raid10" : _dm_segtypes[type].target,
|
||||
param_count, seg->stripe_size);
|
||||
|
||||
@ -2508,12 +2501,7 @@ static int _raid_emit_segment_line(struct dm_task *dmt, uint32_t major,
|
||||
|
||||
if (seg->data_copies > 1 && type == SEG_RAID10)
|
||||
EMIT_PARAMS(pos, " raid10_copies %u", seg->data_copies);
|
||||
#if 0
|
||||
if (seg->type == SEG_RAID10_FAR)
|
||||
EMIT_PARAMS(pos, " raid10_format far");
|
||||
else if (seg->type == SEG_RAID10_OFFSET)
|
||||
EMIT_PARAMS(pos, " raid10_format offset");
|
||||
#endif
|
||||
|
||||
if (seg->delta_disks)
|
||||
EMIT_PARAMS(pos, " delta_disks %d", seg->delta_disks);
|
||||
|
||||
|
@ -186,7 +186,7 @@ liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION): liblvm2cmd.$(LIB_SUFFIX)
|
||||
|
||||
command-count.h: $(srcdir)/command-lines.in Makefile
|
||||
set -o pipefail && \
|
||||
( cat $(top_srcdir)/doc/license.txt && \
|
||||
( cat $(top_srcdir)/tools/license.inc && \
|
||||
echo "/* Do not edit. This file is generated by the Makefile. */" && \
|
||||
echo -n "#define COMMAND_COUNT " && \
|
||||
$(GREP) '^ID:' $(srcdir)/command-lines.in | $(WC) -l \
|
||||
@ -194,7 +194,7 @@ command-count.h: $(srcdir)/command-lines.in Makefile
|
||||
|
||||
cmds.h: $(srcdir)/command-lines.in Makefile
|
||||
set -o pipefail && \
|
||||
( cat $(top_srcdir)/doc/license.txt && \
|
||||
( cat $(top_srcdir)/tools/license.inc && \
|
||||
echo "/* Do not edit. This file is generated by the Makefile. */" && \
|
||||
echo "cmd(CMD_NONE, none)" && \
|
||||
$(GREP) '^ID:' $(srcdir)/command-lines.in | $(SORT) -u | $(AWK) '{print "cmd(" $$2 "_CMD, " $$2 ")"}' && \
|
||||
@ -203,7 +203,7 @@ cmds.h: $(srcdir)/command-lines.in Makefile
|
||||
|
||||
command-lines-input.h: $(srcdir)/command-lines.in Makefile
|
||||
set -o pipefail && \
|
||||
( cat $(top_srcdir)/doc/license.txt && \
|
||||
( cat $(top_srcdir)/tools/license.inc && \
|
||||
echo "/* Do not edit. This file is generated by the Makefile. */" && \
|
||||
echo -en "const char _command_input[] =\n\n\"" && \
|
||||
$(EGREP) -v '^#|\-\-\-|^$$' $(srcdir)/command-lines.in | $(AWK) 'BEGIN {ORS = "\\n\"\n\""} //' && \
|
||||
|
@ -105,7 +105,6 @@ struct arg_values {
|
||||
uint64_t ui64_value;
|
||||
sign_t sign;
|
||||
percent_type_t percent;
|
||||
/* void *ptr; // Currently not used. */
|
||||
};
|
||||
|
||||
struct arg_value_group_list {
|
||||
|
Loading…
Reference in New Issue
Block a user