DelayedAllocation

From Ext4
(Difference between revisions)
Jump to: navigation, search
Line 9: Line 9:
 
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 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.
+
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.[http://www.research-service.com/custom-research-paper.html  research papers]
  
 
=== ext4 part ===
 
=== ext4 part ===

Revision as of 18:17, 27 January 2010

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.research papers

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
Personal tools