[PATCH] Bypass util.run_program to avoid logging deadlock.
David Lehman
dlehman at redhat.com
Fri Oct 16 12:37:39 UTC 2015
Resolves: rhbz#1272133
---
blivet/formats/disklabel.py | 2 +-
blivet/udev.py | 13 +++++++++++--
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/blivet/formats/disklabel.py b/blivet/formats/disklabel.py
index fbd69cc..c0fa069 100644
--- a/blivet/formats/disklabel.py
+++ b/blivet/formats/disklabel.py
@@ -170,7 +170,7 @@ class DiskLabel(DeviceFormat):
else:
log.debug("Did not change pmbr_boot on %s", self._partedDisk)
- udev.settle()
+ udev.settle(quiet=True)
return self._partedDisk
@property
diff --git a/blivet/udev.py b/blivet/udev.py
index 2a86b5f..4cec790 100644
--- a/blivet/udev.py
+++ b/blivet/udev.py
@@ -23,6 +23,7 @@
import os
import re
+import subprocess
from . import util
from .size import Size
@@ -51,11 +52,19 @@ def get_devices(subsystem="block"):
return [d for d in global_udev.list_devices(subsystem=subsystem)
if not __is_blacklisted_blockdev(d.sys_name)]
-def settle():
+def settle(quiet=False):
+ """ Wait for the udev queue to settle.
+
+ :keyword bool quiet: bypass :meth:`blivet.util.run_program`
+ """
# wait maximal 300 seconds for udev to be done running blkid, lvm,
# mdadm etc. This large timeout is needed when running on machines with
# lots of disks, or with slow disks
- util.run_program(["udevadm", "settle", "--timeout=300"])
+ argv = ["udevadm", "settle", "--timeout=300"]
+ if quiet:
+ subprocess.call(argv, close_fds=True)
+ else:
+ util.run_program(argv)
def trigger(subsystem=None, action="add", name=None):
argv = ["trigger", "--action=%s" % action]
--
2.4.3
More information about the anaconda-patches
mailing list