Ext4 Design

From Ext4
(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
'''Motivation for ext4''' <br>
+
'''Design for ext4''' <br>
  
* Ext3: default filesystem for many users, reputation of dependability & compatibility
+
* Ext3: default filesystem for many users, reputation of dependability & compatibility, leave existing ext3 users undisturbed, stable
* Scaling up to support large filesystems: Storage advancements, Increasing data storage requirements
+
* Scaling up to support large filesystems: Storage advancements, Increasing data storage requirements, only large filesystem users move to ext4
 
* Features requiring on-disk format change: nanosec timestamps, fast EA, preallocation
 
* Features requiring on-disk format change: nanosec timestamps, fast EA, preallocation
* Reliability wrt on-disk corruption===
+
* Reliability wrt on-disk corruption
 +
* 64 bit JBD split
 +
* Forward compatibility/upgradeability
  
 
'''On-Disk Structures''' <br>
 
'''On-Disk Structures''' <br>

Revision as of 17:03, 1 April 2008

Design for ext4

  • Ext3: default filesystem for many users, reputation of dependability & compatibility, leave existing ext3 users undisturbed, stable
  • Scaling up to support large filesystems: Storage advancements, Increasing data storage requirements, only large filesystem users move to ext4
  • Features requiring on-disk format change: nanosec timestamps, fast EA, preallocation
  • Reliability wrt on-disk corruption
  • 64 bit JBD split
  • Forward compatibility/upgradeability

On-Disk Structures

/*
 * This is the extent on-disk structure.
 * It's used at the bottom of the tree.
 */
struct ext4_extent {
        __le32  ee_block;       /* first logical block extent covers */
        __le16  ee_len;         /* number of blocks covered by extent */
        __le16  ee_start_hi;    /* high 16 bits of physical block */
        __le32  ee_start_lo;    /* low 32 bits of physical block */
};

/*
 * This is index on-disk structure.
 * It's used at all the levels except the bottom.
 */
struct ext4_extent_idx {
        __le32  ei_block;       /* index covers logical blocks from 'block' */
        __le32  ei_leaf_lo;     /* pointer to the physical block of the next *
                                 * level. leaf or next index could be there */
        __le16  ei_leaf_hi;     /* high 16 bits of physical block */
        __u16   ei_unused;
};
Personal tools