Skip to content

Commit

Permalink
nilfs2: unify bmap operations starting use of indirect block address
Browse files Browse the repository at this point in the history
This simplifies some low level functions of bmap.

Three bmap pointer operations, nilfs_bmap_start_v(),
nilfs_bmap_commit_v(), and nilfs_bmap_abort_v(), are unified into one
nilfs_bmap_start_v() function. And the related indirect function calls
are replaced with it.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
  • Loading branch information
konis committed Jun 10, 2009
1 parent 6582207 commit d97a51a
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 45 deletions.
36 changes: 8 additions & 28 deletions fs/nilfs2/bmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -511,24 +511,16 @@ static void nilfs_bmap_abort_alloc_v(struct nilfs_bmap *bmap,
nilfs_dat_abort_alloc(nilfs_bmap_get_dat(bmap), &req->bpr_req);
}

static int nilfs_bmap_prepare_start_v(struct nilfs_bmap *bmap,
union nilfs_bmap_ptr_req *req)
int nilfs_bmap_start_v(struct nilfs_bmap *bmap, union nilfs_bmap_ptr_req *req,
sector_t blocknr)
{
return nilfs_dat_prepare_start(nilfs_bmap_get_dat(bmap), &req->bpr_req);
}

static void nilfs_bmap_commit_start_v(struct nilfs_bmap *bmap,
union nilfs_bmap_ptr_req *req,
sector_t blocknr)
{
nilfs_dat_commit_start(nilfs_bmap_get_dat(bmap), &req->bpr_req,
blocknr);
}
struct inode *dat = nilfs_bmap_get_dat(bmap);
int ret;

static void nilfs_bmap_abort_start_v(struct nilfs_bmap *bmap,
union nilfs_bmap_ptr_req *req)
{
nilfs_dat_abort_start(nilfs_bmap_get_dat(bmap), &req->bpr_req);
ret = nilfs_dat_prepare_start(dat, &req->bpr_req);
if (likely(!ret))
nilfs_dat_commit_start(dat, &req->bpr_req, blocknr);
return ret;
}

static int nilfs_bmap_prepare_end_v(struct nilfs_bmap *bmap,
Expand Down Expand Up @@ -636,9 +628,6 @@ static const struct nilfs_bmap_ptr_operations nilfs_bmap_ptr_ops_v = {
.bpop_prepare_alloc_ptr = nilfs_bmap_prepare_alloc_v,
.bpop_commit_alloc_ptr = nilfs_bmap_commit_alloc_v,
.bpop_abort_alloc_ptr = nilfs_bmap_abort_alloc_v,
.bpop_prepare_start_ptr = nilfs_bmap_prepare_start_v,
.bpop_commit_start_ptr = nilfs_bmap_commit_start_v,
.bpop_abort_start_ptr = nilfs_bmap_abort_start_v,
.bpop_prepare_end_ptr = nilfs_bmap_prepare_end_v,
.bpop_commit_end_ptr = nilfs_bmap_commit_end_v,
.bpop_abort_end_ptr = nilfs_bmap_abort_end_v,
Expand All @@ -650,9 +639,6 @@ static const struct nilfs_bmap_ptr_operations nilfs_bmap_ptr_ops_vmdt = {
.bpop_prepare_alloc_ptr = nilfs_bmap_prepare_alloc_v,
.bpop_commit_alloc_ptr = nilfs_bmap_commit_alloc_v,
.bpop_abort_alloc_ptr = nilfs_bmap_abort_alloc_v,
.bpop_prepare_start_ptr = nilfs_bmap_prepare_start_v,
.bpop_commit_start_ptr = nilfs_bmap_commit_start_v,
.bpop_abort_start_ptr = nilfs_bmap_abort_start_v,
.bpop_prepare_end_ptr = nilfs_bmap_prepare_end_v,
.bpop_commit_end_ptr = nilfs_bmap_commit_end_vmdt,
.bpop_abort_end_ptr = nilfs_bmap_abort_end_v,
Expand All @@ -664,9 +650,6 @@ static const struct nilfs_bmap_ptr_operations nilfs_bmap_ptr_ops_p = {
.bpop_prepare_alloc_ptr = nilfs_bmap_prepare_alloc_p,
.bpop_commit_alloc_ptr = nilfs_bmap_commit_alloc_p,
.bpop_abort_alloc_ptr = nilfs_bmap_abort_alloc_p,
.bpop_prepare_start_ptr = NULL,
.bpop_commit_start_ptr = NULL,
.bpop_abort_start_ptr = NULL,
.bpop_prepare_end_ptr = NULL,
.bpop_commit_end_ptr = NULL,
.bpop_abort_end_ptr = NULL,
Expand All @@ -678,9 +661,6 @@ static const struct nilfs_bmap_ptr_operations nilfs_bmap_ptr_ops_gc = {
.bpop_prepare_alloc_ptr = NULL,
.bpop_commit_alloc_ptr = NULL,
.bpop_abort_alloc_ptr = NULL,
.bpop_prepare_start_ptr = NULL,
.bpop_commit_start_ptr = NULL,
.bpop_abort_start_ptr = NULL,
.bpop_prepare_end_ptr = NULL,
.bpop_commit_end_ptr = NULL,
.bpop_abort_end_ptr = NULL,
Expand Down
9 changes: 2 additions & 7 deletions fs/nilfs2/bmap.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,6 @@ struct nilfs_bmap_ptr_operations {
union nilfs_bmap_ptr_req *);
void (*bpop_abort_alloc_ptr)(struct nilfs_bmap *,
union nilfs_bmap_ptr_req *);
int (*bpop_prepare_start_ptr)(struct nilfs_bmap *,
union nilfs_bmap_ptr_req *);
void (*bpop_commit_start_ptr)(struct nilfs_bmap *,
union nilfs_bmap_ptr_req *,
sector_t);
void (*bpop_abort_start_ptr)(struct nilfs_bmap *,
union nilfs_bmap_ptr_req *);
int (*bpop_prepare_end_ptr)(struct nilfs_bmap *,
union nilfs_bmap_ptr_req *);
void (*bpop_commit_end_ptr)(struct nilfs_bmap *,
Expand Down Expand Up @@ -183,6 +176,8 @@ void nilfs_bmap_commit_gcdat(struct nilfs_bmap *, struct nilfs_bmap *);
* Internal use only
*/

int nilfs_bmap_start_v(struct nilfs_bmap *, union nilfs_bmap_ptr_req *,
sector_t);
int nilfs_bmap_move_v(const struct nilfs_bmap *, __u64, sector_t);
int nilfs_bmap_mark_dirty(const struct nilfs_bmap *, __u64);

Expand Down
7 changes: 2 additions & 5 deletions fs/nilfs2/btree.c
Original file line number Diff line number Diff line change
Expand Up @@ -2066,12 +2066,9 @@ static int nilfs_btree_assign_v(struct nilfs_btree *btree,
ptr = nilfs_btree_node_get_ptr(btree, parent,
path[level + 1].bp_index);
req.bpr_ptr = ptr;
ret = btree->bt_bmap.b_pops->bpop_prepare_start_ptr(&btree->bt_bmap,
&req);
if (ret < 0)
ret = nilfs_bmap_start_v(&btree->bt_bmap, &req, blocknr);
if (unlikely(ret < 0))
return ret;
btree->bt_bmap.b_pops->bpop_commit_start_ptr(&btree->bt_bmap,
&req, blocknr);

key = nilfs_btree_node_get_key(btree, parent,
path[level + 1].bp_index);
Expand Down
7 changes: 2 additions & 5 deletions fs/nilfs2/direct.c
Original file line number Diff line number Diff line change
Expand Up @@ -327,12 +327,9 @@ static int nilfs_direct_assign_v(struct nilfs_direct *direct,
int ret;

req.bpr_ptr = ptr;
ret = direct->d_bmap.b_pops->bpop_prepare_start_ptr(
&direct->d_bmap, &req);
if (ret < 0)
ret = nilfs_bmap_start_v(&direct->d_bmap, &req, blocknr);
if (unlikely(ret < 0))
return ret;
direct->d_bmap.b_pops->bpop_commit_start_ptr(&direct->d_bmap,
&req, blocknr);

binfo->bi_v.bi_vblocknr = nilfs_bmap_ptr_to_dptr(ptr);
binfo->bi_v.bi_blkoff = nilfs_bmap_key_to_dkey(key);
Expand Down

0 comments on commit d97a51a

Please sign in to comment.