mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
pvmove: tidy
This commit is contained in:
parent
bc0a1ca83d
commit
b33091cb11
@ -6,7 +6,7 @@ Version 2.02.107 -
|
||||
Add -S/--select to pvs,vgs,lvs and {pv,vg,lv}display -C for report selection.
|
||||
Use dm_report_init_with_selection now, implicit "selected" field appears.
|
||||
Make use of libdm's DM_REPORT_FIELD_TYPE{SIZE,PERCENT,STRING_LIST} for fields.
|
||||
Add support for all-or-nothing (atomic) pvmove.
|
||||
Support all-or-nothing pvmove --atomic.
|
||||
Automatically add snapshot metadata size for -l %ORIGIN calculation.
|
||||
When converting RAID origin to cache LV, properly rename sub-LVs.
|
||||
Use RemoveOnStop for lvm2-lvmetad.socket systemd unit.
|
||||
|
@ -133,10 +133,8 @@
|
||||
/* Mirror conversion type flags */
|
||||
#define MIRROR_BY_SEG 0x00000001U /* segment-by-segment mirror */
|
||||
#define MIRROR_BY_LV 0x00000002U /* mirror using whole mimage LVs */
|
||||
#define MIRROR_BY_SEGMENTED_LV 0x00000004U /* mirror using whole mimage
|
||||
* LVs, but preserve the
|
||||
* segment layout templated by
|
||||
* the primary mimage */
|
||||
#define MIRROR_BY_SEGMENTED_LV 0x00000004U /* mirror using whole mimage LVs that
|
||||
* preserve the segment structure */
|
||||
#define MIRROR_SKIP_INIT_SYNC 0x00000010U /* skip initial sync */
|
||||
|
||||
/* vg_read and vg_read_for_update flags */
|
||||
|
@ -17,7 +17,6 @@
|
||||
* Put all long args that don't have a corresponding short option first.
|
||||
*/
|
||||
/* *INDENT-OFF* */
|
||||
arg(atomic_ARG, '\0', "atomic", NULL, 0)
|
||||
arg(version_ARG, '\0', "version", NULL, 0)
|
||||
arg(physicalvolumesize_ARG, '\0', "setphysicalvolumesize", size_mb_arg, 0)
|
||||
arg(ignorelockingfailure_ARG, '\0', "ignorelockingfailure", NULL, 0)
|
||||
@ -108,6 +107,7 @@ arg(mergedconfig_ARG, '\0', "mergedconfig", NULL, 0)
|
||||
arg(ignoreskippedcluster_ARG, '\0', "ignoreskippedcluster", NULL, 0)
|
||||
arg(splitsnapshot_ARG, '\0', "splitsnapshot", NULL, 0)
|
||||
arg(readonly_ARG, '\0', "readonly", NULL, 0)
|
||||
arg(atomic_ARG, '\0', "atomic", NULL, 0)
|
||||
|
||||
/* Allow some variations */
|
||||
arg(resizable_ARG, '\0', "resizable", yes_no_arg, 0)
|
||||
|
@ -764,9 +764,9 @@ xx(pvmove,
|
||||
0,
|
||||
"pvmove " "\n"
|
||||
"\t[--abort]\n"
|
||||
"\t[--alloc AllocationPolicy]\n"
|
||||
"\t[--atomic]\n"
|
||||
"\t[-A|--autobackup {y|n}]\n"
|
||||
"\t[--alloc AllocationPolicy]\n"
|
||||
"\t[-b|--background]\n"
|
||||
"\t[--commandprofile ProfileName]\n"
|
||||
"\t[-d|--debug]\n "
|
||||
@ -781,7 +781,7 @@ xx(pvmove,
|
||||
"\tSourcePhysicalVolume[:PhysicalExtent[-PhysicalExtent]...]}\n"
|
||||
"\t[DestinationPhysicalVolume[:PhysicalExtent[-PhysicalExtent]...]...]\n",
|
||||
|
||||
abort_ARG, atomic_ARG, alloc_ARG, autobackup_ARG, background_ARG,
|
||||
abort_ARG, alloc_ARG, atomic_ARG, autobackup_ARG, background_ARG,
|
||||
interval_ARG, name_ARG, noudevsync_ARG, test_ARG)
|
||||
|
||||
xx(pvremove,
|
||||
|
@ -520,30 +520,28 @@ static int _activate_lv(struct cmd_context *cmd, struct logical_volume *lv_mirr,
|
||||
static int _is_pvmove_image_removable(struct logical_volume *mimage_lv,
|
||||
void *baton)
|
||||
{
|
||||
uint32_t s = *((uint32_t *)baton);
|
||||
uint32_t mimage_to_remove = *((uint32_t *)baton);
|
||||
struct lv_segment *mirror_seg;
|
||||
|
||||
if (!(mirror_seg = get_only_segment_using_this_lv(mimage_lv))) {
|
||||
log_error(INTERNAL_ERROR
|
||||
"%s is not a proper mirror image",
|
||||
log_error(INTERNAL_ERROR "%s is not a proper mirror image",
|
||||
mimage_lv->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (seg_type(mirror_seg, 0) != AREA_LV) {
|
||||
log_error(INTERNAL_ERROR
|
||||
"%s is not a pvmove mirror of LV-type",
|
||||
log_error(INTERNAL_ERROR "%s is not a pvmove mirror of LV-type",
|
||||
mirror_seg->lv->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (s > mirror_seg->area_count) {
|
||||
log_error(INTERNAL_ERROR
|
||||
"Invalid segment number");
|
||||
if (mimage_to_remove > mirror_seg->area_count) {
|
||||
log_error(INTERNAL_ERROR "Mirror image %" PRIu32 " not found in segment",
|
||||
mimage_to_remove);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (seg_lv(mirror_seg, s) == mimage_lv)
|
||||
if (seg_lv(mirror_seg, mimage_to_remove) == mimage_lv)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
@ -552,7 +550,7 @@ static int _is_pvmove_image_removable(struct logical_volume *mimage_lv,
|
||||
static int _detach_pvmove_mirror(struct cmd_context *cmd,
|
||||
struct logical_volume *lv_mirr)
|
||||
{
|
||||
uint32_t s = 0;
|
||||
uint32_t mimage_to_remove = 0;
|
||||
struct dm_list lvs_completed;
|
||||
struct lv_list *lvl;
|
||||
|
||||
@ -561,10 +559,9 @@ static int _detach_pvmove_mirror(struct cmd_context *cmd,
|
||||
|
||||
if (arg_is_set(cmd, abort_ARG) &&
|
||||
(seg_type(first_seg(lv_mirr), 0) == AREA_LV))
|
||||
s = 1; /* remove the second mirror leg */
|
||||
mimage_to_remove = 1; /* remove the second mirror leg */
|
||||
|
||||
if (!lv_remove_mirrors(cmd, lv_mirr, 1, 0,
|
||||
_is_pvmove_image_removable, &s, PVMOVE) ||
|
||||
if (!lv_remove_mirrors(cmd, lv_mirr, 1, 0, _is_pvmove_image_removable, &mimage_to_remove, PVMOVE) ||
|
||||
!remove_layers_for_segments_all(cmd, lv_mirr, PVMOVE,
|
||||
&lvs_completed)) {
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user