diff options
author | Tiger Yang <tiger.yang@oracle.com> | 2008-08-18 05:11:00 -0400 |
---|---|---|
committer | Mark Fasheh <mfasheh@suse.com> | 2008-10-13 19:57:02 -0400 |
commit | cf1d6c763fbcb115263114302485ad17e7933d87 (patch) | |
tree | 85717dc9d20b7ac1e31b683653933f2d30099f44 /fs/ocfs2/suballoc.c | |
parent | fdd77704a8b4666a32120fcd1e4a9fedaf3263d8 (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.c | 17 |
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 | ||
496 | int ocfs2_reserve_new_metadata(struct ocfs2_super *osb, | 496 | int 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 | ||
535 | int 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 | |||
535 | static int ocfs2_steal_inode_from_other_nodes(struct ocfs2_super *osb, | 544 | static 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 | { |