mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +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.
This commit is contained in:
parent
5042463c50
commit
2132fdc11f
@ -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.
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user