nilfs2: get maximum number of child nodes from bmap object
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Tue, 13 Jul 2010 14:33:54 +0000 (23:33 +0900)
committerRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Fri, 23 Jul 2010 01:02:14 +0000 (10:02 +0900)
The patch "reduce repetitive calculation of max number of child nodes"
gathered up the calculation of maximum number of child nodes into
nilfs_btree_nchildren_per_block() function.  This makes the function
get resultant value from a private variable in bmap object instead of
calculating it for each call.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
fs/nilfs2/bmap.h
fs/nilfs2/btree.c

index fae83cf9c0090b2090e46b518d5471212ad36ec0..a20569b19929bfc706dc063cfe277b060575c96e 100644 (file)
@@ -105,6 +105,7 @@ static inline int nilfs_bmap_is_new_ptr(unsigned long ptr)
  * @b_last_allocated_ptr: last allocated ptr for data block
  * @b_ptr_type: pointer type
  * @b_state: state
+ * @b_nchildren_per_block: maximum number of child nodes for non-root nodes
  */
 struct nilfs_bmap {
        union {
@@ -118,6 +119,7 @@ struct nilfs_bmap {
        __u64 b_last_allocated_ptr;
        int b_ptr_type;
        int b_state;
+       __u16 b_nchildren_per_block;
 };
 
 /* pointer type */
index 829e145f135358c0dd9ab8d52a2fbef5399df722..7089d904114609eb12e629f89f0fff92fd92d81e 100644 (file)
@@ -154,7 +154,7 @@ static inline int nilfs_btree_node_size(const struct nilfs_bmap *btree)
 
 static int nilfs_btree_nchildren_per_block(const struct nilfs_bmap *btree)
 {
-       return NILFS_BTREE_NODE_NCHILDREN_MAX(nilfs_btree_node_size(btree));
+       return btree->b_nchildren_per_block;
 }
 
 static inline __le64 *
@@ -2218,10 +2218,14 @@ static const struct nilfs_bmap_operations nilfs_btree_ops_gc = {
 int nilfs_btree_init(struct nilfs_bmap *bmap)
 {
        bmap->b_ops = &nilfs_btree_ops;
+       bmap->b_nchildren_per_block =
+               NILFS_BTREE_NODE_NCHILDREN_MAX(nilfs_btree_node_size(bmap));
        return 0;
 }
 
 void nilfs_btree_init_gc(struct nilfs_bmap *bmap)
 {
        bmap->b_ops = &nilfs_btree_ops_gc;
+       bmap->b_nchildren_per_block =
+               NILFS_BTREE_NODE_NCHILDREN_MAX(nilfs_btree_node_size(bmap));
 }