Skipping device teardown is a bit of a hack, but it solves the problem for the moment. We need to look at how mountpoints are being handled and fix that at some point soon. It is nuts that repeated calls to teardown can result in different behavior.
From: "Brian C. Lane" bcl@redhat.com
Add the mountpoint and the rc value to the FSError message. Details and output of lsof are still available in program.log, this just makes the error more clear to whoever catches it. --- blivet/formats/fs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/blivet/formats/fs.py b/blivet/formats/fs.py index 90cbca6..0017b88 100644 --- a/blivet/formats/fs.py +++ b/blivet/formats/fs.py @@ -629,7 +629,7 @@ def _teardown(self, **kwargs): if rc: # try and catch whatever is causing the umount problem util.run_program(["lsof", mountpoint]) - raise FSError("umount failed") + raise FSError("umount of %s failed (%d)" % (mountpoint, rc))
if mountpoint == self._chrootedMountpoint: self._chrootedMountpoint = None
From: "Brian C. Lane" bcl@redhat.com
Otherwise it will try to unmount things that shouldn't be unmounted. --- blivet/osinstall.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/blivet/osinstall.py b/blivet/osinstall.py index 5918904..bb7c204 100644 --- a/blivet/osinstall.py +++ b/blivet/osinstall.py @@ -617,8 +617,8 @@ def umountFilesystems(self, swapoff=True): (device.format.type == "swap" and not swapoff): continue
+ # Unmount the devices device.format.teardown() - device.teardown()
self.active = False
These both look good to me.
Added label: ACK.
pushed
Closed.
anaconda-patches@lists.fedorahosted.org