nilfs2: unify bmap operations starting use of indirect block address
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>
This commit is contained in:
Родитель
6582207064
Коммит
d97a51a7e3
|
@ -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);
|
||||
}
|
||||
struct inode *dat = nilfs_bmap_get_dat(bmap);
|
||||
int ret;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
|
|
@ -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 *,
|
||||
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче