File sleep-try-open-count.diff of Package lvm2

---
 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 <stdarg.h>
 #include <sys/param.h>
 #include <sys/utsname.h>
+#include <time.h>
 
 #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
openSUSE Build Service is sponsored by