--- libdm/libdm-deptree.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) --- LVM2.2.02.98.orig/libdm/libdm-deptree.c +++ LVM2.2.02.98/libdm/libdm-deptree.c @@ -20,6 +20,7 @@ #include #include #include +#include #define MAX_TARGET_PARAMSIZE 500000 @@ -1570,6 +1571,19 @@ static int _dm_tree_deactivate_children( if ((child->presuspend_node && !_node_has_closed_parents(child->presuspend_node, uuid_prefix, uuid_prefix_len))) { + + int idx = 10; + while (info.open_count && idx--) { + struct timespec ts = {0, 500000000}; + nanosleep(&ts, NULL); + _info_by_dev(dinfo->major, dinfo->minor, 1, &info, NULL, NULL, NULL); + } + + if (info.open_count) { + log_error("give up on open_count"); + continue; + } + /* Only report error from (likely non-internal) dependency at top level */ if (!level) { log_error("Unable to deactivate open %s (%" PRIu32