mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-04-01 12:04:08 +00:00
nilfs2: remove nilfs_btree_operations from btree mapping
will remove indirect function calls using nilfs_btree_operations table. Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
This commit is contained in:
parent
355c6b6103
commit
7cde31d7d6
2 changed files with 15 additions and 63 deletions
|
@ -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,
|
||||||
|
|
||||||
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,
|
||||||
|
|
||||||
/* 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,
|
||||||
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,
|
||||||
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,
|
||||||
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 = {
|
||||||
.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 @@
|
||||||
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 {
|
||||||
/**
|
/**
|
||||||
* 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;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue