ext2: Adapt to satisfy some checks
diff --git a/src/filo-fs-ext2.ads b/src/filo-fs-ext2.ads
index ba47aef..a13b153 100644
--- a/src/filo-fs-ext2.ads
+++ b/src/filo-fs-ext2.ads
@@ -48,9 +48,10 @@
subtype Block_Size is Natural range 2 ** Log_Block_Size'First .. 2 ** Log_Block_Size'Last;
subtype Max_Block_Index is Index_Type range 0 .. 2 ** Log_Block_Size'Last - 1;
- -- Minimum ext2 block size is 1KiB (two 512B blocks)
- type FSBlock_Offset is new Block_Offset range 0 .. Block_Offset'Last / 2;
- type FSBlock_Logical is new Block_Offset range 0 .. Block_Offset'Last / 2;
+ -- Extent physical addresses are 48 bits.
+ type FSBlock_Offset is new Block_Offset range 0 .. 2 ** 48 - 1;
+ -- Logical block addresses are 32 bits.
+ type FSBlock_Logical is new Block_Offset range 0 .. 2 ** 32 - 1;
-- We use a 64KiB cache which fits at least one ext2 block. If a lower
-- block size is encountered (likely), we partition the cache into up
@@ -65,7 +66,9 @@
-- Same as the 12 direct + 3 indirect blocks times 4B:
subtype Inode_Extents_Index is Natural range 0 .. 59;
- subtype Inode_Extents is Buffer_Type (Inode_Extents_Index);
+ subtype Inode_Extents is Buffer_Type (Inode_Extents_Index)
+ with
+ Object_Size => (Inode_Extents_Index'Last + 1) * 8;
type Inode_Index is new Unsigned_32 range 2 .. Unsigned_32'Last;
subtype Inode_Size is Positive range 128 .. Positive (Unsigned_16'Last);
@@ -79,7 +82,7 @@
Mode : Inode_Type := Inode_Type'First;
Size : Inode_Length := 0;
Use_Extents : Boolean := False;
- Inline : Buffer_Type (Inode_Extents_Index) := (others => 16#00#);
+ Inline : Inode_Extents := (others => 16#00#);
end record;
type T is record