First version of Ext2_Block_Map
diff --git a/src/filo-fs-ext2.ads b/src/filo-fs-ext2.ads
index b26b103..96bd102 100644
--- a/src/filo-fs-ext2.ads
+++ b/src/filo-fs-ext2.ads
@@ -44,6 +44,25 @@
 
    -- maximum block size is 64KiB (2^16):
    subtype Log_Block_Size is Positive range 10 .. 16;
+   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;
+
+   -- We use a 64KiB cache.
+   --  * If that's the block size, only the `Any` entry is used.
+   --  * For a 32KiB block size, `Any` and `Last_Level` (for indirect block
+   --    lookups) are used.
+   --  * For smaller block sizes, the most common case, we cache four blocks.
+   -- For the `Any` entry, we note the logical block address (block offset
+   -- within a file). For the indirect entries, we note the *first* logical
+   -- block that they map.
+   type Block_Cache_Index is (Any, Last_Level, Second_Last_Level, First_Level);
+   type Block_Cache_Type is array (Block_Cache_Index) of FSBlock_Logical;
+
+   Direct_Blocks : constant := 12;
+   type Direct_Blocks_Array is array (Natural range 0 .. Direct_Blocks - 1) of Unsigned_32;
 
    subtype Inode_Size is Positive range 128 .. Positive (Unsigned_16'Last);
    subtype Desc_Size  is Positive range  32 .. Positive (Unsigned_16'Last);
@@ -58,6 +77,12 @@
       Desc_Size         : Ext2.Desc_Size := Ext2.Desc_Size'First;
       Feature_Extents   : Boolean := False;
       Feature_64Bit     : Boolean := False;
+      Direct_Blocks     : Direct_Blocks_Array := (others => 0);
+      Indirect_Block    : Unsigned_32 := 0;
+      Double_Indirect   : Unsigned_32 := 0;
+      Triple_Indirect   : Unsigned_32 := 0;
+      Block_Cache_Index : Block_Cache_Type := (others => 0);
+      Block_Cache       : Buffer_Type (Max_Block_Index) := (others => 16#00#);
    end record;
 
 end FILO.FS.Ext2;