summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2016-12-17 22:40:59 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2016-12-18 19:29:08 +0100
commit954c59779d35436a6d2f28482ec1ed6dc128844c (patch)
treea6aee5b7cec5e6a323634872b80c75eb55b4a1d2
parent29b0e42be3026a11c86fc05f82f6a14e71d26cc8 (diff)
downloadlvm2-954c59779d35436a6d2f28482ec1ed6dc128844c.tar.gz
libdm: drop callback on revert path
The system is likely in some very inconsisten state. Do not try to make it even more problematic with trying to invoke tools like thin_check via callback.
-rw-r--r--WHATS_NEW_DM1
-rw-r--r--libdm/libdm-deptree.c4
2 files changed, 5 insertions, 0 deletions
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index ab32bdba5..d57ddd792 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,6 @@
Version 1.02.138 -
=====================================
+ Do not try call callback when reverting activation on error path.
Fix file mapping for extents with physically adjacent extents.
Validation vsnprintf result in runtime translate of dm_log (1.02.136).
Separate filemap extent allocation from region table.
diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
index cf6a06ec3..c5226a707 100644
--- a/libdm/libdm-deptree.c
+++ b/libdm/libdm-deptree.c
@@ -2778,6 +2778,10 @@ static int _dm_tree_revert_activated(struct dm_tree_node *parent)
dm_list_iterate_items_gen(child, &parent->activated, activated_list) {
log_debug_activation("Reverting %s.", child->name);
+ if (child->callback) {
+ log_debug_activation("Dropping callback for %s.", child->name);
+ child->callback = NULL;
+ }
if (!_deactivate_node(child->name, child->info.major, child->info.minor,
&child->dtree->cookie, child->udev_flags, 0)) {
log_error("Unable to deactivate %s (%" PRIu32