DelayedAllocation
From Ext4
(Difference between revisions)
Line 29: | Line 29: | ||
* quota | * quota | ||
* bmap | * bmap | ||
+ | * error handling |
Revision as of 18:51, 25 July 2007
Contents |
Status
Semi-ready patch, see ToDo
Design
VFS part
In write path, VFS's function __block_write_full_page() is called with special get_block() method which doesn't allocate block immediately, but reserve it only and mark bh Delay.
In flush path, VFS's function mpage_da_writepages() scans mapping for dirty pages, collects dirty non-allocated bhs, tries to allocate them with minimal calls to get_block() method, applies allocated blocks to delayed bhs and drops Delay state.
ext4 part
ext4 implements two different get_block() methods:
- one for write(2) path
* checks whether block is already allocated * if it's not, then reserves block(s) needed for data and metadata and mark bh Delay
- another one for flush path
* starts transaction * allocates blocks * updates on-disk size * closes transaction
ToDo
- integrate reservation
- data=ordered
- quota
- bmap
- error handling