Author: quozl Date: Thu Feb 23 04:20:16 2012 New Revision: 2873 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2873
Log: OLPC fs-verify - add fs-verify-quick for abort on first mismatch, report accidental use of zd file, and rethrow exception after cleanup to allow caller to see it.
Modified: cpu/x86/pc/olpc/via/fsverify.fth
Modified: cpu/x86/pc/olpc/via/fsverify.fth ============================================================================== --- cpu/x86/pc/olpc/via/fsverify.fth Thu Feb 23 02:39:46 2012 (r2872) +++ cpu/x86/pc/olpc/via/fsverify.fth Thu Feb 23 04:20:16 2012 (r2873) @@ -1,9 +1,12 @@ \ Boot script for post-audit testing [ifndef] fs-verify +false value fs-verify-quick? vocabulary fs-verify-commands also fs-verify-commands definitions
+false value data? : zblocks: ( "eblock-size" "#eblocks" ... -- ) + data? 0= " Not a zsp file" ?nand-abort get-hex# to /nand-block get-hex# to #image-eblocks open-nand @@ -11,10 +14,12 @@ ;
: zblocks-end: ( -- ) + false to data? ;
\ This could be a no-op ... : data: ( "filename" -- ) + true to data? safe-parse-word fn-buf place " ${DN}${PN}${CN}${FN}" expand$ image-name-buf place ; @@ -31,6 +36,11 @@ $= ( okay? ) ;
+: ?mismatch + cr + fs-verify-quick? " One block mismatch, remainder not checked" ?nand-abort +; + : zblock: ( "eblock#" "comprlen" "hashname" "hash-of-128KiB" -- ) get-hex# ( eblock# )
@@ -44,7 +54,7 @@ " Malformed hash string" ?nand-abort ( eblock# hashname$ hash$ )
verify-hash ( eblock# okay? ) - swap .d if (cr else cr then + swap .d if (cr else ?mismatch then ;
previous definitions @@ -61,16 +71,21 @@
t-hms( also fs-verify-commands - ['] include-file catch ?dup if ( x error ) - nip .error - then + ['] include-file catch ( 0 | x error# ) previous show-done close-nand-ihs )t-hms + throw ( ) +; + +: fs-verify ( "fs.zsp" -- ) \ test blocks + false to fs-verify-quick? + safe-parse-word $fs-verify ;
-: fs-verify ( "devspec" -- ) +: fs-verify-quick ( "fs.zsp" -- ) \ test blocks until a mismatch + true to fs-verify-quick? safe-parse-word $fs-verify ;