aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/suballoc.c
diff options
context:
space:
mode:
authorTiger Yang <tiger.yang@oracle.com>2008-08-18 05:11:00 -0400
committerMark Fasheh <mfasheh@suse.com>2008-10-13 19:57:02 -0400
commitcf1d6c763fbcb115263114302485ad17e7933d87 (patch)
tree85717dc9d20b7ac1e31b683653933f2d30099f44 /fs/ocfs2/suballoc.c
parentfdd77704a8b4666a32120fcd1e4a9fedaf3263d8 (diff)
ocfs2: Add extended attribute support
This patch implements storing extended attributes both in inode or a single external block. We only store EA's in-inode when blocksize > 512 or that inode block has free space for it. When an EA's value is larger than 80 bytes, we will store the value via b-tree outside inode or block. Signed-off-by: Tiger Yang <tiger.yang@oracle.com> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Diffstat (limited to 'fs/ocfs2/suballoc.c')
-rw-r--r--fs/ocfs2/suballoc.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
index bb774d70d268..f1871ca83815 100644
--- a/fs/ocfs2/suballoc.c
+++ b/fs/ocfs2/suballoc.c
@@ -493,9 +493,9 @@ bail:
493 return status; 493 return status;
494} 494}
495 495
496int ocfs2_reserve_new_metadata(struct ocfs2_super *osb, 496int ocfs2_reserve_new_metadata_blocks(struct ocfs2_super *osb,
497 struct ocfs2_extent_list *root_el, 497 int blocks,
498 struct ocfs2_alloc_context **ac) 498 struct ocfs2_alloc_context **ac)
499{ 499{
500 int status; 500 int status;
501 u32 slot; 501 u32 slot;
@@ -507,7 +507,7 @@ int ocfs2_reserve_new_metadata(struct ocfs2_super *osb,
507 goto bail; 507 goto bail;
508 } 508 }
509 509
510 (*ac)->ac_bits_wanted = ocfs2_extend_meta_needed(root_el); 510 (*ac)->ac_bits_wanted = blocks;
511 (*ac)->ac_which = OCFS2_AC_USE_META; 511 (*ac)->ac_which = OCFS2_AC_USE_META;
512 slot = osb->slot_num; 512 slot = osb->slot_num;
513 (*ac)->ac_group_search = ocfs2_block_group_search; 513 (*ac)->ac_group_search = ocfs2_block_group_search;
@@ -532,6 +532,15 @@ bail:
532 return status; 532 return status;
533} 533}
534 534
535int ocfs2_reserve_new_metadata(struct ocfs2_super *osb,
536 struct ocfs2_extent_list *root_el,
537 struct ocfs2_alloc_context **ac)
538{
539 return ocfs2_reserve_new_metadata_blocks(osb,
540 ocfs2_extend_meta_needed(root_el),
541 ac);
542}
543
535static int ocfs2_steal_inode_from_other_nodes(struct ocfs2_super *osb, 544static int ocfs2_steal_inode_from_other_nodes(struct ocfs2_super *osb,
536 struct ocfs2_alloc_context *ac) 545 struct ocfs2_alloc_context *ac)
537{ 546{