aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/dir.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/dir.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/dir.c')
-rw-r--r--fs/ocfs2/dir.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c
index d17c34b0ac6b..5426a02c12bb 100644
--- a/fs/ocfs2/dir.c
+++ b/fs/ocfs2/dir.c
@@ -1305,8 +1305,8 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh,
1305 * This should never fail as our extent list is empty and all 1305 * This should never fail as our extent list is empty and all
1306 * related blocks have been journaled already. 1306 * related blocks have been journaled already.
1307 */ 1307 */
1308 ret = ocfs2_insert_extent(osb, handle, dir, di_bh, 0, blkno, len, 0, 1308 ret = ocfs2_dinode_insert_extent(osb, handle, dir, di_bh, 0, blkno,
1309 NULL, OCFS2_DINODE_EXTENT); 1309 len, 0, NULL);
1310 if (ret) { 1310 if (ret) {
1311 mlog_errno(ret); 1311 mlog_errno(ret);
1312 goto out_commit; 1312 goto out_commit;
@@ -1337,8 +1337,8 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh,
1337 } 1337 }
1338 blkno = ocfs2_clusters_to_blocks(dir->i_sb, bit_off); 1338 blkno = ocfs2_clusters_to_blocks(dir->i_sb, bit_off);
1339 1339
1340 ret = ocfs2_insert_extent(osb, handle, dir, di_bh, 1, blkno, 1340 ret = ocfs2_dinode_insert_extent(osb, handle, dir, di_bh, 1,
1341 len, 0, NULL, OCFS2_DINODE_EXTENT); 1341 blkno, len, 0, NULL);
1342 if (ret) { 1342 if (ret) {
1343 mlog_errno(ret); 1343 mlog_errno(ret);
1344 goto out_commit; 1344 goto out_commit;
@@ -1482,7 +1482,8 @@ static int ocfs2_extend_dir(struct ocfs2_super *osb,
1482 spin_unlock(&OCFS2_I(dir)->ip_lock); 1482 spin_unlock(&OCFS2_I(dir)->ip_lock);
1483 num_free_extents = ocfs2_num_free_extents(osb, dir, 1483 num_free_extents = ocfs2_num_free_extents(osb, dir,
1484 parent_fe_bh, 1484 parent_fe_bh,
1485 OCFS2_DINODE_EXTENT); 1485 OCFS2_DINODE_EXTENT,
1486 NULL);
1486 if (num_free_extents < 0) { 1487 if (num_free_extents < 0) {
1487 status = num_free_extents; 1488 status = num_free_extents;
1488 mlog_errno(status); 1489 mlog_errno(status);