diff options
author | Tao Ma <tao.ma@oracle.com> | 2009-08-11 02:33:14 -0400 |
---|---|---|
committer | Joel Becker <joel.becker@oracle.com> | 2009-09-22 23:09:33 -0400 |
commit | e73a819db9c2d6c4065b7cab7374709b6939e8f1 (patch) | |
tree | 40968bc5b37d3b55e382267683c9612d4697f036 /fs/ocfs2/extent_map.c | |
parent | e2e9f6082b5ff099978774d5c0148e062344c2f9 (diff) |
ocfs2: Add support for incrementing refcount in the tree.
Given a physical cpos and length, increment the refcount
in the tree. If the extent has not been seen before, a refcount
record is created for it. Refcount records may be merged or
split by this operation.
Signed-off-by: Tao Ma <tao.ma@oracle.com>
Diffstat (limited to 'fs/ocfs2/extent_map.c')
-rw-r--r-- | fs/ocfs2/extent_map.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/ocfs2/extent_map.c b/fs/ocfs2/extent_map.c index dc9482cb463a..40b51056bb32 100644 --- a/fs/ocfs2/extent_map.c +++ b/fs/ocfs2/extent_map.c | |||
@@ -353,11 +353,11 @@ static int ocfs2_search_for_hole_index(struct ocfs2_extent_list *el, | |||
353 | * eb_bh is NULL. Otherwise, eb_bh should point to the extent block | 353 | * eb_bh is NULL. Otherwise, eb_bh should point to the extent block |
354 | * containing el. | 354 | * containing el. |
355 | */ | 355 | */ |
356 | static int ocfs2_figure_hole_clusters(struct inode *inode, | 356 | int ocfs2_figure_hole_clusters(struct ocfs2_caching_info *ci, |
357 | struct ocfs2_extent_list *el, | 357 | struct ocfs2_extent_list *el, |
358 | struct buffer_head *eb_bh, | 358 | struct buffer_head *eb_bh, |
359 | u32 v_cluster, | 359 | u32 v_cluster, |
360 | u32 *num_clusters) | 360 | u32 *num_clusters) |
361 | { | 361 | { |
362 | int ret, i; | 362 | int ret, i; |
363 | struct buffer_head *next_eb_bh = NULL; | 363 | struct buffer_head *next_eb_bh = NULL; |
@@ -375,7 +375,7 @@ static int ocfs2_figure_hole_clusters(struct inode *inode, | |||
375 | if (le64_to_cpu(eb->h_next_leaf_blk) == 0ULL) | 375 | if (le64_to_cpu(eb->h_next_leaf_blk) == 0ULL) |
376 | goto no_more_extents; | 376 | goto no_more_extents; |
377 | 377 | ||
378 | ret = ocfs2_read_extent_block(INODE_CACHE(inode), | 378 | ret = ocfs2_read_extent_block(ci, |
379 | le64_to_cpu(eb->h_next_leaf_blk), | 379 | le64_to_cpu(eb->h_next_leaf_blk), |
380 | &next_eb_bh); | 380 | &next_eb_bh); |
381 | if (ret) { | 381 | if (ret) { |
@@ -456,7 +456,8 @@ static int ocfs2_get_clusters_nocache(struct inode *inode, | |||
456 | * field. | 456 | * field. |
457 | */ | 457 | */ |
458 | if (hole_len) { | 458 | if (hole_len) { |
459 | ret = ocfs2_figure_hole_clusters(inode, el, eb_bh, | 459 | ret = ocfs2_figure_hole_clusters(INODE_CACHE(inode), |
460 | el, eb_bh, | ||
460 | v_cluster, &len); | 461 | v_cluster, &len); |
461 | if (ret) { | 462 | if (ret) { |
462 | mlog_errno(ret); | 463 | mlog_errno(ret); |