[U-Boot] [PATCH/RFC] Some speed improvements to U-Boot JFFS2 code

Michael Lawnick nospam_lawnick at gmx.de
Thu Oct 16 14:36:16 CEST 2008


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


More information about the U-Boot mailing list