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

Set delay_resume_if_new on deptree snapshot origin.

(Must avoid activating snapshot origin more than once concurrently.)
This commit is contained in:
Alasdair Kergon 2012-05-15 21:27:24 +00:00
parent 61712a1f0d
commit f1aabd5c60
2 changed files with 11 additions and 2 deletions

View File

@ -1,5 +1,6 @@
Version 1.02.75 - Version 1.02.75 -
================================ ================================
Set delay_resume_if_new on deptree snapshot origin.
Log value chosen in _find_config_bool like other variable types do. Log value chosen in _find_config_bool like other variable types do.
Synchronize with dead of dmeventd. Synchronize with dead of dmeventd.
Rename (Blk)DevNames/DevNos dmsetup header to (Blk)DevNamesUsed/DevNosUsed. Rename (Blk)DevNames/DevNos dmsetup header to (Blk)DevNamesUsed/DevNosUsed.

View File

@ -2358,8 +2358,10 @@ static int _load_node(struct dm_tree_node *dnode)
if ((r = dm_task_run(dmt))) { if ((r = dm_task_run(dmt))) {
r = dm_task_get_info(dmt, &dnode->info); r = dm_task_get_info(dmt, &dnode->info);
if (r && !dnode->info.inactive_table) if (r && !dnode->info.inactive_table)
log_verbose("Suppressed %s identical table reload.", log_verbose("Suppressed %s (%" PRIu32 ":%" PRIu32
dnode->name); ") identical table reload.",
dnode->name,
dnode->info.major, dnode->info.minor);
existing_table_size = dm_task_get_existing_table_size(dmt); existing_table_size = dm_task_get_existing_table_size(dmt);
if ((dnode->props.size_changed = if ((dnode->props.size_changed =
@ -2548,6 +2550,12 @@ int dm_tree_node_add_snapshot_origin_target(struct dm_tree_node *dnode,
/* Resume snapshot origins after new snapshots */ /* Resume snapshot origins after new snapshots */
dnode->activation_priority = 1; dnode->activation_priority = 1;
/*
* Don't resume the origin immediately in case it is a non-trivial
* target that must not be active more than once concurrently!
*/
origin_node->props.delay_resume_if_new = 1;
return 1; return 1;
} }