Hello Mark,

please fix Tom rinis mail address globally for your patchset into

Tom Rini <tr...@konsulko.com>

I fixed it for my response manually, thanks!

BTW: You can use patman for creating patches/patchset.
Look into u-boot:tools/patman

Am 29.06.2015 um 07:02 schrieb Mark Tomlinson:
If the flash is slow, reading less from the flash into buffers makes
the process faster.

Signed-off-by: Mark Tomlinson <mark.tomlin...@alliedtelesis.co.nz>
---

  fs/jffs2/jffs2_1pass.c | 24 ++++++++++++++++++++----
  1 file changed, 20 insertions(+), 4 deletions(-)

Reviewed-by: Heiko Schocher <h...@denx.de>

bye,
Heiko

diff --git a/fs/jffs2/jffs2_1pass.c b/fs/jffs2/jffs2_1pass.c
index 80210be..10bd7be 100644
--- a/fs/jffs2/jffs2_1pass.c
+++ b/fs/jffs2/jffs2_1pass.c
@@ -1493,7 +1493,7 @@ jffs2_1pass_build_lists(struct part_info * part)
        u32 counterF = 0;
        u32 counterN = 0;
        u32 max_totlen = 0;
-       u32 buf_size = DEFAULT_EMPTY_SCAN_SIZE;
+       u32 buf_size;
        char *buf;

        nr_sectors = lldiv(part->size, part->sector_size);
@@ -1505,7 +1505,7 @@ jffs2_1pass_build_lists(struct part_info * part)
        /* if we are building a list we need to refresh the cache. */
        jffs_init_1pass_list(part);
        pL = (struct b_lists *)part->jffs2_priv;
-       buf = malloc(buf_size);
+       buf = malloc(DEFAULT_EMPTY_SCAN_SIZE);
        puts ("Scanning JFFS2 FS:   ");

        /* start at the beginning of the partition */
@@ -1521,6 +1521,8 @@ jffs2_1pass_build_lists(struct part_info * part)
                int ret;
  #endif

+               /* Set buf_size to maximum length */
+               buf_size = DEFAULT_EMPTY_SCAN_SIZE;
                WATCHDOG_RESET();

  #ifdef CONFIG_JFFS2_SUMMARY
@@ -1595,6 +1597,10 @@ jffs2_1pass_build_lists(struct part_info * part)

                ofs += sector_ofs;
                prevofs = ofs - 1;
+               /* Set buf_size down to the minimum size required.
+                * This prevents reading in chunks of flash data unnecessarily.
+                */
+               buf_size = sizeof(union jffs2_node_union);

        scan_more:
                while (ofs < sector_ofs + part->sector_size) {
@@ -1675,13 +1681,18 @@ jffs2_1pass_build_lists(struct part_info * part)
                        case JFFS2_NODETYPE_INODE:
                                if (buf_ofs + buf_len < ofs + sizeof(struct
                                                        jffs2_raw_inode)) {
+                                       buf_len = min_t(uint32_t,
+                                                       sizeof(struct 
jffs2_raw_inode),
+                                                       sector_ofs +
+                                                       part->sector_size -
+                                                       ofs);
                                        get_fl_mem((u32)part->offset + ofs,
                                                   buf_len, buf);
                                        buf_ofs = ofs;
                                        node = (void *)buf;
                                }
-                               if (!inode_crc((struct jffs2_raw_inode *) node))
-                                      break;
+                               if (!inode_crc((struct jffs2_raw_inode *)node))
+                                       break;

                                if (insert_node(&pL->frag, (u32) part->offset +
                                                ofs) == NULL) {
@@ -1698,6 +1709,11 @@ jffs2_1pass_build_lists(struct part_info * part)
                                                        ((struct
                                                         jffs2_raw_dirent *)
                                                        node)->nsize) {
+                                       buf_len = min_t(uint32_t,
+                                                       node->totlen,
+                                                       sector_ofs +
+                                                       part->sector_size -
+                                                       ofs);
                                        get_fl_mem((u32)part->offset + ofs,
                                                   buf_len, buf);
                                        buf_ofs = ofs;

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to