[coreboot-gerrit] Patch set updated for coreboot: 4b79413 cbfstool: correct size left calculation for "empty" entries

Alexandru Gagniuc (mr.nuke.me@gmail.com) gerrit at coreboot.org
Fri Jan 24 04:21:50 CET 2014


Alexandru Gagniuc (mr.nuke.me at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4772

-gerrit

commit 4b7941332829cc3fddbfba3b939ee75e4930cf05
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Tue Jan 21 15:28:38 2014 -0600

    cbfstool: correct size left calculation for "empty" entries
    
    After removing a file sandwiched between two other files, that file
    could no longer be re-added at the same location. cbfstool tried to
    add the file, and a new "empty" entry, which, together, would no
    longer fit, so it continued checking for the next available space.
    
    Change the behavior to add the file if there is enough space for the
    file alone, then only add the "empty" entry if there is enough space
    for it.
    
    Change-Id: Iad3897dd28cf12f12ae877cfd83e1990fa7d2f0f
    Signed-off-by: Alexandru Gagniuc <mr.nuke.me at gmail.com>
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
---
 util/cbfstool/cbfs_image.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index eb9d574..401654e 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -380,6 +380,10 @@ int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
 
 		DEBUG("cbfs_add_entry: space at 0x%x+0x%x(%d) bytes\n",
 		      addr, addr_next - addr, addr_next - addr);
+
+		/* Will the file fit? Don't yet worry if we have space for a new
+		 * "empty" entry. We take care of that later.
+		 */
 		if (addr + need_size > addr_next)
 			continue;
 
@@ -399,6 +403,16 @@ int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
 			entry = cbfs_find_next_entry(image, entry);
 			new_size = (cbfs_get_entry_addr(image, next) -
 				    cbfs_get_entry_addr(image, entry));
+
+			/* Entry was added and no space for new "empty" entry */
+			if (new_size < cbfs_calculate_file_header_size("")) {
+				DEBUG("No need for new \"empty\" entry\n");
+				/* No need to increase the size of the just
+				 * stored file to extend to next file. Alignment
+				 * of next file takes care of this.
+				 */
+				return 0;
+			}
 			new_size -= cbfs_calculate_file_header_size("");
 			DEBUG("new size: %d\n", new_size);
 			cbfs_create_empty_entry(image, entry, new_size, "");



More information about the coreboot-gerrit mailing list