From 954c59779d35436a6d2f28482ec1ed6dc128844c Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Sat, 17 Dec 2016 22:40:59 +0100 Subject: [PATCH] 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. --- WHATS_NEW_DM | 1 + libdm/libdm-deptree.c | 4 ++++ 2 files changed, 5 insertions(+) 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