
Ilya Yanok said the following:
Hi Wolfgang,
Wolfgang Denk wrote:
here is a set of changes we made to improve U-Boot JFFS2 code performance. We still can't reach Linux's performance but improvements are significant.
Any comments are welcome.
Are these patches independent of each other, or are all of them needed, and if so, is there any specific order in which they have to be applied?
Argh... I forgot to create patches with xxx/nnn notation... Here is the order of patches: 0001-jffs2-add-sector_size-field-to-part_info-structure.patch 0002-jffs2-rewrite-jffs2-scanning-code-based-on-Linux-on.patch 0003-jffs2-summary-support.patch 0004-jffs2-fix-searching-for-latest-version-in-jffs2_1pa.patch 0005-jffs2-add-buffer-to-cache-flash-accesses.patch 0006-jffs2-cache-data_crc-results.patch
It's the order of changes in my tree and thus it's the simplest way to apply this patches. But actual dependencies are as follows: 0001 and 0004 don't depend on anything 0002 depends on 0001 0003, 0005 and 0006 depend on 0002
Regards, Ilya.
I have put these patches to our board (MPC8548, NOR Flash, MTD partition size 48MB).
a) performance has improved (execution time of 'ls' reduced from ~16s to ~1.5s)
b) there is a bug in the patch 0005-jffs2-add-buffer-to-cache-flash-accesses: The passage
@@ -724,12 +731,14 @@ jffs2_1pass_read_inode(struct b_lists *pL, u32 inode, char *dest) latestVersion = jNode->version; } } - put_fl_mem(jNode); + if (pL->readbuf == NULL) + put_fl_mem(jNode); } #endif
should be
@@ -724,12 +731,14 @@ jffs2_1pass_read_inode(struct b_lists *pL, u32 inode, char *dest) latestVersion = jNode->version; } } - put_fl_mem(jNode); + if (pL->readbuf == NULL) + put_fl_mem(jNode, NULL); } #endif
c) I found no improvement with CFG_JFFS2_SORT_FRAGMENTS set (the way I detected b) ;-)
d) output of 'ls' is corrupted: no date and access right output, directories in / are shown multiple times.