kill processes inside instroot chroot
authorGui Chen <gui.chen@intel.com>
Thu, 8 Aug 2013 05:50:58 +0000 (01:50 -0400)
committerGui Chen <gui.chen@intel.com>
Tue, 13 Aug 2013 09:23:15 +0000 (05:23 -0400)
when processes forked inside chroot is alive,
mic should kill it first before umount

Signed-off-by: Gui Chen <gui.chen@intel.com>
mic/chroot.py
mic/imager/baseimager.py

index a3fbfbc..20ae215 100644 (file)
@@ -172,7 +172,7 @@ def cleanup_resolv(chrootdir):
     except:
         pass
 
-def kill_processes(chrootdir):
+def kill_proc_inchroot(chrootdir):
     import glob
     for fp in glob.glob("/proc/*/root"):
         try:
@@ -210,7 +210,7 @@ def cleanup_chrootenv(chrootdir, bindmounts=None, globalmounts=()):
     # unlock
     chroot_lockfd.close()
     # kill processes
-    kill_processes(chrootdir)
+    kill_proc_inchroot(chrootdir)
     # clean mtab
     cleanup_mtab(chrootdir)
     # clean resolv.conf
index b5a5290..0dd1621 100644 (file)
@@ -33,6 +33,7 @@ from mic import kickstart
 from mic import msger
 from mic.utils.errors import CreatorError, Abort
 from mic.utils import misc, grabber, runner, fs_related as fs
+from mic.chroot import kill_proc_inchroot
 
 class BaseImageCreator(object):
     """Installs a system to a chroot directory.
@@ -854,6 +855,8 @@ class BaseImageCreator(object):
         if not self.__builddir:
             return
 
+        kill_proc_inchroot(self._instroot)
+
         self.unmount()
 
         shutil.rmtree(self.__builddir, ignore_errors = True)