1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-19 14:04:17 +03:00

vgsplit: add support for option --poolmetadataspare

When splitting VG with thin/cache pool volume, handle pmspare during
such split and allocate new pmspare in new VG or extend existing pmspare
there and eventually drop  pmspare in original VG if is no longer needed
there.

(cherry picked from commit 2132fdc11f7bc285638765e001bef6a3e595b286)

Conflicts:
	WHATS_NEW

(cherry picked from commit 03bbbd14f8433cfd2b8f7e3480e2fd4534241fcc)
This commit is contained in:
Zdenek Kabelac 2021-07-20 22:33:05 +02:00 committed by Marian Csontos
parent 9ce7bfdf42
commit 1961ca0ba5
5 changed files with 30 additions and 1 deletions

View File

@ -1,5 +1,6 @@
Version 2.03.13 -
===============================
Support --poolmetadataspare with vgsplit.
Fix detection of active components of external origin volume.
Add vdoimport tool to support conversion of VDO volumes.
Support configurable allocation/vdo_pool_header_size.

View File

@ -722,6 +722,17 @@ int handle_pool_metadata_spare(struct volume_group *vg, uint32_t extents,
return 1;
}
if (!extents) {
/* pmspare is not needed */
if (lv) {
log_debug_metadata("Dropping unused pool metadata spare LV %s.",
display_lvname(lv));
if (!lv_remove_single(vg->cmd, lv, DONT_PROMPT, 0))
return_0;
}
return 1;
}
if (extents > MAX_SIZE)
extents = MAX_SIZE;

View File

@ -70,6 +70,8 @@ Common options for command:
.hy
]
.br
[ \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
.br
[ \fB--\fP[\fBvg\fP]\fBmetadatacopies\fP \fBall\fP|\fBunmanaged\fP|\fINumber\fP ]
.ad b
.RE
@ -235,6 +237,13 @@ Move only PVs used by the named LV.
Disable locking.
.
.HP
\fB--poolmetadataspare\fP \fBy\fP|\fBn\fP
.br
Enable or disable the automatic creation and management of a
spare pool metadata LV in the VG. A spare metadata LV is reserved
space that can be used when repairing a pool.
.
.HP
\fB--profile\fP \fIString\fP
.br
An alias for --commandprofile or --metadataprofile, depending

View File

@ -1912,7 +1912,7 @@ ID: vgscan_general
---
OO_VGSPLIT: --autobackup Bool
OO_VGSPLIT: --autobackup Bool, --poolmetadataspare Bool
# used only when the destination VG is new
OO_VGSPLIT_NEW: --alloc Alloc,

View File

@ -525,6 +525,7 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
int existing_vg = 0;
int r = ECMD_FAILED;
const char *lv_name;
int poolmetadataspare = arg_int_value(cmd, poolmetadataspare_ARG, DEFAULT_POOL_METADATA_SPARE);
if ((arg_is_set(cmd, name_ARG) + argc) < 3) {
log_error("Existing VG, new VG and either physical volumes "
@ -699,6 +700,13 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
*/
vg_to->status |= EXPORTED_VG;
if (!handle_pool_metadata_spare(vg_to, 0, &vg_to->pvs, poolmetadataspare))
goto_bad;
if (!handle_pool_metadata_spare(vg_from, 0, &vg_from->pvs, poolmetadataspare))
goto_bad;
if (!archive(vg_to))
goto_bad;