Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

xfs: merge xfs_ag.h into xfs_format.h

More on-disk format consolidation. A few declarations that weren't on-disk
format related move into better suitable spots.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>

authored by

Christoph Hellwig and committed by
Dave Chinner
4fb6e8ad 5beda58b

+267 -358
-281
fs/xfs/libxfs/xfs_ag.h
··· 1 - /* 2 - * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. 3 - * All Rights Reserved. 4 - * 5 - * This program is free software; you can redistribute it and/or 6 - * modify it under the terms of the GNU General Public License as 7 - * published by the Free Software Foundation. 8 - * 9 - * This program is distributed in the hope that it would be useful, 10 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 - * GNU General Public License for more details. 13 - * 14 - * You should have received a copy of the GNU General Public License 15 - * along with this program; if not, write the Free Software Foundation, 16 - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 17 - */ 18 - #ifndef __XFS_AG_H__ 19 - #define __XFS_AG_H__ 20 - 21 - /* 22 - * Allocation group header 23 - * This is divided into three structures, placed in sequential 512-byte 24 - * buffers after a copy of the superblock (also in a 512-byte buffer). 25 - */ 26 - 27 - struct xfs_buf; 28 - struct xfs_mount; 29 - struct xfs_trans; 30 - 31 - #define XFS_AGF_MAGIC 0x58414746 /* 'XAGF' */ 32 - #define XFS_AGI_MAGIC 0x58414749 /* 'XAGI' */ 33 - #define XFS_AGFL_MAGIC 0x5841464c /* 'XAFL' */ 34 - #define XFS_AGF_VERSION 1 35 - #define XFS_AGI_VERSION 1 36 - 37 - #define XFS_AGF_GOOD_VERSION(v) ((v) == XFS_AGF_VERSION) 38 - #define XFS_AGI_GOOD_VERSION(v) ((v) == XFS_AGI_VERSION) 39 - 40 - /* 41 - * Btree number 0 is bno, 1 is cnt. This value gives the size of the 42 - * arrays below. 43 - */ 44 - #define XFS_BTNUM_AGF ((int)XFS_BTNUM_CNTi + 1) 45 - 46 - /* 47 - * The second word of agf_levels in the first a.g. overlaps the EFS 48 - * superblock's magic number. Since the magic numbers valid for EFS 49 - * are > 64k, our value cannot be confused for an EFS superblock's. 50 - */ 51 - 52 - typedef struct xfs_agf { 53 - /* 54 - * Common allocation group header information 55 - */ 56 - __be32 agf_magicnum; /* magic number == XFS_AGF_MAGIC */ 57 - __be32 agf_versionnum; /* header version == XFS_AGF_VERSION */ 58 - __be32 agf_seqno; /* sequence # starting from 0 */ 59 - __be32 agf_length; /* size in blocks of a.g. */ 60 - /* 61 - * Freespace information 62 - */ 63 - __be32 agf_roots[XFS_BTNUM_AGF]; /* root blocks */ 64 - __be32 agf_spare0; /* spare field */ 65 - __be32 agf_levels[XFS_BTNUM_AGF]; /* btree levels */ 66 - __be32 agf_spare1; /* spare field */ 67 - 68 - __be32 agf_flfirst; /* first freelist block's index */ 69 - __be32 agf_fllast; /* last freelist block's index */ 70 - __be32 agf_flcount; /* count of blocks in freelist */ 71 - __be32 agf_freeblks; /* total free blocks */ 72 - 73 - __be32 agf_longest; /* longest free space */ 74 - __be32 agf_btreeblks; /* # of blocks held in AGF btrees */ 75 - uuid_t agf_uuid; /* uuid of filesystem */ 76 - 77 - /* 78 - * reserve some contiguous space for future logged fields before we add 79 - * the unlogged fields. This makes the range logging via flags and 80 - * structure offsets much simpler. 81 - */ 82 - __be64 agf_spare64[16]; 83 - 84 - /* unlogged fields, written during buffer writeback. */ 85 - __be64 agf_lsn; /* last write sequence */ 86 - __be32 agf_crc; /* crc of agf sector */ 87 - __be32 agf_spare2; 88 - 89 - /* structure must be padded to 64 bit alignment */ 90 - } xfs_agf_t; 91 - 92 - #define XFS_AGF_CRC_OFF offsetof(struct xfs_agf, agf_crc) 93 - 94 - #define XFS_AGF_MAGICNUM 0x00000001 95 - #define XFS_AGF_VERSIONNUM 0x00000002 96 - #define XFS_AGF_SEQNO 0x00000004 97 - #define XFS_AGF_LENGTH 0x00000008 98 - #define XFS_AGF_ROOTS 0x00000010 99 - #define XFS_AGF_LEVELS 0x00000020 100 - #define XFS_AGF_FLFIRST 0x00000040 101 - #define XFS_AGF_FLLAST 0x00000080 102 - #define XFS_AGF_FLCOUNT 0x00000100 103 - #define XFS_AGF_FREEBLKS 0x00000200 104 - #define XFS_AGF_LONGEST 0x00000400 105 - #define XFS_AGF_BTREEBLKS 0x00000800 106 - #define XFS_AGF_UUID 0x00001000 107 - #define XFS_AGF_NUM_BITS 13 108 - #define XFS_AGF_ALL_BITS ((1 << XFS_AGF_NUM_BITS) - 1) 109 - 110 - #define XFS_AGF_FLAGS \ 111 - { XFS_AGF_MAGICNUM, "MAGICNUM" }, \ 112 - { XFS_AGF_VERSIONNUM, "VERSIONNUM" }, \ 113 - { XFS_AGF_SEQNO, "SEQNO" }, \ 114 - { XFS_AGF_LENGTH, "LENGTH" }, \ 115 - { XFS_AGF_ROOTS, "ROOTS" }, \ 116 - { XFS_AGF_LEVELS, "LEVELS" }, \ 117 - { XFS_AGF_FLFIRST, "FLFIRST" }, \ 118 - { XFS_AGF_FLLAST, "FLLAST" }, \ 119 - { XFS_AGF_FLCOUNT, "FLCOUNT" }, \ 120 - { XFS_AGF_FREEBLKS, "FREEBLKS" }, \ 121 - { XFS_AGF_LONGEST, "LONGEST" }, \ 122 - { XFS_AGF_BTREEBLKS, "BTREEBLKS" }, \ 123 - { XFS_AGF_UUID, "UUID" } 124 - 125 - /* disk block (xfs_daddr_t) in the AG */ 126 - #define XFS_AGF_DADDR(mp) ((xfs_daddr_t)(1 << (mp)->m_sectbb_log)) 127 - #define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp)) 128 - #define XFS_BUF_TO_AGF(bp) ((xfs_agf_t *)((bp)->b_addr)) 129 - 130 - extern int xfs_read_agf(struct xfs_mount *mp, struct xfs_trans *tp, 131 - xfs_agnumber_t agno, int flags, struct xfs_buf **bpp); 132 - 133 - /* 134 - * Size of the unlinked inode hash table in the agi. 135 - */ 136 - #define XFS_AGI_UNLINKED_BUCKETS 64 137 - 138 - typedef struct xfs_agi { 139 - /* 140 - * Common allocation group header information 141 - */ 142 - __be32 agi_magicnum; /* magic number == XFS_AGI_MAGIC */ 143 - __be32 agi_versionnum; /* header version == XFS_AGI_VERSION */ 144 - __be32 agi_seqno; /* sequence # starting from 0 */ 145 - __be32 agi_length; /* size in blocks of a.g. */ 146 - /* 147 - * Inode information 148 - * Inodes are mapped by interpreting the inode number, so no 149 - * mapping data is needed here. 150 - */ 151 - __be32 agi_count; /* count of allocated inodes */ 152 - __be32 agi_root; /* root of inode btree */ 153 - __be32 agi_level; /* levels in inode btree */ 154 - __be32 agi_freecount; /* number of free inodes */ 155 - 156 - __be32 agi_newino; /* new inode just allocated */ 157 - __be32 agi_dirino; /* last directory inode chunk */ 158 - /* 159 - * Hash table of inodes which have been unlinked but are 160 - * still being referenced. 161 - */ 162 - __be32 agi_unlinked[XFS_AGI_UNLINKED_BUCKETS]; 163 - /* 164 - * This marks the end of logging region 1 and start of logging region 2. 165 - */ 166 - uuid_t agi_uuid; /* uuid of filesystem */ 167 - __be32 agi_crc; /* crc of agi sector */ 168 - __be32 agi_pad32; 169 - __be64 agi_lsn; /* last write sequence */ 170 - 171 - __be32 agi_free_root; /* root of the free inode btree */ 172 - __be32 agi_free_level;/* levels in free inode btree */ 173 - 174 - /* structure must be padded to 64 bit alignment */ 175 - } xfs_agi_t; 176 - 177 - #define XFS_AGI_CRC_OFF offsetof(struct xfs_agi, agi_crc) 178 - 179 - #define XFS_AGI_MAGICNUM (1 << 0) 180 - #define XFS_AGI_VERSIONNUM (1 << 1) 181 - #define XFS_AGI_SEQNO (1 << 2) 182 - #define XFS_AGI_LENGTH (1 << 3) 183 - #define XFS_AGI_COUNT (1 << 4) 184 - #define XFS_AGI_ROOT (1 << 5) 185 - #define XFS_AGI_LEVEL (1 << 6) 186 - #define XFS_AGI_FREECOUNT (1 << 7) 187 - #define XFS_AGI_NEWINO (1 << 8) 188 - #define XFS_AGI_DIRINO (1 << 9) 189 - #define XFS_AGI_UNLINKED (1 << 10) 190 - #define XFS_AGI_NUM_BITS_R1 11 /* end of the 1st agi logging region */ 191 - #define XFS_AGI_ALL_BITS_R1 ((1 << XFS_AGI_NUM_BITS_R1) - 1) 192 - #define XFS_AGI_FREE_ROOT (1 << 11) 193 - #define XFS_AGI_FREE_LEVEL (1 << 12) 194 - #define XFS_AGI_NUM_BITS_R2 13 195 - 196 - /* disk block (xfs_daddr_t) in the AG */ 197 - #define XFS_AGI_DADDR(mp) ((xfs_daddr_t)(2 << (mp)->m_sectbb_log)) 198 - #define XFS_AGI_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGI_DADDR(mp)) 199 - #define XFS_BUF_TO_AGI(bp) ((xfs_agi_t *)((bp)->b_addr)) 200 - 201 - extern int xfs_read_agi(struct xfs_mount *mp, struct xfs_trans *tp, 202 - xfs_agnumber_t agno, struct xfs_buf **bpp); 203 - 204 - /* 205 - * The third a.g. block contains the a.g. freelist, an array 206 - * of block pointers to blocks owned by the allocation btree code. 207 - */ 208 - #define XFS_AGFL_DADDR(mp) ((xfs_daddr_t)(3 << (mp)->m_sectbb_log)) 209 - #define XFS_AGFL_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGFL_DADDR(mp)) 210 - #define XFS_BUF_TO_AGFL(bp) ((xfs_agfl_t *)((bp)->b_addr)) 211 - 212 - #define XFS_BUF_TO_AGFL_BNO(mp, bp) \ 213 - (xfs_sb_version_hascrc(&((mp)->m_sb)) ? \ 214 - &(XFS_BUF_TO_AGFL(bp)->agfl_bno[0]) : \ 215 - (__be32 *)(bp)->b_addr) 216 - 217 - /* 218 - * Size of the AGFL. For CRC-enabled filesystes we steal a couple of 219 - * slots in the beginning of the block for a proper header with the 220 - * location information and CRC. 221 - */ 222 - #define XFS_AGFL_SIZE(mp) \ 223 - (((mp)->m_sb.sb_sectsize - \ 224 - (xfs_sb_version_hascrc(&((mp)->m_sb)) ? \ 225 - sizeof(struct xfs_agfl) : 0)) / \ 226 - sizeof(xfs_agblock_t)) 227 - 228 - typedef struct xfs_agfl { 229 - __be32 agfl_magicnum; 230 - __be32 agfl_seqno; 231 - uuid_t agfl_uuid; 232 - __be64 agfl_lsn; 233 - __be32 agfl_crc; 234 - __be32 agfl_bno[]; /* actually XFS_AGFL_SIZE(mp) */ 235 - } xfs_agfl_t; 236 - 237 - #define XFS_AGFL_CRC_OFF offsetof(struct xfs_agfl, agfl_crc) 238 - 239 - /* 240 - * tags for inode radix tree 241 - */ 242 - #define XFS_ICI_NO_TAG (-1) /* special flag for an untagged lookup 243 - in xfs_inode_ag_iterator */ 244 - #define XFS_ICI_RECLAIM_TAG 0 /* inode is to be reclaimed */ 245 - #define XFS_ICI_EOFBLOCKS_TAG 1 /* inode has blocks beyond EOF */ 246 - 247 - #define XFS_AG_MAXLEVELS(mp) ((mp)->m_ag_maxlevels) 248 - #define XFS_MIN_FREELIST_RAW(bl,cl,mp) \ 249 - (MIN(bl + 1, XFS_AG_MAXLEVELS(mp)) + MIN(cl + 1, XFS_AG_MAXLEVELS(mp))) 250 - #define XFS_MIN_FREELIST(a,mp) \ 251 - (XFS_MIN_FREELIST_RAW( \ 252 - be32_to_cpu((a)->agf_levels[XFS_BTNUM_BNOi]), \ 253 - be32_to_cpu((a)->agf_levels[XFS_BTNUM_CNTi]), mp)) 254 - #define XFS_MIN_FREELIST_PAG(pag,mp) \ 255 - (XFS_MIN_FREELIST_RAW( \ 256 - (unsigned int)(pag)->pagf_levels[XFS_BTNUM_BNOi], \ 257 - (unsigned int)(pag)->pagf_levels[XFS_BTNUM_CNTi], mp)) 258 - 259 - #define XFS_AGB_TO_FSB(mp,agno,agbno) \ 260 - (((xfs_fsblock_t)(agno) << (mp)->m_sb.sb_agblklog) | (agbno)) 261 - #define XFS_FSB_TO_AGNO(mp,fsbno) \ 262 - ((xfs_agnumber_t)((fsbno) >> (mp)->m_sb.sb_agblklog)) 263 - #define XFS_FSB_TO_AGBNO(mp,fsbno) \ 264 - ((xfs_agblock_t)((fsbno) & xfs_mask32lo((mp)->m_sb.sb_agblklog))) 265 - #define XFS_AGB_TO_DADDR(mp,agno,agbno) \ 266 - ((xfs_daddr_t)XFS_FSB_TO_BB(mp, \ 267 - (xfs_fsblock_t)(agno) * (mp)->m_sb.sb_agblocks + (agbno))) 268 - #define XFS_AG_DADDR(mp,agno,d) (XFS_AGB_TO_DADDR(mp, agno, 0) + (d)) 269 - 270 - /* 271 - * For checking for bad ranges of xfs_daddr_t's, covering multiple 272 - * allocation groups or a single xfs_daddr_t that's a superblock copy. 273 - */ 274 - #define XFS_AG_CHECK_DADDR(mp,d,len) \ 275 - ((len) == 1 ? \ 276 - ASSERT((d) == XFS_SB_DADDR || \ 277 - xfs_daddr_to_agbno(mp, d) != XFS_SB_DADDR) : \ 278 - ASSERT(xfs_daddr_to_agno(mp, d) == \ 279 - xfs_daddr_to_agno(mp, (d) + (len) - 1))) 280 - 281 - #endif /* __XFS_AG_H__ */
-1
fs/xfs/libxfs/xfs_alloc.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_btree.h"
+3
fs/xfs/libxfs/xfs_alloc.h
··· 231 231 xfs_extlen_t *len, /* output: length of extent */ 232 232 int *stat); /* output: success/failure */ 233 233 234 + int xfs_read_agf(struct xfs_mount *mp, struct xfs_trans *tp, 235 + xfs_agnumber_t agno, int flags, struct xfs_buf **bpp); 236 + 234 237 #endif /* __XFS_ALLOC_H__ */
-1
fs/xfs/libxfs/xfs_alloc_btree.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_btree.h" 28 27 #include "xfs_alloc_btree.h"
-1
fs/xfs/libxfs/xfs_attr.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_da_format.h" 29 28 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_attr_leaf.c
··· 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_bit.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_da_format.h" 30 29 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_attr_remote.c
··· 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_bit.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_da_format.h" 30 29 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_bmap.c
··· 24 24 #include "xfs_bit.h" 25 25 #include "xfs_inum.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_da_format.h" 30 29 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_bmap_btree.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_trans.h"
-1
fs/xfs/libxfs/xfs_btree.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_trans.h"
-1
fs/xfs/libxfs/xfs_da_btree.c
··· 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_bit.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_da_format.h" 30 29 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_da_format.c
··· 23 23 #include "xfs_log_format.h" 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_da_format.h" 29 28 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_dir2.c
··· 22 22 #include "xfs_trans_resv.h" 23 23 #include "xfs_inum.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h" 28 27 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_dir2_block.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h" 28 27 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_dir2_data.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h" 28 27 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_dir2_leaf.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h" 28 27 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_dir2_node.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h" 28 27 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_dir2_sf.c
··· 21 21 #include "xfs_log_format.h" 22 22 #include "xfs_trans_resv.h" 23 23 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 24 #include "xfs_mount.h" 26 25 #include "xfs_da_format.h" 27 26 #include "xfs_da_btree.h"
-1
fs/xfs/libxfs/xfs_dquot_buf.c
··· 23 23 #include "xfs_log_format.h" 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_quota.h"
+243
fs/xfs/libxfs/xfs_format.h
··· 33 33 struct xfs_buf; 34 34 struct xfs_ifork; 35 35 36 + /* 37 + * Allocation group header 38 + * 39 + * This is divided into three structures, placed in sequential 512-byte 40 + * buffers after a copy of the superblock (also in a 512-byte buffer). 41 + */ 42 + #define XFS_AGF_MAGIC 0x58414746 /* 'XAGF' */ 43 + #define XFS_AGI_MAGIC 0x58414749 /* 'XAGI' */ 44 + #define XFS_AGFL_MAGIC 0x5841464c /* 'XAFL' */ 45 + #define XFS_AGF_VERSION 1 46 + #define XFS_AGI_VERSION 1 47 + 48 + #define XFS_AGF_GOOD_VERSION(v) ((v) == XFS_AGF_VERSION) 49 + #define XFS_AGI_GOOD_VERSION(v) ((v) == XFS_AGI_VERSION) 50 + 51 + /* 52 + * Btree number 0 is bno, 1 is cnt. This value gives the size of the 53 + * arrays below. 54 + */ 55 + #define XFS_BTNUM_AGF ((int)XFS_BTNUM_CNTi + 1) 56 + 57 + /* 58 + * The second word of agf_levels in the first a.g. overlaps the EFS 59 + * superblock's magic number. Since the magic numbers valid for EFS 60 + * are > 64k, our value cannot be confused for an EFS superblock's. 61 + */ 62 + 63 + typedef struct xfs_agf { 64 + /* 65 + * Common allocation group header information 66 + */ 67 + __be32 agf_magicnum; /* magic number == XFS_AGF_MAGIC */ 68 + __be32 agf_versionnum; /* header version == XFS_AGF_VERSION */ 69 + __be32 agf_seqno; /* sequence # starting from 0 */ 70 + __be32 agf_length; /* size in blocks of a.g. */ 71 + /* 72 + * Freespace information 73 + */ 74 + __be32 agf_roots[XFS_BTNUM_AGF]; /* root blocks */ 75 + __be32 agf_spare0; /* spare field */ 76 + __be32 agf_levels[XFS_BTNUM_AGF]; /* btree levels */ 77 + __be32 agf_spare1; /* spare field */ 78 + 79 + __be32 agf_flfirst; /* first freelist block's index */ 80 + __be32 agf_fllast; /* last freelist block's index */ 81 + __be32 agf_flcount; /* count of blocks in freelist */ 82 + __be32 agf_freeblks; /* total free blocks */ 83 + 84 + __be32 agf_longest; /* longest free space */ 85 + __be32 agf_btreeblks; /* # of blocks held in AGF btrees */ 86 + uuid_t agf_uuid; /* uuid of filesystem */ 87 + 88 + /* 89 + * reserve some contiguous space for future logged fields before we add 90 + * the unlogged fields. This makes the range logging via flags and 91 + * structure offsets much simpler. 92 + */ 93 + __be64 agf_spare64[16]; 94 + 95 + /* unlogged fields, written during buffer writeback. */ 96 + __be64 agf_lsn; /* last write sequence */ 97 + __be32 agf_crc; /* crc of agf sector */ 98 + __be32 agf_spare2; 99 + 100 + /* structure must be padded to 64 bit alignment */ 101 + } xfs_agf_t; 102 + 103 + #define XFS_AGF_CRC_OFF offsetof(struct xfs_agf, agf_crc) 104 + 105 + #define XFS_AGF_MAGICNUM 0x00000001 106 + #define XFS_AGF_VERSIONNUM 0x00000002 107 + #define XFS_AGF_SEQNO 0x00000004 108 + #define XFS_AGF_LENGTH 0x00000008 109 + #define XFS_AGF_ROOTS 0x00000010 110 + #define XFS_AGF_LEVELS 0x00000020 111 + #define XFS_AGF_FLFIRST 0x00000040 112 + #define XFS_AGF_FLLAST 0x00000080 113 + #define XFS_AGF_FLCOUNT 0x00000100 114 + #define XFS_AGF_FREEBLKS 0x00000200 115 + #define XFS_AGF_LONGEST 0x00000400 116 + #define XFS_AGF_BTREEBLKS 0x00000800 117 + #define XFS_AGF_UUID 0x00001000 118 + #define XFS_AGF_NUM_BITS 13 119 + #define XFS_AGF_ALL_BITS ((1 << XFS_AGF_NUM_BITS) - 1) 120 + 121 + #define XFS_AGF_FLAGS \ 122 + { XFS_AGF_MAGICNUM, "MAGICNUM" }, \ 123 + { XFS_AGF_VERSIONNUM, "VERSIONNUM" }, \ 124 + { XFS_AGF_SEQNO, "SEQNO" }, \ 125 + { XFS_AGF_LENGTH, "LENGTH" }, \ 126 + { XFS_AGF_ROOTS, "ROOTS" }, \ 127 + { XFS_AGF_LEVELS, "LEVELS" }, \ 128 + { XFS_AGF_FLFIRST, "FLFIRST" }, \ 129 + { XFS_AGF_FLLAST, "FLLAST" }, \ 130 + { XFS_AGF_FLCOUNT, "FLCOUNT" }, \ 131 + { XFS_AGF_FREEBLKS, "FREEBLKS" }, \ 132 + { XFS_AGF_LONGEST, "LONGEST" }, \ 133 + { XFS_AGF_BTREEBLKS, "BTREEBLKS" }, \ 134 + { XFS_AGF_UUID, "UUID" } 135 + 136 + /* disk block (xfs_daddr_t) in the AG */ 137 + #define XFS_AGF_DADDR(mp) ((xfs_daddr_t)(1 << (mp)->m_sectbb_log)) 138 + #define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp)) 139 + #define XFS_BUF_TO_AGF(bp) ((xfs_agf_t *)((bp)->b_addr)) 140 + 141 + /* 142 + * Size of the unlinked inode hash table in the agi. 143 + */ 144 + #define XFS_AGI_UNLINKED_BUCKETS 64 145 + 146 + typedef struct xfs_agi { 147 + /* 148 + * Common allocation group header information 149 + */ 150 + __be32 agi_magicnum; /* magic number == XFS_AGI_MAGIC */ 151 + __be32 agi_versionnum; /* header version == XFS_AGI_VERSION */ 152 + __be32 agi_seqno; /* sequence # starting from 0 */ 153 + __be32 agi_length; /* size in blocks of a.g. */ 154 + /* 155 + * Inode information 156 + * Inodes are mapped by interpreting the inode number, so no 157 + * mapping data is needed here. 158 + */ 159 + __be32 agi_count; /* count of allocated inodes */ 160 + __be32 agi_root; /* root of inode btree */ 161 + __be32 agi_level; /* levels in inode btree */ 162 + __be32 agi_freecount; /* number of free inodes */ 163 + 164 + __be32 agi_newino; /* new inode just allocated */ 165 + __be32 agi_dirino; /* last directory inode chunk */ 166 + /* 167 + * Hash table of inodes which have been unlinked but are 168 + * still being referenced. 169 + */ 170 + __be32 agi_unlinked[XFS_AGI_UNLINKED_BUCKETS]; 171 + /* 172 + * This marks the end of logging region 1 and start of logging region 2. 173 + */ 174 + uuid_t agi_uuid; /* uuid of filesystem */ 175 + __be32 agi_crc; /* crc of agi sector */ 176 + __be32 agi_pad32; 177 + __be64 agi_lsn; /* last write sequence */ 178 + 179 + __be32 agi_free_root; /* root of the free inode btree */ 180 + __be32 agi_free_level;/* levels in free inode btree */ 181 + 182 + /* structure must be padded to 64 bit alignment */ 183 + } xfs_agi_t; 184 + 185 + #define XFS_AGI_CRC_OFF offsetof(struct xfs_agi, agi_crc) 186 + 187 + #define XFS_AGI_MAGICNUM (1 << 0) 188 + #define XFS_AGI_VERSIONNUM (1 << 1) 189 + #define XFS_AGI_SEQNO (1 << 2) 190 + #define XFS_AGI_LENGTH (1 << 3) 191 + #define XFS_AGI_COUNT (1 << 4) 192 + #define XFS_AGI_ROOT (1 << 5) 193 + #define XFS_AGI_LEVEL (1 << 6) 194 + #define XFS_AGI_FREECOUNT (1 << 7) 195 + #define XFS_AGI_NEWINO (1 << 8) 196 + #define XFS_AGI_DIRINO (1 << 9) 197 + #define XFS_AGI_UNLINKED (1 << 10) 198 + #define XFS_AGI_NUM_BITS_R1 11 /* end of the 1st agi logging region */ 199 + #define XFS_AGI_ALL_BITS_R1 ((1 << XFS_AGI_NUM_BITS_R1) - 1) 200 + #define XFS_AGI_FREE_ROOT (1 << 11) 201 + #define XFS_AGI_FREE_LEVEL (1 << 12) 202 + #define XFS_AGI_NUM_BITS_R2 13 203 + 204 + /* disk block (xfs_daddr_t) in the AG */ 205 + #define XFS_AGI_DADDR(mp) ((xfs_daddr_t)(2 << (mp)->m_sectbb_log)) 206 + #define XFS_AGI_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGI_DADDR(mp)) 207 + #define XFS_BUF_TO_AGI(bp) ((xfs_agi_t *)((bp)->b_addr)) 208 + 209 + /* 210 + * The third a.g. block contains the a.g. freelist, an array 211 + * of block pointers to blocks owned by the allocation btree code. 212 + */ 213 + #define XFS_AGFL_DADDR(mp) ((xfs_daddr_t)(3 << (mp)->m_sectbb_log)) 214 + #define XFS_AGFL_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGFL_DADDR(mp)) 215 + #define XFS_BUF_TO_AGFL(bp) ((xfs_agfl_t *)((bp)->b_addr)) 216 + 217 + #define XFS_BUF_TO_AGFL_BNO(mp, bp) \ 218 + (xfs_sb_version_hascrc(&((mp)->m_sb)) ? \ 219 + &(XFS_BUF_TO_AGFL(bp)->agfl_bno[0]) : \ 220 + (__be32 *)(bp)->b_addr) 221 + 222 + /* 223 + * Size of the AGFL. For CRC-enabled filesystes we steal a couple of 224 + * slots in the beginning of the block for a proper header with the 225 + * location information and CRC. 226 + */ 227 + #define XFS_AGFL_SIZE(mp) \ 228 + (((mp)->m_sb.sb_sectsize - \ 229 + (xfs_sb_version_hascrc(&((mp)->m_sb)) ? \ 230 + sizeof(struct xfs_agfl) : 0)) / \ 231 + sizeof(xfs_agblock_t)) 232 + 233 + typedef struct xfs_agfl { 234 + __be32 agfl_magicnum; 235 + __be32 agfl_seqno; 236 + uuid_t agfl_uuid; 237 + __be64 agfl_lsn; 238 + __be32 agfl_crc; 239 + __be32 agfl_bno[]; /* actually XFS_AGFL_SIZE(mp) */ 240 + } xfs_agfl_t; 241 + 242 + #define XFS_AGFL_CRC_OFF offsetof(struct xfs_agfl, agfl_crc) 243 + 244 + 245 + #define XFS_AG_MAXLEVELS(mp) ((mp)->m_ag_maxlevels) 246 + #define XFS_MIN_FREELIST_RAW(bl,cl,mp) \ 247 + (MIN(bl + 1, XFS_AG_MAXLEVELS(mp)) + MIN(cl + 1, XFS_AG_MAXLEVELS(mp))) 248 + #define XFS_MIN_FREELIST(a,mp) \ 249 + (XFS_MIN_FREELIST_RAW( \ 250 + be32_to_cpu((a)->agf_levels[XFS_BTNUM_BNOi]), \ 251 + be32_to_cpu((a)->agf_levels[XFS_BTNUM_CNTi]), mp)) 252 + #define XFS_MIN_FREELIST_PAG(pag,mp) \ 253 + (XFS_MIN_FREELIST_RAW( \ 254 + (unsigned int)(pag)->pagf_levels[XFS_BTNUM_BNOi], \ 255 + (unsigned int)(pag)->pagf_levels[XFS_BTNUM_CNTi], mp)) 256 + 257 + #define XFS_AGB_TO_FSB(mp,agno,agbno) \ 258 + (((xfs_fsblock_t)(agno) << (mp)->m_sb.sb_agblklog) | (agbno)) 259 + #define XFS_FSB_TO_AGNO(mp,fsbno) \ 260 + ((xfs_agnumber_t)((fsbno) >> (mp)->m_sb.sb_agblklog)) 261 + #define XFS_FSB_TO_AGBNO(mp,fsbno) \ 262 + ((xfs_agblock_t)((fsbno) & xfs_mask32lo((mp)->m_sb.sb_agblklog))) 263 + #define XFS_AGB_TO_DADDR(mp,agno,agbno) \ 264 + ((xfs_daddr_t)XFS_FSB_TO_BB(mp, \ 265 + (xfs_fsblock_t)(agno) * (mp)->m_sb.sb_agblocks + (agbno))) 266 + #define XFS_AG_DADDR(mp,agno,d) (XFS_AGB_TO_DADDR(mp, agno, 0) + (d)) 267 + 268 + /* 269 + * For checking for bad ranges of xfs_daddr_t's, covering multiple 270 + * allocation groups or a single xfs_daddr_t that's a superblock copy. 271 + */ 272 + #define XFS_AG_CHECK_DADDR(mp,d,len) \ 273 + ((len) == 1 ? \ 274 + ASSERT((d) == XFS_SB_DADDR || \ 275 + xfs_daddr_to_agbno(mp, d) != XFS_SB_DADDR) : \ 276 + ASSERT(xfs_daddr_to_agno(mp, d) == \ 277 + xfs_daddr_to_agno(mp, (d) + (len) - 1))) 278 + 36 279 typedef struct xfs_timestamp { 37 280 __be32 t_sec; /* timestamp seconds */ 38 281 __be32 t_nsec; /* timestamp nanoseconds */
-1
fs/xfs/libxfs/xfs_ialloc.c
··· 24 24 #include "xfs_bit.h" 25 25 #include "xfs_inum.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_inode.h" 30 29 #include "xfs_btree.h"
+4
fs/xfs/libxfs/xfs_ialloc.h
··· 160 160 xfs_agnumber_t agno, xfs_agblock_t agbno, 161 161 xfs_agblock_t length, unsigned int gen); 162 162 163 + int xfs_read_agi(struct xfs_mount *mp, struct xfs_trans *tp, 164 + xfs_agnumber_t agno, struct xfs_buf **bpp); 165 + 166 + 163 167 #endif /* __XFS_IALLOC_H__ */
-1
fs/xfs/libxfs/xfs_ialloc_btree.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_btree.h"
-1
fs/xfs/libxfs/xfs_inode_buf.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_inode.h" 28 27 #include "xfs_error.h"
-1
fs/xfs/libxfs/xfs_inode_fork.c
··· 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_inum.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_inode.h" 30 29 #include "xfs_trans.h"
-1
fs/xfs/libxfs/xfs_log_rlimit.c
··· 21 21 #include "xfs_format.h" 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 - #include "xfs_ag.h" 25 24 #include "xfs_sb.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h"
-1
fs/xfs/libxfs/xfs_rtbitmap.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_bmap.h"
-1
fs/xfs/libxfs/xfs_sb.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_ialloc.h"
-1
fs/xfs/libxfs/xfs_trans_resv.c
··· 23 23 #include "xfs_log_format.h" 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_da_format.h" 29 28 #include "xfs_da_btree.h"
-1
fs/xfs/xfs_acl.c
··· 19 19 #include "xfs_format.h" 20 20 #include "xfs_log_format.h" 21 21 #include "xfs_trans_resv.h" 22 - #include "xfs_ag.h" 23 22 #include "xfs_sb.h" 24 23 #include "xfs_mount.h" 25 24 #include "xfs_inode.h"
-1
fs/xfs/xfs_aops.c
··· 21 21 #include "xfs_log_format.h" 22 22 #include "xfs_trans_resv.h" 23 23 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 24 #include "xfs_mount.h" 26 25 #include "xfs_inode.h" 27 26 #include "xfs_trans.h"
-1
fs/xfs/xfs_attr_inactive.c
··· 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_bit.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_da_format.h" 30 29 #include "xfs_da_btree.h"
-1
fs/xfs/xfs_attr_list.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_da_format.h" 29 28 #include "xfs_da_btree.h"
-1
fs/xfs/xfs_bmap_util.c
··· 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_bit.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_da_format.h" 30 29 #include "xfs_inode.h"
+1 -1
fs/xfs/xfs_buf.c
··· 34 34 #include <linux/backing-dev.h> 35 35 #include <linux/freezer.h> 36 36 37 + #include "xfs_format.h" 37 38 #include "xfs_log_format.h" 38 39 #include "xfs_trans_resv.h" 39 40 #include "xfs_sb.h" 40 - #include "xfs_ag.h" 41 41 #include "xfs_mount.h" 42 42 #include "xfs_trace.h" 43 43 #include "xfs_log.h"
+1 -1
fs/xfs/xfs_buf_item.c
··· 17 17 */ 18 18 #include "xfs.h" 19 19 #include "xfs_fs.h" 20 + #include "xfs_format.h" 20 21 #include "xfs_log_format.h" 21 22 #include "xfs_trans_resv.h" 22 23 #include "xfs_bit.h" 23 24 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 25 #include "xfs_mount.h" 26 26 #include "xfs_trans.h" 27 27 #include "xfs_buf_item.h"
-1
fs/xfs/xfs_dir2_readdir.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_da_format.h" 29 28 #include "xfs_da_btree.h"
-1
fs/xfs/xfs_discard.c
··· 20 20 #include "xfs_log_format.h" 21 21 #include "xfs_trans_resv.h" 22 22 #include "xfs_sb.h" 23 - #include "xfs_ag.h" 24 23 #include "xfs_mount.h" 25 24 #include "xfs_quota.h" 26 25 #include "xfs_inode.h"
-1
fs/xfs/xfs_dquot.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_bmap.h"
-1
fs/xfs/xfs_dquot_item.c
··· 21 21 #include "xfs_log_format.h" 22 22 #include "xfs_trans_resv.h" 23 23 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 24 #include "xfs_mount.h" 26 25 #include "xfs_inode.h" 27 26 #include "xfs_quota.h"
-1
fs/xfs/xfs_error.c
··· 21 21 #include "xfs_log_format.h" 22 22 #include "xfs_trans_resv.h" 23 23 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 24 #include "xfs_mount.h" 26 25 #include "xfs_error.h" 27 26
-1
fs/xfs/xfs_export.c
··· 20 20 #include "xfs_log_format.h" 21 21 #include "xfs_trans_resv.h" 22 22 #include "xfs_sb.h" 23 - #include "xfs_ag.h" 24 23 #include "xfs_mount.h" 25 24 #include "xfs_da_format.h" 26 25 #include "xfs_dir2.h"
-1
fs/xfs/xfs_extent_busy.c
··· 24 24 #include "xfs_shared.h" 25 25 #include "xfs_trans_resv.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_alloc.h" 30 29 #include "xfs_extent_busy.h"
+1 -1
fs/xfs/xfs_extfree_item.c
··· 17 17 */ 18 18 #include "xfs.h" 19 19 #include "xfs_fs.h" 20 + #include "xfs_format.h" 20 21 #include "xfs_log_format.h" 21 22 #include "xfs_trans_resv.h" 22 23 #include "xfs_sb.h" 23 - #include "xfs_ag.h" 24 24 #include "xfs_mount.h" 25 25 #include "xfs_trans.h" 26 26 #include "xfs_trans_priv.h"
-1
fs/xfs/xfs_file.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h" 28 27 #include "xfs_da_btree.h"
-1
fs/xfs/xfs_filestream.c
··· 20 20 #include "xfs_format.h" 21 21 #include "xfs_log_format.h" 22 22 #include "xfs_trans_resv.h" 23 - #include "xfs_ag.h" 24 23 #include "xfs_sb.h" 25 24 #include "xfs_mount.h" 26 25 #include "xfs_inum.h"
-1
fs/xfs/xfs_fsops.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h" 28 27 #include "xfs_da_btree.h"
-1
fs/xfs/xfs_icache.c
··· 22 22 #include "xfs_trans_resv.h" 23 23 #include "xfs_inum.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_inode.h" 28 27 #include "xfs_error.h"
+8
fs/xfs/xfs_icache.h
··· 34 34 #define SYNC_TRYLOCK 0x0002 /* only try to lock inodes */ 35 35 36 36 /* 37 + * tags for inode radix tree 38 + */ 39 + #define XFS_ICI_NO_TAG (-1) /* special flag for an untagged lookup 40 + in xfs_inode_ag_iterator */ 41 + #define XFS_ICI_RECLAIM_TAG 0 /* inode is to be reclaimed */ 42 + #define XFS_ICI_EOFBLOCKS_TAG 1 /* inode has blocks beyond EOF */ 43 + 44 + /* 37 45 * Flags for xfs_iget() 38 46 */ 39 47 #define XFS_IGET_CREATE 0x1
+1 -1
fs/xfs/xfs_icreate_item.c
··· 18 18 #include "xfs.h" 19 19 #include "xfs_fs.h" 20 20 #include "xfs_shared.h" 21 + #include "xfs_format.h" 21 22 #include "xfs_log_format.h" 22 23 #include "xfs_trans_resv.h" 23 24 #include "xfs_bit.h" 24 25 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 26 #include "xfs_mount.h" 27 27 #include "xfs_trans.h" 28 28 #include "xfs_trans_priv.h"
-1
fs/xfs/xfs_inode.c
··· 25 25 #include "xfs_trans_resv.h" 26 26 #include "xfs_inum.h" 27 27 #include "xfs_sb.h" 28 - #include "xfs_ag.h" 29 28 #include "xfs_mount.h" 30 29 #include "xfs_inode.h" 31 30 #include "xfs_da_format.h"
-1
fs/xfs/xfs_inode_item.c
··· 21 21 #include "xfs_log_format.h" 22 22 #include "xfs_trans_resv.h" 23 23 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 24 #include "xfs_mount.h" 26 25 #include "xfs_inode.h" 27 26 #include "xfs_trans.h"
-1
fs/xfs/xfs_ioctl.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_inode.h" 28 27 #include "xfs_ioctl.h"
-1
fs/xfs/xfs_ioctl32.c
··· 26 26 #include "xfs_log_format.h" 27 27 #include "xfs_trans_resv.h" 28 28 #include "xfs_sb.h" 29 - #include "xfs_ag.h" 30 29 #include "xfs_mount.h" 31 30 #include "xfs_inode.h" 32 31 #include "xfs_itable.h"
-1
fs/xfs/xfs_iomap.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_inode.h" 28 27 #include "xfs_btree.h"
-1
fs/xfs/xfs_iops.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h" 28 27 #include "xfs_inode.h"
-1
fs/xfs/xfs_itable.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_inum.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_btree.h"
-1
fs/xfs/xfs_log.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_error.h" 28 27 #include "xfs_trans.h"
+1 -1
fs/xfs/xfs_log_cil.c
··· 17 17 18 18 #include "xfs.h" 19 19 #include "xfs_fs.h" 20 + #include "xfs_format.h" 20 21 #include "xfs_log_format.h" 21 22 #include "xfs_shared.h" 22 23 #include "xfs_trans_resv.h" 23 24 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 25 #include "xfs_mount.h" 26 26 #include "xfs_error.h" 27 27 #include "xfs_alloc.h"
-1
fs/xfs/xfs_log_recover.c
··· 24 24 #include "xfs_bit.h" 25 25 #include "xfs_inum.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_da_format.h" 30 29 #include "xfs_inode.h"
+1 -1
fs/xfs/xfs_message.c
··· 17 17 18 18 #include "xfs.h" 19 19 #include "xfs_fs.h" 20 + #include "xfs_format.h" 20 21 #include "xfs_log_format.h" 21 22 #include "xfs_trans_resv.h" 22 23 #include "xfs_sb.h" 23 - #include "xfs_ag.h" 24 24 #include "xfs_mount.h" 25 25 26 26 /*
-1
fs/xfs/xfs_mount.c
··· 24 24 #include "xfs_bit.h" 25 25 #include "xfs_inum.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_da_format.h" 30 29 #include "xfs_inode.h"
+1 -4
fs/xfs/xfs_mount.h
··· 320 320 321 321 /* 322 322 * Per-ag incore structure, copies of information in agf and agi, to improve the 323 - * performance of allocation group selection. This is defined for the kernel 324 - * only, and hence is defined here instead of in xfs_ag.h. You need the struct 325 - * xfs_mount to be defined to look up a xfs_perag anyway (via mp->m_perag_tree), 326 - * so this doesn't introduce any strange header file dependencies. 323 + * performance of allocation group selection. 327 324 */ 328 325 typedef struct xfs_perag { 329 326 struct xfs_mount *pag_mount; /* owner filesystem */
-1
fs/xfs/xfs_qm.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_ialloc.h"
-1
fs/xfs/xfs_qm_bhv.c
··· 21 21 #include "xfs_log_format.h" 22 22 #include "xfs_trans_resv.h" 23 23 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 24 #include "xfs_quota.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_inode.h"
-1
fs/xfs/xfs_qm_syscalls.c
··· 26 26 #include "xfs_trans_resv.h" 27 27 #include "xfs_bit.h" 28 28 #include "xfs_sb.h" 29 - #include "xfs_ag.h" 30 29 #include "xfs_mount.h" 31 30 #include "xfs_inode.h" 32 31 #include "xfs_trans.h"
-1
fs/xfs/xfs_quotaops.c
··· 20 20 #include "xfs_log_format.h" 21 21 #include "xfs_trans_resv.h" 22 22 #include "xfs_sb.h" 23 - #include "xfs_ag.h" 24 23 #include "xfs_mount.h" 25 24 #include "xfs_inode.h" 26 25 #include "xfs_quota.h"
-1
fs/xfs/xfs_rtalloc.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_bit.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_bmap.h"
-1
fs/xfs/xfs_super.c
··· 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_inum.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_da_format.h" 29 28 #include "xfs_inode.h"
-1
fs/xfs/xfs_symlink.c
··· 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_bit.h" 26 26 #include "xfs_sb.h" 27 - #include "xfs_ag.h" 28 27 #include "xfs_mount.h" 29 28 #include "xfs_da_format.h" 30 29 #include "xfs_da_btree.h"
-1
fs/xfs/xfs_trace.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_da_format.h" 28 27 #include "xfs_inode.h"
-1
fs/xfs/xfs_trans.c
··· 23 23 #include "xfs_log_format.h" 24 24 #include "xfs_trans_resv.h" 25 25 #include "xfs_sb.h" 26 - #include "xfs_ag.h" 27 26 #include "xfs_mount.h" 28 27 #include "xfs_inode.h" 29 28 #include "xfs_extent_busy.h"
+1 -1
fs/xfs/xfs_trans_ail.c
··· 18 18 */ 19 19 #include "xfs.h" 20 20 #include "xfs_fs.h" 21 + #include "xfs_format.h" 21 22 #include "xfs_log_format.h" 22 23 #include "xfs_trans_resv.h" 23 24 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 25 #include "xfs_mount.h" 26 26 #include "xfs_trans.h" 27 27 #include "xfs_trans_priv.h"
-1
fs/xfs/xfs_trans_buf.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_inode.h" 28 27 #include "xfs_trans.h"
-1
fs/xfs/xfs_trans_dquot.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_inode.h" 28 27 #include "xfs_error.h"
+1 -1
fs/xfs/xfs_trans_extfree.c
··· 18 18 #include "xfs.h" 19 19 #include "xfs_fs.h" 20 20 #include "xfs_shared.h" 21 + #include "xfs_format.h" 21 22 #include "xfs_log_format.h" 22 23 #include "xfs_trans_resv.h" 23 24 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 25 #include "xfs_mount.h" 26 26 #include "xfs_trans.h" 27 27 #include "xfs_trans_priv.h"
-1
fs/xfs/xfs_trans_inode.c
··· 22 22 #include "xfs_log_format.h" 23 23 #include "xfs_trans_resv.h" 24 24 #include "xfs_sb.h" 25 - #include "xfs_ag.h" 26 25 #include "xfs_mount.h" 27 26 #include "xfs_inode.h" 28 27 #include "xfs_trans.h"
-1
fs/xfs/xfs_xattr.c
··· 21 21 #include "xfs_log_format.h" 22 22 #include "xfs_trans_resv.h" 23 23 #include "xfs_sb.h" 24 - #include "xfs_ag.h" 25 24 #include "xfs_mount.h" 26 25 #include "xfs_da_format.h" 27 26 #include "xfs_inode.h"