1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

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.
This commit is contained in:
Zdenek Kabelac 2014-11-04 09:42:15 +01:00
parent 7092b47ec9
commit 89233544e0
2 changed files with 4 additions and 1 deletions

View File

@ -1,5 +1,6 @@
Version 1.02.91 - 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(). Don't print uninitialized stack bytes when non-root uses dm_check_version().
Fix selection criteria to not match reserved values when using >, <, >=, <. Fix selection criteria to not match reserved values when using >, <, >=, <.
Add DM_LIST_HEAD_INIT macro to libdevmapper.h Add DM_LIST_HEAD_INIT macro to libdevmapper.h

View File

@ -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->metadata->props.delay_resume_if_new = 0;
seg->pool->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->transaction_id = transaction_id;
seg->low_water_mark = low_water_mark; seg->low_water_mark = low_water_mark;
seg->data_block_size = data_block_size; 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; tm->message.type = type;
dm_list_add(&seg->thin_messages, &tm->list); dm_list_add(&seg->thin_messages, &tm->list);
node->props.send_messages = 1;
return 1; return 1;
} }