This series introduces readahead for btree lookup function and
mitigates read performance penalty that nilfs incurs on some devices.
As a result of performance analysis, I found access to btree node
blocks at leaf level slows down the speed of sequential read of file
data or directory. Data
This applies read-ahead to nilfs_btree_do_lookup and
nilfs_btree_lookup_contig functions and extends them to read ahead
siblings of level 1 btree nodes that hold data blocks.
At present, the read-ahead is not applied to most btree operations;
only get_block() callback function, which is used
This adds __nilfs_btree_get_block() function that can issue a series
of read-ahead requests for sibling btree nodes.
This read-ahead needs parent node block, so nilfs_btree_readahead_info
structure is added to pass the information that
__nilfs_btree_get_block() needs.
This also replaces the
This adds mode argument to nilfs_btnode_submit_block() function and
allows it to issue a read-ahead request.
An optional submit_ptr argument is also added to store the actual
block address for which bio is sent. submit_ptr is used for a series
of read-ahead requests, and helps to decide if each
nilfs_btree_get_block() now may return untested buffer due to
read-ahead This adds new flag for buffer heads so that the btree code
can check whether the buffer is already verified or not.
Signed-off-by: Ryusuke Konishi konishi.ryus...@lab.ntt.co.jp
---
fs/nilfs2/btree.c | 10 +-