lvm2/sleep-try-open-count.diff

25 lines
833 B
Diff
Raw Normal View History

Index: LVM2.2.02.67/libdm/libdm-deptree.c
===================================================================
--- LVM2.2.02.67.orig/libdm/libdm-deptree.c
+++ LVM2.2.02.67/libdm/libdm-deptree.c
@@ -1143,6 +1143,19 @@ static int _dm_tree_deactivate_children(
(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);
+ }
+
+ 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