[lvm-devel] master - libdm: allow to activate any pool with tid == 0
Zdenek Kabelac
zkabelac at fedoraproject.org
Tue Nov 4 14:32:59 UTC 2014
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=89233544e00a0acfad82055b737ebcce41919d58
Commit: 89233544e00a0acfad82055b737ebcce41919d58
Parent: 7092b47ec90571668c30ef38a9ec251adcff2c82
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Tue Nov 4 09:42:15 2014 +0100
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Tue Nov 4 15:28:00 2014 +0100
libdm: allow to activate any pool with tid == 0
When transaction_id is set 0 for thin-pool, libdm avoids validation
of thin-pool, unless there are real messages to be send to thin-pool.
This relaxes strict policy which always required to know
in front transaction_id for the kernel target.
It now allows to activate thin-pool with any transaction_id
(when transaction_id is passed in)
It is now upto application to validate transaction_id from life
thin-pool volume with transaction_id within it's own metadata.
---
WHATS_NEW_DM | 1 +
libdm/libdm-deptree.c | 4 +++-
2 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index 6b5ee3a..0305077 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,6 @@
Version 1.02.91 -
====================================
+ Allow activation of any thin-pool with passed transaction_id == 0.
Don't print uninitialized stack bytes when non-root uses dm_check_version().
Fix selection criteria to not match reserved values when using >, <, >=, <.
Add DM_LIST_HEAD_INIT macro to libdevmapper.h
diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
index 0048b1c..d120bf5 100644
--- a/libdm/libdm-deptree.c
+++ b/libdm/libdm-deptree.c
@@ -3757,7 +3757,8 @@ int dm_tree_node_add_thin_pool_target(struct dm_tree_node *node,
seg->metadata->props.delay_resume_if_new = 0;
seg->pool->props.delay_resume_if_new = 0;
- node->props.send_messages = 1;
+ /* Validate only transaction_id > 0 when activating thin-pool */
+ node->props.send_messages = transaction_id ? 1 : 0;
seg->transaction_id = transaction_id;
seg->low_water_mark = low_water_mark;
seg->data_block_size = data_block_size;
@@ -3826,6 +3827,7 @@ int dm_tree_node_add_thin_pool_message(struct dm_tree_node *node,
tm->message.type = type;
dm_list_add(&seg->thin_messages, &tm->list);
+ node->props.send_messages = 1;
return 1;
}
More information about the lvm-devel
mailing list