diff options
author | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2009-05-24 03:46:37 -0400 |
---|---|---|
committer | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2009-06-10 10:41:11 -0400 |
commit | 355c6b61034a571565dcd28801588671255d2329 (patch) | |
tree | 6596de80c43757ea87a5cc3dc973f5d2537f0812 /fs/nilfs2/direct.c | |
parent | d4b961576df2769b936bd967b01e8c607c3c9ad8 (diff) |
nilfs2: remove nilfs_direct_operations from direct mapping
will remove indirect function calls using nilfs_direct_operations
table.
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Diffstat (limited to 'fs/nilfs2/direct.c')
-rw-r--r-- | fs/nilfs2/direct.c | 46 |
1 files changed, 10 insertions, 36 deletions
diff --git a/fs/nilfs2/direct.c b/fs/nilfs2/direct.c index 2a546c8f784e..33467adf094b 100644 --- a/fs/nilfs2/direct.c +++ b/fs/nilfs2/direct.c | |||
@@ -90,8 +90,8 @@ static int nilfs_direct_prepare_insert(struct nilfs_direct *direct, | |||
90 | { | 90 | { |
91 | int ret; | 91 | int ret; |
92 | 92 | ||
93 | if (direct->d_ops->dop_find_target != NULL) | 93 | if (NILFS_BMAP_USE_VBN(&direct->d_bmap)) |
94 | req->bpr_ptr = direct->d_ops->dop_find_target(direct, key); | 94 | req->bpr_ptr = nilfs_direct_find_target_v(direct, key); |
95 | ret = nilfs_bmap_prepare_alloc_ptr(&direct->d_bmap, req); | 95 | ret = nilfs_bmap_prepare_alloc_ptr(&direct->d_bmap, req); |
96 | if (ret < 0) | 96 | if (ret < 0) |
97 | return ret; | 97 | return ret; |
@@ -116,8 +116,8 @@ static void nilfs_direct_commit_insert(struct nilfs_direct *direct, | |||
116 | if (!nilfs_bmap_dirty(&direct->d_bmap)) | 116 | if (!nilfs_bmap_dirty(&direct->d_bmap)) |
117 | nilfs_bmap_set_dirty(&direct->d_bmap); | 117 | nilfs_bmap_set_dirty(&direct->d_bmap); |
118 | 118 | ||
119 | if (direct->d_ops->dop_set_target != NULL) | 119 | if (NILFS_BMAP_USE_VBN(&direct->d_bmap)) |
120 | direct->d_ops->dop_set_target(direct, key, req->bpr_ptr); | 120 | nilfs_direct_set_target_v(direct, key, req->bpr_ptr); |
121 | } | 121 | } |
122 | 122 | ||
123 | static int nilfs_direct_insert(struct nilfs_bmap *bmap, __u64 key, __u64 ptr) | 123 | static int nilfs_direct_insert(struct nilfs_bmap *bmap, __u64 key, __u64 ptr) |
@@ -297,12 +297,10 @@ static int nilfs_direct_propagate_v(struct nilfs_direct *direct, | |||
297 | static int nilfs_direct_propagate(const struct nilfs_bmap *bmap, | 297 | static int nilfs_direct_propagate(const struct nilfs_bmap *bmap, |
298 | struct buffer_head *bh) | 298 | struct buffer_head *bh) |
299 | { | 299 | { |
300 | struct nilfs_direct *direct; | 300 | struct nilfs_direct *direct = (struct nilfs_direct *)bmap; |
301 | 301 | ||
302 | direct = (struct nilfs_direct *)bmap; | 302 | return NILFS_BMAP_USE_VBN(bmap) ? |
303 | return (direct->d_ops->dop_propagate != NULL) ? | 303 | nilfs_direct_propagate_v(direct, bh) : 0; |
304 | direct->d_ops->dop_propagate(direct, bh) : | ||
305 | 0; | ||
306 | } | 304 | } |
307 | 305 | ||
308 | static int nilfs_direct_assign_v(struct nilfs_direct *direct, | 306 | static int nilfs_direct_assign_v(struct nilfs_direct *direct, |
@@ -362,8 +360,9 @@ static int nilfs_direct_assign(struct nilfs_bmap *bmap, | |||
362 | return -EINVAL; | 360 | return -EINVAL; |
363 | } | 361 | } |
364 | 362 | ||
365 | return direct->d_ops->dop_assign(direct, key, ptr, bh, | 363 | return NILFS_BMAP_USE_VBN(bmap) ? |
366 | blocknr, binfo); | 364 | nilfs_direct_assign_v(direct, key, ptr, bh, blocknr, binfo) : |
365 | nilfs_direct_assign_p(direct, key, ptr, bh, blocknr, binfo); | ||
367 | } | 366 | } |
368 | 367 | ||
369 | static const struct nilfs_bmap_operations nilfs_direct_ops = { | 368 | static const struct nilfs_bmap_operations nilfs_direct_ops = { |
@@ -386,33 +385,8 @@ static const struct nilfs_bmap_operations nilfs_direct_ops = { | |||
386 | }; | 385 | }; |
387 | 386 | ||
388 | 387 | ||
389 | static const struct nilfs_direct_operations nilfs_direct_ops_v = { | ||
390 | .dop_find_target = nilfs_direct_find_target_v, | ||
391 | .dop_set_target = nilfs_direct_set_target_v, | ||
392 | .dop_propagate = nilfs_direct_propagate_v, | ||
393 | .dop_assign = nilfs_direct_assign_v, | ||
394 | }; | ||
395 | |||
396 | static const struct nilfs_direct_operations nilfs_direct_ops_p = { | ||
397 | .dop_find_target = NULL, | ||
398 | .dop_set_target = NULL, | ||
399 | .dop_propagate = NULL, | ||
400 | .dop_assign = nilfs_direct_assign_p, | ||
401 | }; | ||
402 | |||
403 | int nilfs_direct_init(struct nilfs_bmap *bmap) | 388 | int nilfs_direct_init(struct nilfs_bmap *bmap) |
404 | { | 389 | { |
405 | struct nilfs_direct *direct = (struct nilfs_direct *)bmap; | ||
406 | |||
407 | bmap->b_ops = &nilfs_direct_ops; | 390 | bmap->b_ops = &nilfs_direct_ops; |
408 | switch (bmap->b_inode->i_ino) { | ||
409 | case NILFS_DAT_INO: | ||
410 | direct->d_ops = &nilfs_direct_ops_p; | ||
411 | break; | ||
412 | default: | ||
413 | direct->d_ops = &nilfs_direct_ops_v; | ||
414 | break; | ||
415 | } | ||
416 | |||
417 | return 0; | 391 | return 0; |
418 | } | 392 | } |