[Fedora-livecd-list] imgcreate/fs.py
Bruno Wolff III
bruno at fedoraproject.org
Sat Sep 11 16:49:43 UTC 2010
imgcreate/fs.py | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
New commits:
commit 118092c8a2878eb2dfc5ea3eed7298bc18541a03
Author: Bruno Wolff III <bruno at wolff.to>
Date: Sat Sep 11 11:44:11 2010 -0500
Try normal umount before falling back to lazy umount.
We want to log when lazy umounts are needed, so that we can try to change
whatever is requiring them in the first place, to not do that.
diff --git a/imgcreate/fs.py b/imgcreate/fs.py
index 554d1b9..c8df085 100644
--- a/imgcreate/fs.py
+++ b/imgcreate/fs.py
@@ -112,9 +112,16 @@ class BindChrootMount:
if not self.mounted:
return
- rc = subprocess.call(["/bin/umount", "-l", self.dest])
+ rc = subprocess.call(["/bin/umount", self.dest])
if rc != 0:
- raise MountError("Unable to unmount filesystem at %s" % self.dest)
+ logging.debug("Unable to unmount %s normally, using lazy unmount" % self.dest)
+ rc = subprocess.call(["/bin/umount", "-l", self.dest])
+ if rc != 0:
+ raise MountError("Unable to unmount fs at %s" % self.dest)
+ else:
+ logging.debug("lazy umount succeeded on %s" % self.dest)
+ print >> sys.stdout, "lazy umount succeeded on %s" % self.dest
+
self.mounted = False
class LoopbackMount:
@@ -353,11 +360,19 @@ class DiskMount(Mount):
def unmount(self):
if self.mounted:
logging.debug("Unmounting directory %s" % self.mountdir)
- rc = subprocess.call(["/bin/umount", "-l", self.mountdir])
+ rc = subprocess.call(["/bin/umount", self.mountdir])
if rc == 0:
self.mounted = False
else:
- raise MountError("Unable to unmount filesystem at %s" % self.mountdir)
+ logging.debug("Unmounting directory %s failed, using lazy umount" % self.mountdir)
+ print >> sys.stdout, "Unmounting directory %s failed, using lazy umount" %self.mountdir
+ rc = subprocess.call(["/bin/umount", "-l", self.mountdir])
+ if rc != 0:
+ raise MountError("Unable to unmount filesystem at %s" % self.mountdir)
+ else:
+ logging.debug("lazy umount succeeded on %s" % self.mountdir)
+ print >> sys.stdout, "lazy umount succeeded on %s" % self.mountdir
+ self.mounted = False
if self.rmdir and not self.mounted:
try:
More information about the livecd
mailing list