|
|
d2cc5b0 |
WHATS_NEW | 4 ++++
|
|
|
d2cc5b0 |
lib/activate/activate.c | 5 +++++
|
|
|
d2cc5b0 |
lib/activate/activate.h | 2 ++
|
|
|
d2cc5b0 |
lib/metadata/lv_manip.c | 6 ++++++
|
|
|
d2cc5b0 |
4 files changed, 17 insertions(+)
|
|
|
d2cc5b0 |
|
|
|
d2cc5b0 |
diff --git a/WHATS_NEW b/WHATS_NEW
|
|
|
d2cc5b0 |
index 3953c7e..c8f869c 100644
|
|
|
d2cc5b0 |
--- a/WHATS_NEW
|
|
|
d2cc5b0 |
+++ b/WHATS_NEW
|
|
|
d2cc5b0 |
@@ -1,5 +1,9 @@
|
|
|
d2cc5b0 |
Version 2.03.12 -
|
|
|
d2cc5b0 |
===================================
|
|
|
d2cc5b0 |
+ Check if lvcreate passes read_only_volume_list with tags and skips zeroing.
|
|
|
d2cc5b0 |
+ Limit pool metadata spare to 16GiB.
|
|
|
d2cc5b0 |
+ Improves conversion and allocation of pool metadata.
|
|
|
d2cc5b0 |
+ Support thin pool metadata 15.88GiB, adds 64MiB, thin_pool_crop_metadata=0.
|
|
|
d2cc5b0 |
Fix problem with wiping of converted LVs.
|
|
|
d2cc5b0 |
Fix memleak in scanning (2.03.11).
|
|
|
d2cc5b0 |
Fix corner case allocation for thin-pools.
|
|
|
d2cc5b0 |
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
|
|
|
d2cc5b0 |
index 7ed6441..de866fb 100644
|
|
|
d2cc5b0 |
--- a/lib/activate/activate.c
|
|
|
d2cc5b0 |
+++ b/lib/activate/activate.c
|
|
|
d2cc5b0 |
@@ -466,6 +466,11 @@ static int _passes_readonly_filter(struct cmd_context *cmd,
|
|
|
d2cc5b0 |
return _lv_passes_volumes_filter(cmd, lv, cn, activation_read_only_volume_list_CFG);
|
|
|
d2cc5b0 |
}
|
|
|
d2cc5b0 |
|
|
|
d2cc5b0 |
+int lv_passes_readonly_filter(const struct logical_volume *lv)
|
|
|
d2cc5b0 |
+{
|
|
|
d2cc5b0 |
+ return _passes_readonly_filter(lv->vg->cmd, lv);
|
|
|
d2cc5b0 |
+}
|
|
|
d2cc5b0 |
+
|
|
|
d2cc5b0 |
int library_version(char *version, size_t size)
|
|
|
d2cc5b0 |
{
|
|
|
d2cc5b0 |
if (!activation())
|
|
|
d2cc5b0 |
diff --git a/lib/activate/activate.h b/lib/activate/activate.h
|
|
|
d2cc5b0 |
index 3f4d128..53c8631 100644
|
|
|
d2cc5b0 |
--- a/lib/activate/activate.h
|
|
|
d2cc5b0 |
+++ b/lib/activate/activate.h
|
|
|
d2cc5b0 |
@@ -208,6 +208,8 @@ int lvs_in_vg_opened(const struct volume_group *vg);
|
|
|
d2cc5b0 |
|
|
|
d2cc5b0 |
int lv_is_active(const struct logical_volume *lv);
|
|
|
d2cc5b0 |
|
|
|
d2cc5b0 |
+int lv_passes_readonly_filter(const struct logical_volume *lv);
|
|
|
d2cc5b0 |
+
|
|
|
d2cc5b0 |
/* Check is any component LV is active */
|
|
|
d2cc5b0 |
const struct logical_volume *lv_component_is_active(const struct logical_volume *lv);
|
|
|
d2cc5b0 |
const struct logical_volume *lv_holder_is_active(const struct logical_volume *lv);
|
|
|
d2cc5b0 |
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
|
|
|
d2cc5b0 |
index 445c4ad..5ff64a3 100644
|
|
|
d2cc5b0 |
--- a/lib/metadata/lv_manip.c
|
|
|
d2cc5b0 |
+++ b/lib/metadata/lv_manip.c
|
|
|
d2cc5b0 |
@@ -7976,6 +7976,12 @@ static int _should_wipe_lv(struct lvcreate_params *lp,
|
|
|
d2cc5b0 |
first_seg(first_seg(lv)->pool_lv)->zero_new_blocks))
|
|
|
d2cc5b0 |
return 0;
|
|
|
d2cc5b0 |
|
|
|
d2cc5b0 |
+ if (warn && (lv_passes_readonly_filter(lv))) {
|
|
|
d2cc5b0 |
+ log_warn("WARNING: Read-only activated logical volume %s not zeroed.",
|
|
|
d2cc5b0 |
+ display_lvname(lv));
|
|
|
d2cc5b0 |
+ return 0;
|
|
|
d2cc5b0 |
+ }
|
|
|
d2cc5b0 |
+
|
|
|
d2cc5b0 |
/* Cannot zero read-only volume */
|
|
|
d2cc5b0 |
if ((lv->status & LVM_WRITE) &&
|
|
|
d2cc5b0 |
(lp->zero || lp->wipe_signatures))
|