[lvm-devel] master - thin: use LV_TEMPORARY for metadata initialization
Zdenek Kabelac
zkabelac at fedoraproject.org
Fri Jan 24 11:30:41 UTC 2014
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=731c298e12e36e338afdbda029e6cffb2c98b3eb
Commit: 731c298e12e36e338afdbda029e6cffb2c98b3eb
Parent: 432ff4bd720596bd3e56290c29646e8ba43575fb
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Fri Jan 24 12:28:35 2014 +0100
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Jan 24 12:30:28 2014 +0100
thin: use LV_TEMPORARY for metadata initialization
This flag need to be specified when we create thin pool - to avoid
scanning device with watch rules.
---
WHATS_NEW | 1 +
lib/metadata/metadata-exported.h | 7 ++++---
lib/metadata/pool_manip.c | 9 ++++++++-
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 04d62e5..6818026 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.106 -
====================================
+ Avoid exposing temporary devices when initializing thin pool volume.
Fix test when checking target version for available thin features.
Detect thin feature external_origin_extend and limit extend when missing.
Rename internal pool_can_resize_metadata() to thin_pool_feature_supported().
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index 6e7987d..2f1f9ec 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -105,9 +105,10 @@
#define LV_NOSCAN UINT64_C(0x0000080000000000) /* LV - internal use only - the LV
should not be scanned */
#define LV_TEMPORARY UINT64_C(0x0000100000000000) /* LV - internal use only - the LV
- is supposed to be created and
- removed during single LVM
- command execution. */
+ is supposed to be created and
+ removed or reactivated with
+ this flag dropped during single
+ LVM command execution. */
/* Format features flags */
#define FMT_SEGMENTS 0x00000001U /* Arbitrary segment params? */
diff --git a/lib/metadata/pool_manip.c b/lib/metadata/pool_manip.c
index 148b30c..2cb0c27 100644
--- a/lib/metadata/pool_manip.c
+++ b/lib/metadata/pool_manip.c
@@ -241,7 +241,13 @@ int create_pool(struct logical_volume *pool_lv,
*
* FIXME: implement lazy clearing when activation is disabled
*/
- /* pool_lv is a new LV so the VG lock protects us */
+ /*
+ * pool_lv is a new LV so the VG lock protects us
+ * Pass in LV_TEMPORARY flag, since device is activated purely for wipe
+ * and later it is either deactivated (in cluster)
+ * or directly converted to invisible device via suspend/resume
+ */
+ pool_lv->status |= LV_TEMPORARY;
if (!activate_lv_local(pool_lv->vg->cmd, pool_lv) ||
/* Clear 4KB of metadata device for new thin-pool. */
!wipe_lv(pool_lv, (struct wipe_params) { .do_zero = 1 })) {
@@ -249,6 +255,7 @@ int create_pool(struct logical_volume *pool_lv,
pool_lv->name);
goto bad;
}
+ pool_lv->status &= LV_TEMPORARY;
}
if (dm_snprintf(name, sizeof(name), "%s_%s", pool_lv->name,
More information about the lvm-devel
mailing list