From be64c436a6b7fab268cbd208bf3f7491b8d93b54 Mon Sep 17 00:00:00 2001 From: Gui Chen Date: Thu, 8 Aug 2013 01:50:58 -0400 Subject: [PATCH] kill processes inside instroot chroot when processes forked inside chroot is alive, mic should kill it first before umount Signed-off-by: Gui Chen --- mic/chroot.py | 4 ++-- mic/imager/baseimager.py | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mic/chroot.py b/mic/chroot.py index a3fbfbc..20ae215 100644 --- a/mic/chroot.py +++ b/mic/chroot.py @@ -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 diff --git a/mic/imager/baseimager.py b/mic/imager/baseimager.py index b5a5290..0dd1621 100644 --- a/mic/imager/baseimager.py +++ b/mic/imager/baseimager.py @@ -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) -- 2.7.4