mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
libdm: add dm_tree_node_add_thin_pool_target_v1
Supports thin-pool without crop.
This commit is contained in:
parent
25b942a8ac
commit
48030389ce
@ -1,5 +1,6 @@
|
|||||||
Version 1.02.177 -
|
Version 1.02.177 -
|
||||||
====================================
|
====================================
|
||||||
|
Add dm_tree_node_add_thin_pool_target_v1 with crop_metadata support.
|
||||||
|
|
||||||
Version 1.02.175 - 08th January 2021
|
Version 1.02.175 - 08th January 2021
|
||||||
====================================
|
====================================
|
||||||
|
1
libdm/.exported_symbols.DM_1_02_172
Normal file
1
libdm/.exported_symbols.DM_1_02_172
Normal file
@ -0,0 +1 @@
|
|||||||
|
dm_tree_node_add_thin_pool_target_v1
|
@ -1968,10 +1968,10 @@ int dm_tree_node_add_replicator_dev_target(struct dm_tree_node *node,
|
|||||||
#define DM_THIN_MIN_DATA_BLOCK_SIZE (UINT32_C(128))
|
#define DM_THIN_MIN_DATA_BLOCK_SIZE (UINT32_C(128))
|
||||||
#define DM_THIN_MAX_DATA_BLOCK_SIZE (UINT32_C(2097152))
|
#define DM_THIN_MAX_DATA_BLOCK_SIZE (UINT32_C(2097152))
|
||||||
/*
|
/*
|
||||||
* Max supported size for thin pool metadata device (17112760320 bytes)
|
* Max supported size for thin pool metadata device (17045913600 bytes)
|
||||||
* Limitation is hardcoded into the kernel and bigger device size
|
|
||||||
* is not accepted.
|
|
||||||
* drivers/md/dm-thin-metadata.h THIN_METADATA_MAX_SECTORS
|
* drivers/md/dm-thin-metadata.h THIN_METADATA_MAX_SECTORS
|
||||||
|
* But here DM_THIN_MAX_METADATA_SIZE got defined incorrectly
|
||||||
|
* Correct size is (UINT64_C(255) * ((1 << 14) - 64) * (4096 / (1 << 9)))
|
||||||
*/
|
*/
|
||||||
#define DM_THIN_MAX_METADATA_SIZE (UINT64_C(255) * (1 << 14) * (4096 / (1 << 9)) - 256 * 1024)
|
#define DM_THIN_MAX_METADATA_SIZE (UINT64_C(255) * (1 << 14) * (4096 / (1 << 9)) - 256 * 1024)
|
||||||
|
|
||||||
@ -1984,6 +1984,16 @@ int dm_tree_node_add_thin_pool_target(struct dm_tree_node *node,
|
|||||||
uint64_t low_water_mark,
|
uint64_t low_water_mark,
|
||||||
unsigned skip_block_zeroing);
|
unsigned skip_block_zeroing);
|
||||||
|
|
||||||
|
int dm_tree_node_add_thin_pool_target_v1(struct dm_tree_node *node,
|
||||||
|
uint64_t size,
|
||||||
|
uint64_t transaction_id,
|
||||||
|
const char *metadata_uuid,
|
||||||
|
const char *pool_uuid,
|
||||||
|
uint32_t data_block_size,
|
||||||
|
uint64_t low_water_mark,
|
||||||
|
unsigned skip_block_zeroing,
|
||||||
|
unsigned crop_metadata);
|
||||||
|
|
||||||
/* Supported messages for thin provision target */
|
/* Supported messages for thin provision target */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
DM_THIN_MESSAGE_CREATE_SNAP, /* device_id, origin_id */
|
DM_THIN_MESSAGE_CREATE_SNAP, /* device_id, origin_id */
|
||||||
|
@ -3502,6 +3502,24 @@ int dm_tree_node_add_thin_pool_target(struct dm_tree_node *node,
|
|||||||
uint32_t data_block_size,
|
uint32_t data_block_size,
|
||||||
uint64_t low_water_mark,
|
uint64_t low_water_mark,
|
||||||
unsigned skip_block_zeroing)
|
unsigned skip_block_zeroing)
|
||||||
|
{
|
||||||
|
return dm_tree_node_add_thin_pool_target_v1(node, size, transaction_id,
|
||||||
|
metadata_uuid, pool_uuid,
|
||||||
|
data_block_size,
|
||||||
|
low_water_mark,
|
||||||
|
skip_block_zeroing,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int dm_tree_node_add_thin_pool_target_v1(struct dm_tree_node *node,
|
||||||
|
uint64_t size,
|
||||||
|
uint64_t transaction_id,
|
||||||
|
const char *metadata_uuid,
|
||||||
|
const char *pool_uuid,
|
||||||
|
uint32_t data_block_size,
|
||||||
|
uint64_t low_water_mark,
|
||||||
|
unsigned skip_block_zeroing,
|
||||||
|
unsigned crop_metadata)
|
||||||
{
|
{
|
||||||
struct load_segment *seg, *mseg;
|
struct load_segment *seg, *mseg;
|
||||||
uint64_t devsize = 0;
|
uint64_t devsize = 0;
|
||||||
@ -3529,6 +3547,7 @@ int dm_tree_node_add_thin_pool_target(struct dm_tree_node *node,
|
|||||||
if (!_link_tree_nodes(node, seg->metadata))
|
if (!_link_tree_nodes(node, seg->metadata))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
|
if (crop_metadata)
|
||||||
/* FIXME: more complex target may need more tweaks */
|
/* FIXME: more complex target may need more tweaks */
|
||||||
dm_list_iterate_items(mseg, &seg->metadata->props.segs) {
|
dm_list_iterate_items(mseg, &seg->metadata->props.segs) {
|
||||||
devsize += mseg->size;
|
devsize += mseg->size;
|
||||||
|
Loading…
Reference in New Issue
Block a user