[OpenBIOS] r806 - ofw/fs/jffs2

svn at openbios.org svn at openbios.org
Fri Feb 1 05:05:35 CET 2008


Author: wmb
Date: 2008-02-01 05:05:35 +0100 (Fri, 01 Feb 2008)
New Revision: 806

Modified:
   ofw/fs/jffs2/jffs2.fth
Log:
OLPC trac 6291 followup - faster implementation of raw node scanning
in the event of large amounts of erased space.


Modified: ofw/fs/jffs2/jffs2.fth
===================================================================
--- ofw/fs/jffs2/jffs2.fth	2008-02-01 03:40:36 UTC (rev 805)
+++ ofw/fs/jffs2/jffs2.fth	2008-02-01 04:05:35 UTC (rev 806)
@@ -742,16 +742,26 @@
 
 \ This assumes that the entire erase block is in memory
 : another-node?  ( adr -- false | adr' true )
-   eb-end  swap  ?do
-      i w@ jffs2-magic =  if
-         i header-crc?  if
-            i +raw-node  eb-end  u<=  if
-               i true unloop  exit
+   eb-end over -                       ( adr len )
+   begin                               ( adr len )
+      h# ff skipchar                   ( adr' len' )
+   dup 8 >= while                      ( adr len )
+      over w@ jffs2-magic =  if        ( adr len )
+         over header-crc?  if          ( adr len )
+            drop dup +raw-node         ( adr end-adr )
+            eb-end u<=  if             ( adr )
+               true                    ( adr true )
+            else                       ( adr )
+               \ Node extends past end of erase block
+               drop false              ( false )
             then
+            exit
          then
-      then
-   loop
-   false
+      else                             ( adr len )
+         1 /string                     ( adr' len' )
+      then                             ( adr len )
+   repeat                              ( adr len )
+   2drop false
 ;
 
 : rdpino@     ( adr -- parent )   3 j@  ;




More information about the OpenBIOS mailing list