[bitbake-devel] [PATCH] utils: Add ionice option to prunedir
akuster
akuster at mvista.com
Thu Sep 19 18:02:15 UTC 2019
On 9/19/19 8:51 AM, Richard Purdie wrote:
> Autobuilder type infrastructure can benefit from deletion of certain files as
> background IO due to the way Linux filesystem priority works.
>
> We have problems where build directories as part of oe-selftest being
> delete starves the running tasks of IO to the point builds take much
> longer to compelte.
>
> Having this option of running the deletion at "idle" helps a lot with
> that.
>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> ---
> lib/bb/utils.py | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/lib/bb/utils.py b/lib/bb/utils.py
> index 3e90b6a306..d035949b3d 100644
> --- a/lib/bb/utils.py
> +++ b/lib/bb/utils.py
> @@ -677,7 +677,7 @@ def _check_unsafe_delete_path(path):
> return True
> return False
>
> -def remove(path, recurse=False):
> +def remove(path, recurse=False, ionice=False):
> """Equivalent to rm -f or rm -rf"""
> if not path:
> return
> @@ -686,7 +686,10 @@ def remove(path, recurse=False):
> if _check_unsafe_delete_path(path):
> raise Exception('bb.utils.remove: called with dangerous path "%s" and recurse=True, refusing to delete!' % path)
> # shutil.rmtree(name) would be ideal but its too slow
> - subprocess.check_call(['rm', '-rf'] + glob.glob(path))
> + cmd = []
> + if ionice:
> + cmd = ['ionice', '-c', '3']
Would allowing folks to configure the ionice value apply here?
- armin
> + subprocess.check_call(cmd + ['rm', '-rf'] + glob.glob(path))
> return
> for name in glob.glob(path):
> try:
> @@ -695,12 +698,12 @@ def remove(path, recurse=False):
> if exc.errno != errno.ENOENT:
> raise
>
> -def prunedir(topdir):
> +def prunedir(topdir, ionice=False):
> # Delete everything reachable from the directory named in 'topdir'.
> # CAUTION: This is dangerous!
> if _check_unsafe_delete_path(topdir):
> raise Exception('bb.utils.prunedir: called with dangerous path "%s", refusing to delete!' % topdir)
> - remove(topdir, recurse=True)
> + remove(topdir, recurse=True, ionice=ionice)
>
> #
> # Could also use return re.compile("(%s)" % "|".join(map(re.escape, suffixes))).sub(lambda mo: "", var)
More information about the bitbake-devel
mailing list