f1a960eb91
- lvm2.spec: merge rules for device-mapper and lvm2-clvm packages, so there is only one spec file and all packages are built consistently. OBS-URL: https://build.opensuse.org/request/show/138672 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/lvm2?expand=0&rev=47
35 lines
974 B
Diff
35 lines
974 B
Diff
---
|
|
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
|