aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/ocfs2_fs.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/ocfs2_fs.h')
-rw-r--r--fs/ocfs2/ocfs2_fs.h35
1 files changed, 33 insertions, 2 deletions
diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h
index 98e1f8bba0e1..8d5e72f2c5cf 100644
--- a/fs/ocfs2/ocfs2_fs.h
+++ b/fs/ocfs2/ocfs2_fs.h
@@ -755,8 +755,13 @@ struct ocfs2_xattr_header {
755 __le16 xh_count; /* contains the count of how 755 __le16 xh_count; /* contains the count of how
756 many records are in the 756 many records are in the
757 local xattr storage. */ 757 local xattr storage. */
758 __le16 xh_reserved1; 758 __le16 xh_free_start; /* current offset for storing
759 __le32 xh_reserved2; 759 xattr. */
760 __le16 xh_name_value_len; /* total length of name/value
761 length in this bucket. */
762 __le16 xh_num_buckets; /* bucket nums in one extent
763 record, only valid in the
764 first bucket. */
760 __le64 xh_csum; 765 __le64 xh_csum;
761 struct ocfs2_xattr_entry xh_entries[0]; /* xattr entry list. */ 766 struct ocfs2_xattr_entry xh_entries[0]; /* xattr entry list. */
762}; 767};
@@ -793,6 +798,10 @@ struct ocfs2_xattr_tree_root {
793#define OCFS2_XATTR_SIZE(size) (((size) + OCFS2_XATTR_ROUND) & \ 798#define OCFS2_XATTR_SIZE(size) (((size) + OCFS2_XATTR_ROUND) & \
794 ~(OCFS2_XATTR_ROUND)) 799 ~(OCFS2_XATTR_ROUND))
795 800
801#define OCFS2_XATTR_BUCKET_SIZE 4096
802#define OCFS2_XATTR_MAX_BLOCKS_PER_BUCKET (OCFS2_XATTR_BUCKET_SIZE \
803 / OCFS2_MIN_BLOCKSIZE)
804
796/* 805/*
797 * On disk structure for xattr block. 806 * On disk structure for xattr block.
798 */ 807 */
@@ -963,6 +972,17 @@ static inline u64 ocfs2_backup_super_blkno(struct super_block *sb, int index)
963 return 0; 972 return 0;
964 973
965} 974}
975
976static inline u16 ocfs2_xattr_recs_per_xb(struct super_block *sb)
977{
978 int size;
979
980 size = sb->s_blocksize -
981 offsetof(struct ocfs2_xattr_block,
982 xb_attrs.xb_root.xt_list.l_recs);
983
984 return size / sizeof(struct ocfs2_extent_rec);
985}
966#else 986#else
967static inline int ocfs2_fast_symlink_chars(int blocksize) 987static inline int ocfs2_fast_symlink_chars(int blocksize)
968{ 988{
@@ -1046,6 +1066,17 @@ static inline uint64_t ocfs2_backup_super_blkno(int blocksize, int index)
1046 1066
1047 return 0; 1067 return 0;
1048} 1068}
1069
1070static inline int ocfs2_xattr_recs_per_xb(int blocksize)
1071{
1072 int size;
1073
1074 size = blocksize -
1075 offsetof(struct ocfs2_xattr_block,
1076 xb_attrs.xb_root.xt_list.l_recs);
1077
1078 return size / sizeof(struct ocfs2_extent_rec);
1079}
1049#endif /* __KERNEL__ */ 1080#endif /* __KERNEL__ */
1050 1081
1051 1082