diff options
Diffstat (limited to 'fs/xfs/xfs_ag.h')
-rw-r--r-- | fs/xfs/xfs_ag.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index 61b292a9fb41..f2e21817a226 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h | |||
@@ -91,6 +91,8 @@ typedef struct xfs_agf { | |||
91 | #define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp)) | 91 | #define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp)) |
92 | #define XFS_BUF_TO_AGF(bp) ((xfs_agf_t *)XFS_BUF_PTR(bp)) | 92 | #define XFS_BUF_TO_AGF(bp) ((xfs_agf_t *)XFS_BUF_PTR(bp)) |
93 | 93 | ||
94 | extern int xfs_read_agf(struct xfs_mount *mp, struct xfs_trans *tp, | ||
95 | xfs_agnumber_t agno, int flags, struct xfs_buf **bpp); | ||
94 | 96 | ||
95 | /* | 97 | /* |
96 | * Size of the unlinked inode hash table in the agi. | 98 | * Size of the unlinked inode hash table in the agi. |
@@ -142,6 +144,9 @@ typedef struct xfs_agi { | |||
142 | #define XFS_AGI_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGI_DADDR(mp)) | 144 | #define XFS_AGI_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGI_DADDR(mp)) |
143 | #define XFS_BUF_TO_AGI(bp) ((xfs_agi_t *)XFS_BUF_PTR(bp)) | 145 | #define XFS_BUF_TO_AGI(bp) ((xfs_agi_t *)XFS_BUF_PTR(bp)) |
144 | 146 | ||
147 | extern int xfs_read_agi(struct xfs_mount *mp, struct xfs_trans *tp, | ||
148 | xfs_agnumber_t agno, struct xfs_buf **bpp); | ||
149 | |||
145 | /* | 150 | /* |
146 | * The third a.g. block contains the a.g. freelist, an array | 151 | * The third a.g. block contains the a.g. freelist, an array |
147 | * of block pointers to blocks owned by the allocation btree code. | 152 | * of block pointers to blocks owned by the allocation btree code. |
@@ -192,17 +197,23 @@ typedef struct xfs_perag | |||
192 | xfs_agino_t pagi_freecount; /* number of free inodes */ | 197 | xfs_agino_t pagi_freecount; /* number of free inodes */ |
193 | xfs_agino_t pagi_count; /* number of allocated inodes */ | 198 | xfs_agino_t pagi_count; /* number of allocated inodes */ |
194 | int pagb_count; /* pagb slots in use */ | 199 | int pagb_count; /* pagb slots in use */ |
200 | xfs_perag_busy_t *pagb_list; /* unstable blocks */ | ||
195 | #ifdef __KERNEL__ | 201 | #ifdef __KERNEL__ |
196 | spinlock_t pagb_lock; /* lock for pagb_list */ | 202 | spinlock_t pagb_lock; /* lock for pagb_list */ |
197 | #endif | 203 | |
198 | xfs_perag_busy_t *pagb_list; /* unstable blocks */ | ||
199 | atomic_t pagf_fstrms; /* # of filestreams active in this AG */ | 204 | atomic_t pagf_fstrms; /* # of filestreams active in this AG */ |
200 | 205 | ||
201 | int pag_ici_init; /* incore inode cache initialised */ | 206 | int pag_ici_init; /* incore inode cache initialised */ |
202 | rwlock_t pag_ici_lock; /* incore inode lock */ | 207 | rwlock_t pag_ici_lock; /* incore inode lock */ |
203 | struct radix_tree_root pag_ici_root; /* incore inode cache root */ | 208 | struct radix_tree_root pag_ici_root; /* incore inode cache root */ |
209 | #endif | ||
204 | } xfs_perag_t; | 210 | } xfs_perag_t; |
205 | 211 | ||
212 | /* | ||
213 | * tags for inode radix tree | ||
214 | */ | ||
215 | #define XFS_ICI_RECLAIM_TAG 0 /* inode is to be reclaimed */ | ||
216 | |||
206 | #define XFS_AG_MAXLEVELS(mp) ((mp)->m_ag_maxlevels) | 217 | #define XFS_AG_MAXLEVELS(mp) ((mp)->m_ag_maxlevels) |
207 | #define XFS_MIN_FREELIST_RAW(bl,cl,mp) \ | 218 | #define XFS_MIN_FREELIST_RAW(bl,cl,mp) \ |
208 | (MIN(bl + 1, XFS_AG_MAXLEVELS(mp)) + MIN(cl + 1, XFS_AG_MAXLEVELS(mp))) | 219 | (MIN(bl + 1, XFS_AG_MAXLEVELS(mp)) + MIN(cl + 1, XFS_AG_MAXLEVELS(mp))) |