From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Lawnick Date: Thu, 16 Oct 2008 14:36:16 +0200 Subject: [U-Boot] [PATCH/RFC] Some speed improvements to U-Boot JFFS2 code In-Reply-To: <48F5E5CB.3070303@emcraft.com> References: <1223877234-720-1-git-send-email-yanok@emcraft.com> <20081013081442.665DB85DAB1C@gemini.denx.de> <48F5E5CB.3070303@emcraft.com> Message-ID: <48F73540.3020504@gmx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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. -- Michael Lawnick Software Design Engineer Lise-Meitner-Str. 7/1 89081 Ulm Tel: +49 731 9533 2066 Michael.Lawnick.ext at nsn.com http://www.nokiasiemensnetworks.com/global/ Think before you print