Ext4 Design
From Ext4
(Difference between revisions)
Line 1: | Line 1: | ||
− | + | '''Motivation for ext4''' <br> | |
− | + | ||
+ | * Ext3: default filesystem for many users, reputation of dependability & compatibility | ||
+ | * Scaling up to support large filesystems: Storage advancements, Increasing data storage requirements | ||
+ | * Features requiring on-disk format change: nanosec timestamps, fast EA, preallocation | ||
+ | * Reliability wrt on-disk corruption=== | ||
− | + | '''On-Disk Structures''' <br> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<pre> | <pre> |
Revision as of 16:59, 1 April 2008
Motivation for ext4
- Ext3: default filesystem for many users, reputation of dependability & compatibility
- Scaling up to support large filesystems: Storage advancements, Increasing data storage requirements
- Features requiring on-disk format change: nanosec timestamps, fast EA, preallocation
- Reliability wrt on-disk corruption===
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; };