aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/aops.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/aops.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/aops.c')
-rw-r--r--fs/ocfs2/aops.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index e7acd286790..530b1ff599c 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -1279,7 +1279,7 @@ static int ocfs2_write_cluster(struct address_space *mapping,
1279 ret = ocfs2_mark_extent_written(inode, wc->w_di_bh, 1279 ret = ocfs2_mark_extent_written(inode, wc->w_di_bh,
1280 wc->w_handle, cpos, 1, phys, 1280 wc->w_handle, cpos, 1, phys,
1281 meta_ac, &wc->w_dealloc, 1281 meta_ac, &wc->w_dealloc,
1282 OCFS2_DINODE_EXTENT); 1282 OCFS2_DINODE_EXTENT, NULL);
1283 if (ret < 0) { 1283 if (ret < 0) {
1284 mlog_errno(ret); 1284 mlog_errno(ret);
1285 goto out; 1285 goto out;
@@ -1721,7 +1721,8 @@ int ocfs2_write_begin_nolock(struct address_space *mapping,
1721 1721
1722 ret = ocfs2_lock_allocators(inode, wc->w_di_bh, &di->id2.i_list, 1722 ret = ocfs2_lock_allocators(inode, wc->w_di_bh, &di->id2.i_list,
1723 clusters_to_alloc, extents_to_split, 1723 clusters_to_alloc, extents_to_split,
1724 &data_ac, &meta_ac); 1724 &data_ac, &meta_ac,
1725 OCFS2_DINODE_EXTENT, NULL);
1725 if (ret) { 1726 if (ret) {
1726 mlog_errno(ret); 1727 mlog_errno(ret);
1727 goto out; 1728 goto out;