All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] lib/oe/path: Fix performance issue got copyhardlinktree()
@ 2013-11-08 15:19 Richard Purdie
  2013-11-08 15:42 ` Bruce Ashfield
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Purdie @ 2013-11-08 15:19 UTC (permalink / raw)
  To: openembedded-core; +Cc: Hart, Darren

With the directory copy was added to avoid race issues, it wasn't noticed that
tar was recursing the directories and copying files too. This is completely
crazy when we hardlink those files in the next command.

Resolve the issue by telling tar not to recurse. This gives a significant
performance boost to various parts of the system (do_package for linux-yocto
256s -> 178s for example).

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py
index 1310e38..d0588ba 100644
--- a/meta/lib/oe/path.py
+++ b/meta/lib/oe/path.py
@@ -93,7 +93,7 @@ def copyhardlinktree(src, dst):
     if (os.stat(src).st_dev ==  os.stat(dst).st_dev):
         # Need to copy directories only with tar first since cp will error if two 
         # writers try and create a directory at the same time
-        cmd = 'cd %s; find . -type d -print | tar -cf - -C %s -p --files-from - | tar -xf - -C %s' % (src, src, dst)
+        cmd = 'cd %s; find . -type d -print | tar -cf - -C %s -p --files-from - --no-recursion | tar -xf - -C %s' % (src, src, dst)
         check_output(cmd, shell=True, stderr=subprocess.STDOUT)
         if os.path.isdir(src):
             src = src + "/*"




^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-11-09 23:58 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-08 15:19 [PATCH] lib/oe/path: Fix performance issue got copyhardlinktree() Richard Purdie
2013-11-08 15:42 ` Bruce Ashfield
2013-11-09 20:43   ` Andrea Adami
2013-11-09 22:52     ` Richard Purdie
2013-11-09 23:58       ` Andrea Adami

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.