nixpkgs/pkgs/tools/filesystems/nixpart/0.4/blivet.patch
aszlig 24ae34c0d7
nixpart0: Fix race condition in formatting devices
This adds a backport of rhinstaller/blivet#39 to the pinned blivet
version 0.17, it's addressing the following upstream bug:

https://bugzilla.redhat.com/show_bug.cgi?id=1196397

It has been reported at aszlig/nixpart#7 and tested by @manveru (the
issue reporter), thanks a lot.

Thanks also to @domenkozar for finding the upstream issue.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Reported-by: Michael Fellinger <m.fellinger@gmail.com>
Fixes: aszlig/nixpart#7
2016-01-22 13:30:43 +01:00

52 lines
1.6 KiB
Diff

diff --git a/blivet/pyudev.py b/blivet/pyudev.py
index 705b93d..7268d71 100644
--- a/blivet/pyudev.py
+++ b/blivet/pyudev.py
@@ -7,9 +7,9 @@ from ctypes import *
# XXX this one may need some tweaking...
-def find_library(name, somajor=0):
+def find_library(name):
env = os.environ.get("LD_LIBRARY_PATH")
- common = ["/lib64", "/lib"]
+ common = ["/lib64", "/lib", "/lib/x86_64-linux-gnu", "/lib/i686-linux-gnu"]
if env:
libdirs = env.split(":") + common
@@ -19,7 +19,7 @@ def find_library(name, somajor=0):
libdirs = filter(os.path.isdir, libdirs)
for dir in libdirs:
- files = fnmatch.filter(os.listdir(dir), "lib%s.so.%d" % (name, somajor))
+ files = fnmatch.filter(os.listdir(dir), "lib%s.so.*" % name)
files = [os.path.join(dir, file) for file in files]
if files:
@@ -32,11 +32,10 @@ def find_library(name, somajor=0):
# find the udev library
name = "udev"
-somajor = 1
-libudev = find_library(name=name, somajor=somajor)
+libudev = find_library(name)
if not libudev or not os.path.exists(libudev):
- raise ImportError, "No library named %s.%d" % (name, somajor)
+ raise ImportError, "No library named lib%s.so" % name
# load the udev library
libudev = CDLL(libudev)
diff --git a/blivet/deviceaction.py b/blivet/deviceaction.py
index 705b93d..60f8f32 100644
--- a/blivet/deviceaction.py
+++ b/blivet/deviceaction.py
@@ -467,6 +467,7 @@ def execute(self):
self.device.disk.format.commitToDisk()
+ self.device.setup()
self.device.format.create(device=self.device.path,
options=self.device.formatArgs)