[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