<div class="gmail_quote">On Wed, Sep 12, 2012 at 11:42 PM, Saul Wold <span dir="ltr"><<a href="mailto:sgw@linux.intel.com" target="_blank">sgw@linux.intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 09/12/2012 01:10 PM, Andrei Gherzan wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If we round up ROOTFS_SIZE to IMAGE_ROOTFS_ALIGNMENT before checking if<br>
base_size is greater then IMAGE_ROOTFS_SIZE, we can end up adding an<br>
unaligned value to IMAGE_ROOTFS_SIZE. Obviously, if<br>
IMAGE_ROOTFS_EXTRA_SPACE was overwritten with an unaligned value. So<br>
let's add the round up code after the base_size calculus and it's<br>
comparison.<br>
<br>
Signed-off-by: Andrei Gherzan <<a href="mailto:andrei@gherzan.ro" target="_blank">andrei@gherzan.ro</a>><br>
---<br>
meta/classes/image_types.<u></u>bbclass | 7 +++++--<br>
1 file changed, 5 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/meta/classes/image_types.<u></u>bbclass b/meta/classes/image_types.<u></u>bbclass<br>
index d286eea..6c01b21 100644<br>
--- a/meta/classes/image_types.<u></u>bbclass<br>
+++ b/meta/classes/image_types.<u></u>bbclass<br>
@@ -82,9 +82,12 @@ runimagecmd () {<br>
# The base_size gets calculated:<br>
# - initial size determined by `du -ks` of the IMAGE_ROOTFS<br>
# - then multiplied by the IMAGE_OVERHEAD_FACTOR<br>
- # - then rounded up to IMAGE_ROOTFS_ALIGNMENT<br>
# - finally tested against IMAGE_ROOTFS_SIZE<br>
- ROOTFS_SIZE=`du -ks ${IMAGE_ROOTFS}|awk '{base_size = $1 * ${IMAGE_OVERHEAD_FACTOR} + ${IMAGE_ROOTFS_ALIGNMENT} - 1; base_size -= base_size % ${IMAGE_ROOTFS_ALIGNMENT}; print ((base_size > ${IMAGE_ROOTFS_SIZE} ? base_size : ${IMAGE_ROOTFS_SIZE}) + ${IMAGE_ROOTFS_EXTRA_SPACE}) }'`<br>
+ ROOTFS_SIZE=`du -ks ${IMAGE_ROOTFS}|awk '{base_size = $1 * ${IMAGE_OVERHEAD_FACTOR}; print ((base_size > ${IMAGE_ROOTFS_SIZE} ? base_size : ${IMAGE_ROOTFS_SIZE}) + ${IMAGE_ROOTFS_EXTRA_SPACE}) }'`<br>
+<br>
+ # Round up ROOTFS_SIZE to IMAGE_ROOTFS_ALIGNMENT<br>
+ ROOTFS_SIZE=`awk "BEGIN { rootfs_size = $ROOTFS_SIZE + ${IMAGE_ROOTFS_ALIGNMENT} - 1; rootfs_size -= rootfs_size % ${IMAGE_ROOTFS_ALIGNMENT}; print rootfs_size }"`<br>
+<br>
</blockquote>
<br>
<br>
AWK seems a little heavy weight here, now we are forking it twice, since we are already in awk above, can you not just continue the function from there instead, maybe with a END{} or something else?<br>
<br></blockquote><div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">So, to be sure i understood. You want to have the whole routine in the same awk right? I did it this way to make those steps a little clearer. But indeed, this is a good idea in terms of performance.</span> </div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Also will this guarantee an Integer result?<br></blockquote><div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">Will fix in V3. :)</span> </div><div><br></div>
<div>Branch updated with v3. </div><div><br></div><div>ag</div></div>