[OpenBIOS] r493 - in ofw: disklabel fs/ext2fs

svn at openbios.org svn at openbios.org
Tue Jul 24 21:02:07 CEST 2007


Author: wmb
Date: 2007-07-24 21:02:06 +0200 (Tue, 24 Jul 2007)
New Revision: 493

Added:
   ofw/fs/ext2fs/partition.fth
Modified:
   ofw/disklabel/loadpkg.fth
   ofw/disklabel/methods.fth
Log:
Partition type decoder - handle mismatch between partition type code
and actual filesystem.  Warn of the mismatch, but use the actual filesystem.
OLPC trac #635.






Modified: ofw/disklabel/loadpkg.fth
===================================================================
--- ofw/disklabel/loadpkg.fth	2007-07-24 01:21:22 UTC (rev 492)
+++ ofw/disklabel/loadpkg.fth	2007-07-24 19:02:06 UTC (rev 493)
@@ -4,11 +4,15 @@
 fload ${BP}/ofw/disklabel/common.fth
 fload ${BP}/ofw/fs/fatfs/partition.fth
 fload ${BP}/ofw/fs/cdfs/partition.fth
+[ifdef] ufs-support
 fload ${BP}/ofw/fs/ufs/partition.fth
+[then]
+fload ${BP}/ofw/fs/ext2fs/partition.fth
 [ifdef] hfs-support
 fload ${BP}/ofw/fs/macfs/partition.fth
 [then]
 fload ${BP}/ofw/disklabel/methods.fth
+
 \ LICENSE_BEGIN
 \ Copyright (c) 2006 FirmWorks
 \ 

Modified: ofw/disklabel/methods.fth
===================================================================
--- ofw/disklabel/methods.fth	2007-07-24 01:21:22 UTC (rev 492)
+++ ofw/disklabel/methods.fth	2007-07-24 19:02:06 UTC (rev 493)
@@ -48,11 +48,13 @@
       then
    then
 
+[ifdef] ufs-support
    \ If the partition type is UFS and a filename is specified, select
    \ one of the UFS sub-partitions.  Otherwise use the raw partition.
    partition-type ufs-type =  if
       filename nip  if  ufs-map  then
    then
+[then]
 ;
 
 : select-partition  ( -- )
@@ -83,6 +85,7 @@
 
    iso-9660?  if  exit  then
 
+[ifdef] ufs-support
    \ If this disk has a UFS partition map that is not subordinate to
    \ an FDISK map and either a UFS partition letter or a filename is
    \ specified, select one of the UFS sub-partitions.
@@ -90,6 +93,7 @@
    ufs?  if
       ufs-partition 0<>  filename nip 0<> or  if  ufs-map exit  then
    then
+[then]
 
    \ Nothing we tried worked.
    abort
@@ -106,15 +110,32 @@
    \    ( change sector-offset and size.low,high ) ...
 [then]
 
+   2 read-sector
+   ext2?  if  
+      partition-type ext2fs-type <>  if
+         ." Warning: Filesystem is ext2/3, but partition type is 0x"  
+         partition-type .x ." (should be 0x83)."  cr
+      then
+      " ext2-file-system" exit
+   then
+
+[ifdef] ufs-support
    partition-type ufs-type    =  if  " ufs-file-system"    exit  then
-   partition-type ext2fs-type =  if  " ext2-file-system" exit  then
-   partition-type minix-type  =  if  " minix-file-system"    exit  then
+[then]
+   partition-type minix-type  =  if  " minix-file-system"  exit  then
 
    0 read-sector   \ Get the first sector of the selected partition
    dropin?  if  " dropin-file-system" exit  then
    zip?     if  " zip-file-system"    exit  then
+   fat?     if
+      partition-type ext2fs-type =  if
+         ." Warning: Filesystem is FAT, but partition type is 0x83 (ext2/3)." cr
+      then
+      " fat-file-system"    exit
+   then
 
-   " fat-file-system"
+   ." Error: Unknown file system" cr
+   abort
 ;
 
 \ If the arguments include a filename, we determine the type of filesystem

Added: ofw/fs/ext2fs/partition.fth
===================================================================
--- ofw/fs/ext2fs/partition.fth	                        (rev 0)
+++ ofw/fs/ext2fs/partition.fth	2007-07-24 19:02:06 UTC (rev 493)
@@ -0,0 +1,33 @@
+\ See license at end of file
+purpose: Ext2/3 partition map decoding support
+
+\ Returns true if the sector buffer appears to contain an ext2/3 super block
+\ which signifies the beginning of a DOS "FAT" file system.
+: ext2?  ( -- flag )
+   sector-buf h# 38 +  w@              ( magic )
+   dup h# ef53 =  swap h# 53ef =  or   ( ext2? )
+;
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2007 FirmWorks
+\ 
+\ Permission is hereby granted, free of charge, to any person obtaining
+\ a copy of this software and associated documentation files (the
+\ "Software"), to deal in the Software without restriction, including
+\ without limitation the rights to use, copy, modify, merge, publish,
+\ distribute, sublicense, and/or sell copies of the Software, and to
+\ permit persons to whom the Software is furnished to do so, subject to
+\ the following conditions:
+\ 
+\ The above copyright notice and this permission notice shall be
+\ included in all copies or substantial portions of the Software.
+\ 
+\ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+\ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+\ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+\ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+\ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+\ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+\ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+\
+\ LICENSE_END




More information about the OpenBIOS mailing list