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 | |
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')
-rw-r--r-- | fs/nilfs2/direct.c | 46 | ||||
-rw-r--r-- | fs/nilfs2/direct.h | 16 |
2 files changed, 10 insertions, 52 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 | } |
diff --git a/fs/nilfs2/direct.h b/fs/nilfs2/direct.h index d645f13b9aea..a5ffd66e25d0 100644 --- a/fs/nilfs2/direct.h +++ b/fs/nilfs2/direct.h | |||
@@ -31,18 +31,6 @@ | |||
31 | struct nilfs_direct; | 31 | struct nilfs_direct; |
32 | 32 | ||
33 | /** | 33 | /** |
34 | * struct nilfs_direct_operations - direct mapping operation table | ||
35 | */ | ||
36 | struct nilfs_direct_operations { | ||
37 | __u64 (*dop_find_target)(const struct nilfs_direct *, __u64); | ||
38 | void (*dop_set_target)(struct nilfs_direct *, __u64, __u64); | ||
39 | int (*dop_propagate)(struct nilfs_direct *, struct buffer_head *); | ||
40 | int (*dop_assign)(struct nilfs_direct *, __u64, __u64, | ||
41 | struct buffer_head **, sector_t, | ||
42 | union nilfs_binfo *); | ||
43 | }; | ||
44 | |||
45 | /** | ||
46 | * struct nilfs_direct_node - direct node | 34 | * struct nilfs_direct_node - direct node |
47 | * @dn_flags: flags | 35 | * @dn_flags: flags |
48 | * @dn_pad: padding | 36 | * @dn_pad: padding |
@@ -55,13 +43,9 @@ struct nilfs_direct_node { | |||
55 | /** | 43 | /** |
56 | * struct nilfs_direct - direct mapping | 44 | * struct nilfs_direct - direct mapping |
57 | * @d_bmap: bmap structure | 45 | * @d_bmap: bmap structure |
58 | * @d_ops: direct mapping operation table | ||
59 | */ | 46 | */ |
60 | struct nilfs_direct { | 47 | struct nilfs_direct { |
61 | struct nilfs_bmap d_bmap; | 48 | struct nilfs_bmap d_bmap; |
62 | |||
63 | /* direct-mapping-specific members */ | ||
64 | const struct nilfs_direct_operations *d_ops; | ||
65 | }; | 49 | }; |
66 | 50 | ||
67 | 51 | ||