Go to the documentation of this file.
31 #define XFS_AGF_MAGIC 0x58414746
32 #define XFS_AGI_MAGIC 0x58414749
33 #define XFS_AGF_VERSION 1
34 #define XFS_AGI_VERSION 1
36 #define XFS_AGF_GOOD_VERSION(v) ((v) == XFS_AGF_VERSION)
37 #define XFS_AGI_GOOD_VERSION(v) ((v) == XFS_AGI_VERSION)
43 #define XFS_BTNUM_AGF ((int)XFS_BTNUM_CNTi + 1)
74 #define XFS_AGF_MAGICNUM 0x00000001
75 #define XFS_AGF_VERSIONNUM 0x00000002
76 #define XFS_AGF_SEQNO 0x00000004
77 #define XFS_AGF_LENGTH 0x00000008
78 #define XFS_AGF_ROOTS 0x00000010
79 #define XFS_AGF_LEVELS 0x00000020
80 #define XFS_AGF_FLFIRST 0x00000040
81 #define XFS_AGF_FLLAST 0x00000080
82 #define XFS_AGF_FLCOUNT 0x00000100
83 #define XFS_AGF_FREEBLKS 0x00000200
84 #define XFS_AGF_LONGEST 0x00000400
85 #define XFS_AGF_BTREEBLKS 0x00000800
86 #define XFS_AGF_NUM_BITS 12
87 #define XFS_AGF_ALL_BITS ((1 << XFS_AGF_NUM_BITS) - 1)
89 #define XFS_AGF_FLAGS \
90 { XFS_AGF_MAGICNUM, "MAGICNUM" }, \
91 { XFS_AGF_VERSIONNUM, "VERSIONNUM" }, \
92 { XFS_AGF_SEQNO, "SEQNO" }, \
93 { XFS_AGF_LENGTH, "LENGTH" }, \
94 { XFS_AGF_ROOTS, "ROOTS" }, \
95 { XFS_AGF_LEVELS, "LEVELS" }, \
96 { XFS_AGF_FLFIRST, "FLFIRST" }, \
97 { XFS_AGF_FLLAST, "FLLAST" }, \
98 { XFS_AGF_FLCOUNT, "FLCOUNT" }, \
99 { XFS_AGF_FREEBLKS, "FREEBLKS" }, \
100 { XFS_AGF_LONGEST, "LONGEST" }, \
101 { XFS_AGF_BTREEBLKS, "BTREEBLKS" }
104 #define XFS_AGF_DADDR(mp) ((xfs_daddr_t)(1 << (mp)->m_sectbb_log))
105 #define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp))
106 #define XFS_BUF_TO_AGF(bp) ((xfs_agf_t *)((bp)->b_addr))
108 extern int xfs_read_agf(
struct xfs_mount *
mp,
struct xfs_trans *tp,
114 #define XFS_AGI_UNLINKED_BUCKETS 64
142 #define XFS_AGI_MAGICNUM 0x00000001
143 #define XFS_AGI_VERSIONNUM 0x00000002
144 #define XFS_AGI_SEQNO 0x00000004
145 #define XFS_AGI_LENGTH 0x00000008
146 #define XFS_AGI_COUNT 0x00000010
147 #define XFS_AGI_ROOT 0x00000020
148 #define XFS_AGI_LEVEL 0x00000040
149 #define XFS_AGI_FREECOUNT 0x00000080
150 #define XFS_AGI_NEWINO 0x00000100
151 #define XFS_AGI_DIRINO 0x00000200
152 #define XFS_AGI_UNLINKED 0x00000400
153 #define XFS_AGI_NUM_BITS 11
154 #define XFS_AGI_ALL_BITS ((1 << XFS_AGI_NUM_BITS) - 1)
157 #define XFS_AGI_DADDR(mp) ((xfs_daddr_t)(2 << (mp)->m_sectbb_log))
158 #define XFS_AGI_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGI_DADDR(mp))
159 #define XFS_BUF_TO_AGI(bp) ((xfs_agi_t *)((bp)->b_addr))
161 extern int xfs_read_agi(
struct xfs_mount *
mp,
struct xfs_trans *tp,
168 #define XFS_AGFL_DADDR(mp) ((xfs_daddr_t)(3 << (mp)->m_sectbb_log))
169 #define XFS_AGFL_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGFL_DADDR(mp))
170 #define XFS_AGFL_SIZE(mp) ((mp)->m_sb.sb_sectsize / sizeof(xfs_agblock_t))
171 #define XFS_BUF_TO_AGFL(bp) ((xfs_agfl_t *)((bp)->b_addr))
181 #define XFS_PAGB_NUM_SLOTS 128
216 int pag_ici_reclaimable;
217 struct mutex pag_ici_reclaim_lock;
218 unsigned long pag_ici_reclaim_cursor;
233 #define XFS_ICI_NO_TAG (-1)
235 #define XFS_ICI_RECLAIM_TAG 0
237 #define XFS_AG_MAXLEVELS(mp) ((mp)->m_ag_maxlevels)
238 #define XFS_MIN_FREELIST_RAW(bl,cl,mp) \
239 (MIN(bl + 1, XFS_AG_MAXLEVELS(mp)) + MIN(cl + 1, XFS_AG_MAXLEVELS(mp)))
240 #define XFS_MIN_FREELIST(a,mp) \
241 (XFS_MIN_FREELIST_RAW( \
242 be32_to_cpu((a)->agf_levels[XFS_BTNUM_BNOi]), \
243 be32_to_cpu((a)->agf_levels[XFS_BTNUM_CNTi]), mp))
244 #define XFS_MIN_FREELIST_PAG(pag,mp) \
245 (XFS_MIN_FREELIST_RAW( \
246 (unsigned int)(pag)->pagf_levels[XFS_BTNUM_BNOi], \
247 (unsigned int)(pag)->pagf_levels[XFS_BTNUM_CNTi], mp))
249 #define XFS_AGB_TO_FSB(mp,agno,agbno) \
250 (((xfs_fsblock_t)(agno) << (mp)->m_sb.sb_agblklog) | (agbno))
251 #define XFS_FSB_TO_AGNO(mp,fsbno) \
252 ((xfs_agnumber_t)((fsbno) >> (mp)->m_sb.sb_agblklog))
253 #define XFS_FSB_TO_AGBNO(mp,fsbno) \
254 ((xfs_agblock_t)((fsbno) & xfs_mask32lo((mp)->m_sb.sb_agblklog)))
255 #define XFS_AGB_TO_DADDR(mp,agno,agbno) \
256 ((xfs_daddr_t)XFS_FSB_TO_BB(mp, \
257 (xfs_fsblock_t)(agno) * (mp)->m_sb.sb_agblocks + (agbno)))
258 #define XFS_AG_DADDR(mp,agno,d) (XFS_AGB_TO_DADDR(mp, agno, 0) + (d))
264 #define XFS_AG_CHECK_DADDR(mp,d,len) \
266 ASSERT((d) == XFS_SB_DADDR || \
267 xfs_daddr_to_agbno(mp, d) != XFS_SB_DADDR) : \
268 ASSERT(xfs_daddr_to_agno(mp, d) == \
269 xfs_daddr_to_agno(mp, (d) + (len) - 1)))