aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/file.c
diff options
context:
space:
mode:
authorTao Ma <tao.ma@oracle.com>2008-08-18 05:38:48 -0400
committerMark Fasheh <mfasheh@suse.com>2008-10-13 19:57:01 -0400
commitf56654c435c06f2b2bd5751889b1a08a3add7d6c (patch)
treeb186d68aedc5dda7afe435f5a68c03937ae382ff /fs/ocfs2/file.c
parentac11c827192272eabb68b8f4cf844066461d9690 (diff)
ocfs2: Add extent tree operation for xattr value btrees
Add some thin wrappers around ocfs2_insert_extent() for each of the 3 different btree types, ocfs2_inode_insert_extent(), ocfs2_xattr_value_insert_extent() and ocfs2_xattr_tree_insert_extent(). The last is for the xattr index btree, which will be used in a followup patch. All the old callers in file.c etc will call ocfs2_dinode_insert_extent(), while the other two handle the xattr issue. And the init of extent tree are handled by these functions. When storing xattr value which is too large, we will allocate some clusters for it and here ocfs2_extent_list and ocfs2_extent_rec will also be used. In order to re-use the b-tree operation code, a new parameter named "private" is added into ocfs2_extent_tree and it is used to indicate the root of ocfs2_exent_list. The reason is that we can't deduce the root from the buffer_head now. It may be in an inode, an ocfs2_xattr_block or even worse, in any place in an ocfs2_xattr_bucket. Signed-off-by: Tao Ma <tao.ma@oracle.com> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Diffstat (limited to 'fs/ocfs2/file.c')
-rw-r--r--fs/ocfs2/file.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 7bb4fde7005..89d8541f85b 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -515,7 +515,7 @@ int ocfs2_add_inode_data(struct ocfs2_super *osb,
515 clusters_to_add, mark_unwritten, 515 clusters_to_add, mark_unwritten,
516 fe_bh, el, handle, 516 fe_bh, el, handle,
517 data_ac, meta_ac, reason_ret, 517 data_ac, meta_ac, reason_ret,
518 OCFS2_DINODE_EXTENT); 518 OCFS2_DINODE_EXTENT, NULL);
519} 519}
520 520
521static int __ocfs2_extend_allocation(struct inode *inode, u32 logical_start, 521static int __ocfs2_extend_allocation(struct inode *inode, u32 logical_start,
@@ -565,7 +565,7 @@ restart_all:
565 clusters_to_add); 565 clusters_to_add);
566 status = ocfs2_lock_allocators(inode, bh, &fe->id2.i_list, 566 status = ocfs2_lock_allocators(inode, bh, &fe->id2.i_list,
567 clusters_to_add, 0, &data_ac, 567 clusters_to_add, 0, &data_ac,
568 &meta_ac); 568 &meta_ac, OCFS2_DINODE_EXTENT, NULL);
569 if (status) { 569 if (status) {
570 mlog_errno(status); 570 mlog_errno(status);
571 goto leave; 571 goto leave;
@@ -1237,7 +1237,8 @@ static int __ocfs2_remove_inode_range(struct inode *inode,
1237 struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; 1237 struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data;
1238 1238
1239 ret = ocfs2_lock_allocators(inode, di_bh, &di->id2.i_list, 1239 ret = ocfs2_lock_allocators(inode, di_bh, &di->id2.i_list,
1240 0, 1, NULL, &meta_ac); 1240 0, 1, NULL, &meta_ac,
1241 OCFS2_DINODE_EXTENT, NULL);
1241 if (ret) { 1242 if (ret) {
1242 mlog_errno(ret); 1243 mlog_errno(ret);
1243 return ret; 1244 return ret;
@@ -1268,7 +1269,7 @@ static int __ocfs2_remove_inode_range(struct inode *inode,
1268 } 1269 }
1269 1270
1270 ret = ocfs2_remove_extent(inode, di_bh, cpos, len, handle, meta_ac, 1271 ret = ocfs2_remove_extent(inode, di_bh, cpos, len, handle, meta_ac,
1271 dealloc, OCFS2_DINODE_EXTENT); 1272 dealloc, OCFS2_DINODE_EXTENT, NULL);
1272 if (ret) { 1273 if (ret) {
1273 mlog_errno(ret); 1274 mlog_errno(ret);
1274 goto out_commit; 1275 goto out_commit;