diff options
Diffstat (limited to 'fs/xfs/xfs_dir2_node.h')
-rw-r--r-- | fs/xfs/xfs_dir2_node.h | 111 |
1 files changed, 35 insertions, 76 deletions
diff --git a/fs/xfs/xfs_dir2_node.h b/fs/xfs/xfs_dir2_node.h index 96db420c7c5c..70fa0797c207 100644 --- a/fs/xfs/xfs_dir2_node.h +++ b/fs/xfs/xfs_dir2_node.h | |||
@@ -45,10 +45,6 @@ struct xfs_inode; | |||
45 | struct xfs_trans; | 45 | struct xfs_trans; |
46 | 46 | ||
47 | /* | 47 | /* |
48 | * Constants. | ||
49 | */ | ||
50 | |||
51 | /* | ||
52 | * Offset of the freespace index. | 48 | * Offset of the freespace index. |
53 | */ | 49 | */ |
54 | #define XFS_DIR2_FREE_SPACE 2 | 50 | #define XFS_DIR2_FREE_SPACE 2 |
@@ -58,9 +54,6 @@ struct xfs_trans; | |||
58 | 54 | ||
59 | #define XFS_DIR2_FREE_MAGIC 0x58443246 /* XD2F */ | 55 | #define XFS_DIR2_FREE_MAGIC 0x58443246 /* XD2F */ |
60 | 56 | ||
61 | /* | ||
62 | * Structures. | ||
63 | */ | ||
64 | typedef struct xfs_dir2_free_hdr { | 57 | typedef struct xfs_dir2_free_hdr { |
65 | __uint32_t magic; /* XFS_DIR2_FREE_MAGIC */ | 58 | __uint32_t magic; /* XFS_DIR2_FREE_MAGIC */ |
66 | __int32_t firstdb; /* db of first entry */ | 59 | __int32_t firstdb; /* db of first entry */ |
@@ -73,87 +66,53 @@ typedef struct xfs_dir2_free { | |||
73 | xfs_dir2_data_off_t bests[1]; /* best free counts */ | 66 | xfs_dir2_data_off_t bests[1]; /* best free counts */ |
74 | /* unused entries are -1 */ | 67 | /* unused entries are -1 */ |
75 | } xfs_dir2_free_t; | 68 | } xfs_dir2_free_t; |
69 | |||
76 | #define XFS_DIR2_MAX_FREE_BESTS(mp) \ | 70 | #define XFS_DIR2_MAX_FREE_BESTS(mp) \ |
77 | (((mp)->m_dirblksize - (uint)sizeof(xfs_dir2_free_hdr_t)) / \ | 71 | (((mp)->m_dirblksize - (uint)sizeof(xfs_dir2_free_hdr_t)) / \ |
78 | (uint)sizeof(xfs_dir2_data_off_t)) | 72 | (uint)sizeof(xfs_dir2_data_off_t)) |
79 | 73 | ||
80 | /* | 74 | /* |
81 | * Macros. | ||
82 | */ | ||
83 | |||
84 | /* | ||
85 | * Convert data space db to the corresponding free db. | 75 | * Convert data space db to the corresponding free db. |
86 | */ | 76 | */ |
87 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DB_TO_FDB) | ||
88 | xfs_dir2_db_t | ||
89 | xfs_dir2_db_to_fdb(struct xfs_mount *mp, xfs_dir2_db_t db); | ||
90 | #define XFS_DIR2_DB_TO_FDB(mp,db) xfs_dir2_db_to_fdb(mp, db) | 77 | #define XFS_DIR2_DB_TO_FDB(mp,db) xfs_dir2_db_to_fdb(mp, db) |
91 | #else | 78 | static inline xfs_dir2_db_t |
92 | #define XFS_DIR2_DB_TO_FDB(mp,db) \ | 79 | xfs_dir2_db_to_fdb(struct xfs_mount *mp, xfs_dir2_db_t db) |
93 | (XFS_DIR2_FREE_FIRSTDB(mp) + (db) / XFS_DIR2_MAX_FREE_BESTS(mp)) | 80 | { |
94 | #endif | 81 | return (XFS_DIR2_FREE_FIRSTDB(mp) + (db) / XFS_DIR2_MAX_FREE_BESTS(mp)); |
82 | } | ||
95 | 83 | ||
96 | /* | 84 | /* |
97 | * Convert data space db to the corresponding index in a free db. | 85 | * Convert data space db to the corresponding index in a free db. |
98 | */ | 86 | */ |
99 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DB_TO_FDINDEX) | ||
100 | int | ||
101 | xfs_dir2_db_to_fdindex(struct xfs_mount *mp, xfs_dir2_db_t db); | ||
102 | #define XFS_DIR2_DB_TO_FDINDEX(mp,db) xfs_dir2_db_to_fdindex(mp, db) | 87 | #define XFS_DIR2_DB_TO_FDINDEX(mp,db) xfs_dir2_db_to_fdindex(mp, db) |
103 | #else | 88 | static inline int |
104 | #define XFS_DIR2_DB_TO_FDINDEX(mp,db) ((db) % XFS_DIR2_MAX_FREE_BESTS(mp)) | 89 | xfs_dir2_db_to_fdindex(struct xfs_mount *mp, xfs_dir2_db_t db) |
105 | #endif | 90 | { |
106 | 91 | return ((db) % XFS_DIR2_MAX_FREE_BESTS(mp)); | |
107 | /* | 92 | } |
108 | * Functions. | 93 | |
109 | */ | 94 | extern void xfs_dir2_free_log_bests(struct xfs_trans *tp, struct xfs_dabuf *bp, |
110 | 95 | int first, int last); | |
111 | extern void | 96 | extern int xfs_dir2_leaf_to_node(struct xfs_da_args *args, |
112 | xfs_dir2_free_log_bests(struct xfs_trans *tp, struct xfs_dabuf *bp, | 97 | struct xfs_dabuf *lbp); |
113 | int first, int last); | 98 | extern xfs_dahash_t xfs_dir2_leafn_lasthash(struct xfs_dabuf *bp, int *count); |
114 | 99 | extern int xfs_dir2_leafn_lookup_int(struct xfs_dabuf *bp, | |
115 | extern int | 100 | struct xfs_da_args *args, int *indexp, |
116 | xfs_dir2_leaf_to_node(struct xfs_da_args *args, struct xfs_dabuf *lbp); | 101 | struct xfs_da_state *state); |
117 | 102 | extern int xfs_dir2_leafn_order(struct xfs_dabuf *leaf1_bp, | |
118 | extern xfs_dahash_t | 103 | struct xfs_dabuf *leaf2_bp); |
119 | xfs_dir2_leafn_lasthash(struct xfs_dabuf *bp, int *count); | 104 | extern int xfs_dir2_leafn_split(struct xfs_da_state *state, |
120 | 105 | struct xfs_da_state_blk *oldblk, | |
121 | extern int | 106 | struct xfs_da_state_blk *newblk); |
122 | xfs_dir2_leafn_lookup_int(struct xfs_dabuf *bp, | 107 | extern int xfs_dir2_leafn_toosmall(struct xfs_da_state *state, int *action); |
123 | struct xfs_da_args *args, int *indexp, | 108 | extern void xfs_dir2_leafn_unbalance(struct xfs_da_state *state, |
124 | struct xfs_da_state *state); | 109 | struct xfs_da_state_blk *drop_blk, |
125 | 110 | struct xfs_da_state_blk *save_blk); | |
126 | extern int | 111 | extern int xfs_dir2_node_addname(struct xfs_da_args *args); |
127 | xfs_dir2_leafn_order(struct xfs_dabuf *leaf1_bp, | 112 | extern int xfs_dir2_node_lookup(struct xfs_da_args *args); |
128 | struct xfs_dabuf *leaf2_bp); | 113 | extern int xfs_dir2_node_removename(struct xfs_da_args *args); |
129 | 114 | extern int xfs_dir2_node_replace(struct xfs_da_args *args); | |
130 | extern int | 115 | extern int xfs_dir2_node_trim_free(struct xfs_da_args *args, xfs_fileoff_t fo, |
131 | xfs_dir2_leafn_split(struct xfs_da_state *state, | 116 | int *rvalp); |
132 | struct xfs_da_state_blk *oldblk, | ||
133 | struct xfs_da_state_blk *newblk); | ||
134 | |||
135 | extern int | ||
136 | xfs_dir2_leafn_toosmall(struct xfs_da_state *state, int *action); | ||
137 | |||
138 | extern void | ||
139 | xfs_dir2_leafn_unbalance(struct xfs_da_state *state, | ||
140 | struct xfs_da_state_blk *drop_blk, | ||
141 | struct xfs_da_state_blk *save_blk); | ||
142 | |||
143 | extern int | ||
144 | xfs_dir2_node_addname(struct xfs_da_args *args); | ||
145 | |||
146 | extern int | ||
147 | xfs_dir2_node_lookup(struct xfs_da_args *args); | ||
148 | |||
149 | extern int | ||
150 | xfs_dir2_node_removename(struct xfs_da_args *args); | ||
151 | |||
152 | extern int | ||
153 | xfs_dir2_node_replace(struct xfs_da_args *args); | ||
154 | |||
155 | extern int | ||
156 | xfs_dir2_node_trim_free(struct xfs_da_args *args, xfs_fileoff_t fo, | ||
157 | int *rvalp); | ||
158 | 117 | ||
159 | #endif /* __XFS_DIR2_NODE_H__ */ | 118 | #endif /* __XFS_DIR2_NODE_H__ */ |