Commit 7cde31d7 authored by Ryusuke Konishi's avatar Ryusuke Konishi

nilfs2: remove nilfs_btree_operations from btree mapping

will remove indirect function calls using nilfs_btree_operations
table.
Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
parent 355c6b61
...@@ -913,9 +913,9 @@ static int nilfs_btree_prepare_insert(struct nilfs_btree *btree, ...@@ -913,9 +913,9 @@ static int nilfs_btree_prepare_insert(struct nilfs_btree *btree,
level = NILFS_BTREE_LEVEL_DATA; level = NILFS_BTREE_LEVEL_DATA;
/* allocate a new ptr for data block */ /* allocate a new ptr for data block */
if (btree->bt_ops->btop_find_target != NULL) if (NILFS_BMAP_USE_VBN(&btree->bt_bmap))
path[level].bp_newreq.bpr_ptr = path[level].bp_newreq.bpr_ptr =
btree->bt_ops->btop_find_target(btree, path, key); nilfs_btree_find_target_v(btree, path, key);
ret = nilfs_bmap_prepare_alloc_ptr(&btree->bt_bmap, ret = nilfs_bmap_prepare_alloc_ptr(&btree->bt_bmap,
&path[level].bp_newreq); &path[level].bp_newreq);
...@@ -1061,8 +1061,8 @@ static void nilfs_btree_commit_insert(struct nilfs_btree *btree, ...@@ -1061,8 +1061,8 @@ static void nilfs_btree_commit_insert(struct nilfs_btree *btree,
set_buffer_nilfs_volatile((struct buffer_head *)((unsigned long)ptr)); set_buffer_nilfs_volatile((struct buffer_head *)((unsigned long)ptr));
ptr = path[NILFS_BTREE_LEVEL_DATA].bp_newreq.bpr_ptr; ptr = path[NILFS_BTREE_LEVEL_DATA].bp_newreq.bpr_ptr;
if (btree->bt_ops->btop_set_target != NULL) if (NILFS_BMAP_USE_VBN(&btree->bt_bmap))
btree->bt_ops->btop_set_target(btree, key, ptr); nilfs_btree_set_target_v(btree, key, ptr);
for (level = NILFS_BTREE_LEVEL_NODE_MIN; level <= maxlevel; level++) { for (level = NILFS_BTREE_LEVEL_NODE_MIN; level <= maxlevel; level++) {
nilfs_bmap_commit_alloc_ptr(&btree->bt_bmap, nilfs_bmap_commit_alloc_ptr(&btree->bt_bmap,
...@@ -1586,9 +1586,9 @@ nilfs_btree_prepare_convert_and_insert(struct nilfs_bmap *bmap, __u64 key, ...@@ -1586,9 +1586,9 @@ nilfs_btree_prepare_convert_and_insert(struct nilfs_bmap *bmap, __u64 key,
/* for data */ /* for data */
/* cannot find near ptr */ /* cannot find near ptr */
if (btree->bt_ops->btop_find_target != NULL) if (NILFS_BMAP_USE_VBN(bmap))
dreq->bpr_ptr dreq->bpr_ptr = nilfs_btree_find_target_v(btree, NULL, key);
= btree->bt_ops->btop_find_target(btree, NULL, key);
ret = nilfs_bmap_prepare_alloc_ptr(bmap, dreq); ret = nilfs_bmap_prepare_alloc_ptr(bmap, dreq);
if (ret < 0) if (ret < 0)
return ret; return ret;
...@@ -1681,8 +1681,8 @@ nilfs_btree_commit_convert_and_insert(struct nilfs_bmap *bmap, ...@@ -1681,8 +1681,8 @@ nilfs_btree_commit_convert_and_insert(struct nilfs_bmap *bmap,
nilfs_bmap_set_dirty(bmap); nilfs_bmap_set_dirty(bmap);
} }
if (btree->bt_ops->btop_set_target != NULL) if (NILFS_BMAP_USE_VBN(bmap))
btree->bt_ops->btop_set_target(btree, key, dreq->bpr_ptr); nilfs_btree_set_target_v(btree, key, dreq->bpr_ptr);
} }
/** /**
...@@ -1926,7 +1926,9 @@ static int nilfs_btree_propagate(const struct nilfs_bmap *bmap, ...@@ -1926,7 +1926,9 @@ static int nilfs_btree_propagate(const struct nilfs_bmap *bmap,
goto out; goto out;
} }
ret = btree->bt_ops->btop_propagate(btree, path, level, bh); ret = NILFS_BMAP_USE_VBN(bmap) ?
nilfs_btree_propagate_v(btree, path, level, bh) :
nilfs_btree_propagate_p(btree, path, level, bh);
out: out:
nilfs_btree_clear_path(btree, path); nilfs_btree_clear_path(btree, path);
...@@ -2107,8 +2109,9 @@ static int nilfs_btree_assign(struct nilfs_bmap *bmap, ...@@ -2107,8 +2109,9 @@ static int nilfs_btree_assign(struct nilfs_bmap *bmap,
goto out; goto out;
} }
ret = btree->bt_ops->btop_assign(btree, path, level, bh, ret = NILFS_BMAP_USE_VBN(bmap) ?
blocknr, binfo); nilfs_btree_assign_v(btree, path, level, bh, blocknr, binfo) :
nilfs_btree_assign_p(btree, path, level, bh, blocknr, binfo);
out: out:
nilfs_btree_clear_path(btree, path); nilfs_btree_clear_path(btree, path);
...@@ -2220,34 +2223,9 @@ static const struct nilfs_bmap_operations nilfs_btree_ops_gc = { ...@@ -2220,34 +2223,9 @@ static const struct nilfs_bmap_operations nilfs_btree_ops_gc = {
.bop_gather_data = NULL, .bop_gather_data = NULL,
}; };
static const struct nilfs_btree_operations nilfs_btree_ops_v = {
.btop_find_target = nilfs_btree_find_target_v,
.btop_set_target = nilfs_btree_set_target_v,
.btop_propagate = nilfs_btree_propagate_v,
.btop_assign = nilfs_btree_assign_v,
};
static const struct nilfs_btree_operations nilfs_btree_ops_p = {
.btop_find_target = NULL,
.btop_set_target = NULL,
.btop_propagate = nilfs_btree_propagate_p,
.btop_assign = nilfs_btree_assign_p,
};
int nilfs_btree_init(struct nilfs_bmap *bmap) int nilfs_btree_init(struct nilfs_bmap *bmap)
{ {
struct nilfs_btree *btree = (struct nilfs_btree *)bmap;
bmap->b_ops = &nilfs_btree_ops; bmap->b_ops = &nilfs_btree_ops;
switch (bmap->b_inode->i_ino) {
case NILFS_DAT_INO:
btree->bt_ops = &nilfs_btree_ops_p;
break;
default:
btree->bt_ops = &nilfs_btree_ops_v;
break;
}
return 0; return 0;
} }
......
...@@ -33,28 +33,6 @@ ...@@ -33,28 +33,6 @@
struct nilfs_btree; struct nilfs_btree;
struct nilfs_btree_path; struct nilfs_btree_path;
/**
* struct nilfs_btree_operations - B-tree operation table
*/
struct nilfs_btree_operations {
__u64 (*btop_find_target)(const struct nilfs_btree *,
const struct nilfs_btree_path *, __u64);
void (*btop_set_target)(struct nilfs_btree *, __u64, __u64);
struct the_nilfs *(*btop_get_nilfs)(struct nilfs_btree *);
int (*btop_propagate)(struct nilfs_btree *,
struct nilfs_btree_path *,
int,
struct buffer_head *);
int (*btop_assign)(struct nilfs_btree *,
struct nilfs_btree_path *,
int,
struct buffer_head **,
sector_t,
union nilfs_binfo *);
};
/** /**
* struct nilfs_btree_node - B-tree node * struct nilfs_btree_node - B-tree node
* @bn_flags: flags * @bn_flags: flags
...@@ -80,13 +58,9 @@ struct nilfs_btree_node { ...@@ -80,13 +58,9 @@ struct nilfs_btree_node {
/** /**
* struct nilfs_btree - B-tree structure * struct nilfs_btree - B-tree structure
* @bt_bmap: bmap base structure * @bt_bmap: bmap base structure
* @bt_ops: B-tree operation table
*/ */
struct nilfs_btree { struct nilfs_btree {
struct nilfs_bmap bt_bmap; struct nilfs_bmap bt_bmap;
/* B-tree-specific members */
const struct nilfs_btree_operations *bt_ops;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment