diff options
Diffstat (limited to 'fs')
56 files changed, 579 insertions, 638 deletions
diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c index f782d3617d2f..0a472fbe06d4 100644 --- a/fs/xfs/libxfs/xfs_attr.c +++ b/fs/xfs/libxfs/xfs_attr.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_da_format.h" | 26 | #include "xfs_da_format.h" |
28 | #include "xfs_da_btree.h" | 27 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_attr_remote.c b/fs/xfs/libxfs/xfs_attr_remote.c index 4edd4a84abe9..20de88d1bf86 100644 --- a/fs/xfs/libxfs/xfs_attr_remote.c +++ b/fs/xfs/libxfs/xfs_attr_remote.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_bit.h" | 25 | #include "xfs_bit.h" |
26 | #include "xfs_sb.h" | ||
27 | #include "xfs_mount.h" | 26 | #include "xfs_mount.h" |
28 | #include "xfs_da_format.h" | 27 | #include "xfs_da_format.h" |
29 | #include "xfs_da_btree.h" | 28 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_bmap_btree.c b/fs/xfs/libxfs/xfs_bmap_btree.c index 91588a54a677..2c44c8e50782 100644 --- a/fs/xfs/libxfs/xfs_bmap_btree.c +++ b/fs/xfs/libxfs/xfs_bmap_btree.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
28 | #include "xfs_trans.h" | 27 | #include "xfs_trans.h" |
diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c index 256d53245c42..81cad433df85 100644 --- a/fs/xfs/libxfs/xfs_btree.c +++ b/fs/xfs/libxfs/xfs_btree.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
28 | #include "xfs_trans.h" | 27 | #include "xfs_trans.h" |
diff --git a/fs/xfs/libxfs/xfs_da_btree.c b/fs/xfs/libxfs/xfs_da_btree.c index 2b880617135c..c41e7513849e 100644 --- a/fs/xfs/libxfs/xfs_da_btree.c +++ b/fs/xfs/libxfs/xfs_da_btree.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_bit.h" | 25 | #include "xfs_bit.h" |
26 | #include "xfs_sb.h" | ||
27 | #include "xfs_mount.h" | 26 | #include "xfs_mount.h" |
28 | #include "xfs_da_format.h" | 27 | #include "xfs_da_format.h" |
29 | #include "xfs_da_btree.h" | 28 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_da_format.c b/fs/xfs/libxfs/xfs_da_format.c index 927e9eb6d999..9d624a622946 100644 --- a/fs/xfs/libxfs/xfs_da_format.c +++ b/fs/xfs/libxfs/xfs_da_format.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_format.h" | 22 | #include "xfs_format.h" |
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_da_format.h" | 26 | #include "xfs_da_format.h" |
28 | #include "xfs_da_btree.h" | 27 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c index 672a29e626cc..5d892911158b 100644 --- a/fs/xfs/libxfs/xfs_dir2.c +++ b/fs/xfs/libxfs/xfs_dir2.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_inum.h" | 23 | #include "xfs_inum.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_da_format.h" | 25 | #include "xfs_da_format.h" |
27 | #include "xfs_da_btree.h" | 26 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_dir2_block.c b/fs/xfs/libxfs/xfs_dir2_block.c index a6b3a6a60e89..c2e34c54b706 100644 --- a/fs/xfs/libxfs/xfs_dir2_block.c +++ b/fs/xfs/libxfs/xfs_dir2_block.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_da_format.h" | 25 | #include "xfs_da_format.h" |
27 | #include "xfs_da_btree.h" | 26 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_dir2_data.c b/fs/xfs/libxfs/xfs_dir2_data.c index 2c8f463c54ed..5ff31be9b1cd 100644 --- a/fs/xfs/libxfs/xfs_dir2_data.c +++ b/fs/xfs/libxfs/xfs_dir2_data.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_da_format.h" | 25 | #include "xfs_da_format.h" |
27 | #include "xfs_da_btree.h" | 26 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_dir2_leaf.c b/fs/xfs/libxfs/xfs_dir2_leaf.c index 777c48208528..ed41a0e0da63 100644 --- a/fs/xfs/libxfs/xfs_dir2_leaf.c +++ b/fs/xfs/libxfs/xfs_dir2_leaf.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_da_format.h" | 25 | #include "xfs_da_format.h" |
27 | #include "xfs_da_btree.h" | 26 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_dir2_node.c b/fs/xfs/libxfs/xfs_dir2_node.c index c0a0e194fbf7..78ceda1bcd34 100644 --- a/fs/xfs/libxfs/xfs_dir2_node.c +++ b/fs/xfs/libxfs/xfs_dir2_node.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_da_format.h" | 25 | #include "xfs_da_format.h" |
27 | #include "xfs_da_btree.h" | 26 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_dir2_sf.c b/fs/xfs/libxfs/xfs_dir2_sf.c index ab99dbc00988..2baedc40591f 100644 --- a/fs/xfs/libxfs/xfs_dir2_sf.c +++ b/fs/xfs/libxfs/xfs_dir2_sf.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "xfs_format.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_mount.h" | 23 | #include "xfs_mount.h" |
25 | #include "xfs_da_format.h" | 24 | #include "xfs_da_format.h" |
26 | #include "xfs_da_btree.h" | 25 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_dquot_buf.c b/fs/xfs/libxfs/xfs_dquot_buf.c index cd6892667ba1..6fbf2d853a54 100644 --- a/fs/xfs/libxfs/xfs_dquot_buf.c +++ b/fs/xfs/libxfs/xfs_dquot_buf.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_format.h" | 22 | #include "xfs_format.h" |
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
28 | #include "xfs_quota.h" | 27 | #include "xfs_quota.h" |
diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h index 9b6e4247ca28..70ca740f34ac 100644 --- a/fs/xfs/libxfs/xfs_format.h +++ b/fs/xfs/libxfs/xfs_format.h | |||
@@ -34,6 +34,585 @@ struct xfs_buf; | |||
34 | struct xfs_ifork; | 34 | struct xfs_ifork; |
35 | 35 | ||
36 | /* | 36 | /* |
37 | * Super block | ||
38 | * Fits into a sector-sized buffer at address 0 of each allocation group. | ||
39 | * Only the first of these is ever updated except during growfs. | ||
40 | */ | ||
41 | #define XFS_SB_MAGIC 0x58465342 /* 'XFSB' */ | ||
42 | #define XFS_SB_VERSION_1 1 /* 5.3, 6.0.1, 6.1 */ | ||
43 | #define XFS_SB_VERSION_2 2 /* 6.2 - attributes */ | ||
44 | #define XFS_SB_VERSION_3 3 /* 6.2 - new inode version */ | ||
45 | #define XFS_SB_VERSION_4 4 /* 6.2+ - bitmask version */ | ||
46 | #define XFS_SB_VERSION_5 5 /* CRC enabled filesystem */ | ||
47 | #define XFS_SB_VERSION_NUMBITS 0x000f | ||
48 | #define XFS_SB_VERSION_ALLFBITS 0xfff0 | ||
49 | #define XFS_SB_VERSION_ATTRBIT 0x0010 | ||
50 | #define XFS_SB_VERSION_NLINKBIT 0x0020 | ||
51 | #define XFS_SB_VERSION_QUOTABIT 0x0040 | ||
52 | #define XFS_SB_VERSION_ALIGNBIT 0x0080 | ||
53 | #define XFS_SB_VERSION_DALIGNBIT 0x0100 | ||
54 | #define XFS_SB_VERSION_SHAREDBIT 0x0200 | ||
55 | #define XFS_SB_VERSION_LOGV2BIT 0x0400 | ||
56 | #define XFS_SB_VERSION_SECTORBIT 0x0800 | ||
57 | #define XFS_SB_VERSION_EXTFLGBIT 0x1000 | ||
58 | #define XFS_SB_VERSION_DIRV2BIT 0x2000 | ||
59 | #define XFS_SB_VERSION_BORGBIT 0x4000 /* ASCII only case-insens. */ | ||
60 | #define XFS_SB_VERSION_MOREBITSBIT 0x8000 | ||
61 | |||
62 | /* | ||
63 | * Supported feature bit list is just all bits in the versionnum field because | ||
64 | * we've used them all up and understand them all. Except, of course, for the | ||
65 | * shared superblock bit, which nobody knows what it does and so is unsupported. | ||
66 | */ | ||
67 | #define XFS_SB_VERSION_OKBITS \ | ||
68 | ((XFS_SB_VERSION_NUMBITS | XFS_SB_VERSION_ALLFBITS) & \ | ||
69 | ~XFS_SB_VERSION_SHAREDBIT) | ||
70 | |||
71 | /* | ||
72 | * There are two words to hold XFS "feature" bits: the original | ||
73 | * word, sb_versionnum, and sb_features2. Whenever a bit is set in | ||
74 | * sb_features2, the feature bit XFS_SB_VERSION_MOREBITSBIT must be set. | ||
75 | * | ||
76 | * These defines represent bits in sb_features2. | ||
77 | */ | ||
78 | #define XFS_SB_VERSION2_RESERVED1BIT 0x00000001 | ||
79 | #define XFS_SB_VERSION2_LAZYSBCOUNTBIT 0x00000002 /* Superblk counters */ | ||
80 | #define XFS_SB_VERSION2_RESERVED4BIT 0x00000004 | ||
81 | #define XFS_SB_VERSION2_ATTR2BIT 0x00000008 /* Inline attr rework */ | ||
82 | #define XFS_SB_VERSION2_PARENTBIT 0x00000010 /* parent pointers */ | ||
83 | #define XFS_SB_VERSION2_PROJID32BIT 0x00000080 /* 32 bit project id */ | ||
84 | #define XFS_SB_VERSION2_CRCBIT 0x00000100 /* metadata CRCs */ | ||
85 | #define XFS_SB_VERSION2_FTYPE 0x00000200 /* inode type in dir */ | ||
86 | |||
87 | #define XFS_SB_VERSION2_OKBITS \ | ||
88 | (XFS_SB_VERSION2_LAZYSBCOUNTBIT | \ | ||
89 | XFS_SB_VERSION2_ATTR2BIT | \ | ||
90 | XFS_SB_VERSION2_PROJID32BIT | \ | ||
91 | XFS_SB_VERSION2_FTYPE) | ||
92 | |||
93 | /* | ||
94 | * Superblock - in core version. Must match the ondisk version below. | ||
95 | * Must be padded to 64 bit alignment. | ||
96 | */ | ||
97 | typedef struct xfs_sb { | ||
98 | __uint32_t sb_magicnum; /* magic number == XFS_SB_MAGIC */ | ||
99 | __uint32_t sb_blocksize; /* logical block size, bytes */ | ||
100 | xfs_rfsblock_t sb_dblocks; /* number of data blocks */ | ||
101 | xfs_rfsblock_t sb_rblocks; /* number of realtime blocks */ | ||
102 | xfs_rtblock_t sb_rextents; /* number of realtime extents */ | ||
103 | uuid_t sb_uuid; /* file system unique id */ | ||
104 | xfs_fsblock_t sb_logstart; /* starting block of log if internal */ | ||
105 | xfs_ino_t sb_rootino; /* root inode number */ | ||
106 | xfs_ino_t sb_rbmino; /* bitmap inode for realtime extents */ | ||
107 | xfs_ino_t sb_rsumino; /* summary inode for rt bitmap */ | ||
108 | xfs_agblock_t sb_rextsize; /* realtime extent size, blocks */ | ||
109 | xfs_agblock_t sb_agblocks; /* size of an allocation group */ | ||
110 | xfs_agnumber_t sb_agcount; /* number of allocation groups */ | ||
111 | xfs_extlen_t sb_rbmblocks; /* number of rt bitmap blocks */ | ||
112 | xfs_extlen_t sb_logblocks; /* number of log blocks */ | ||
113 | __uint16_t sb_versionnum; /* header version == XFS_SB_VERSION */ | ||
114 | __uint16_t sb_sectsize; /* volume sector size, bytes */ | ||
115 | __uint16_t sb_inodesize; /* inode size, bytes */ | ||
116 | __uint16_t sb_inopblock; /* inodes per block */ | ||
117 | char sb_fname[12]; /* file system name */ | ||
118 | __uint8_t sb_blocklog; /* log2 of sb_blocksize */ | ||
119 | __uint8_t sb_sectlog; /* log2 of sb_sectsize */ | ||
120 | __uint8_t sb_inodelog; /* log2 of sb_inodesize */ | ||
121 | __uint8_t sb_inopblog; /* log2 of sb_inopblock */ | ||
122 | __uint8_t sb_agblklog; /* log2 of sb_agblocks (rounded up) */ | ||
123 | __uint8_t sb_rextslog; /* log2 of sb_rextents */ | ||
124 | __uint8_t sb_inprogress; /* mkfs is in progress, don't mount */ | ||
125 | __uint8_t sb_imax_pct; /* max % of fs for inode space */ | ||
126 | /* statistics */ | ||
127 | /* | ||
128 | * These fields must remain contiguous. If you really | ||
129 | * want to change their layout, make sure you fix the | ||
130 | * code in xfs_trans_apply_sb_deltas(). | ||
131 | */ | ||
132 | __uint64_t sb_icount; /* allocated inodes */ | ||
133 | __uint64_t sb_ifree; /* free inodes */ | ||
134 | __uint64_t sb_fdblocks; /* free data blocks */ | ||
135 | __uint64_t sb_frextents; /* free realtime extents */ | ||
136 | /* | ||
137 | * End contiguous fields. | ||
138 | */ | ||
139 | xfs_ino_t sb_uquotino; /* user quota inode */ | ||
140 | xfs_ino_t sb_gquotino; /* group quota inode */ | ||
141 | __uint16_t sb_qflags; /* quota flags */ | ||
142 | __uint8_t sb_flags; /* misc. flags */ | ||
143 | __uint8_t sb_shared_vn; /* shared version number */ | ||
144 | xfs_extlen_t sb_inoalignmt; /* inode chunk alignment, fsblocks */ | ||
145 | __uint32_t sb_unit; /* stripe or raid unit */ | ||
146 | __uint32_t sb_width; /* stripe or raid width */ | ||
147 | __uint8_t sb_dirblklog; /* log2 of dir block size (fsbs) */ | ||
148 | __uint8_t sb_logsectlog; /* log2 of the log sector size */ | ||
149 | __uint16_t sb_logsectsize; /* sector size for the log, bytes */ | ||
150 | __uint32_t sb_logsunit; /* stripe unit size for the log */ | ||
151 | __uint32_t sb_features2; /* additional feature bits */ | ||
152 | |||
153 | /* | ||
154 | * bad features2 field as a result of failing to pad the sb | ||
155 | * structure to 64 bits. Some machines will be using this field | ||
156 | * for features2 bits. Easiest just to mark it bad and not use | ||
157 | * it for anything else. | ||
158 | */ | ||
159 | __uint32_t sb_bad_features2; | ||
160 | |||
161 | /* version 5 superblock fields start here */ | ||
162 | |||
163 | /* feature masks */ | ||
164 | __uint32_t sb_features_compat; | ||
165 | __uint32_t sb_features_ro_compat; | ||
166 | __uint32_t sb_features_incompat; | ||
167 | __uint32_t sb_features_log_incompat; | ||
168 | |||
169 | __uint32_t sb_crc; /* superblock crc */ | ||
170 | __uint32_t sb_pad; | ||
171 | |||
172 | xfs_ino_t sb_pquotino; /* project quota inode */ | ||
173 | xfs_lsn_t sb_lsn; /* last write sequence */ | ||
174 | |||
175 | /* must be padded to 64 bit alignment */ | ||
176 | } xfs_sb_t; | ||
177 | |||
178 | #define XFS_SB_CRC_OFF offsetof(struct xfs_sb, sb_crc) | ||
179 | |||
180 | /* | ||
181 | * Superblock - on disk version. Must match the in core version above. | ||
182 | * Must be padded to 64 bit alignment. | ||
183 | */ | ||
184 | typedef struct xfs_dsb { | ||
185 | __be32 sb_magicnum; /* magic number == XFS_SB_MAGIC */ | ||
186 | __be32 sb_blocksize; /* logical block size, bytes */ | ||
187 | __be64 sb_dblocks; /* number of data blocks */ | ||
188 | __be64 sb_rblocks; /* number of realtime blocks */ | ||
189 | __be64 sb_rextents; /* number of realtime extents */ | ||
190 | uuid_t sb_uuid; /* file system unique id */ | ||
191 | __be64 sb_logstart; /* starting block of log if internal */ | ||
192 | __be64 sb_rootino; /* root inode number */ | ||
193 | __be64 sb_rbmino; /* bitmap inode for realtime extents */ | ||
194 | __be64 sb_rsumino; /* summary inode for rt bitmap */ | ||
195 | __be32 sb_rextsize; /* realtime extent size, blocks */ | ||
196 | __be32 sb_agblocks; /* size of an allocation group */ | ||
197 | __be32 sb_agcount; /* number of allocation groups */ | ||
198 | __be32 sb_rbmblocks; /* number of rt bitmap blocks */ | ||
199 | __be32 sb_logblocks; /* number of log blocks */ | ||
200 | __be16 sb_versionnum; /* header version == XFS_SB_VERSION */ | ||
201 | __be16 sb_sectsize; /* volume sector size, bytes */ | ||
202 | __be16 sb_inodesize; /* inode size, bytes */ | ||
203 | __be16 sb_inopblock; /* inodes per block */ | ||
204 | char sb_fname[12]; /* file system name */ | ||
205 | __u8 sb_blocklog; /* log2 of sb_blocksize */ | ||
206 | __u8 sb_sectlog; /* log2 of sb_sectsize */ | ||
207 | __u8 sb_inodelog; /* log2 of sb_inodesize */ | ||
208 | __u8 sb_inopblog; /* log2 of sb_inopblock */ | ||
209 | __u8 sb_agblklog; /* log2 of sb_agblocks (rounded up) */ | ||
210 | __u8 sb_rextslog; /* log2 of sb_rextents */ | ||
211 | __u8 sb_inprogress; /* mkfs is in progress, don't mount */ | ||
212 | __u8 sb_imax_pct; /* max % of fs for inode space */ | ||
213 | /* statistics */ | ||
214 | /* | ||
215 | * These fields must remain contiguous. If you really | ||
216 | * want to change their layout, make sure you fix the | ||
217 | * code in xfs_trans_apply_sb_deltas(). | ||
218 | */ | ||
219 | __be64 sb_icount; /* allocated inodes */ | ||
220 | __be64 sb_ifree; /* free inodes */ | ||
221 | __be64 sb_fdblocks; /* free data blocks */ | ||
222 | __be64 sb_frextents; /* free realtime extents */ | ||
223 | /* | ||
224 | * End contiguous fields. | ||
225 | */ | ||
226 | __be64 sb_uquotino; /* user quota inode */ | ||
227 | __be64 sb_gquotino; /* group quota inode */ | ||
228 | __be16 sb_qflags; /* quota flags */ | ||
229 | __u8 sb_flags; /* misc. flags */ | ||
230 | __u8 sb_shared_vn; /* shared version number */ | ||
231 | __be32 sb_inoalignmt; /* inode chunk alignment, fsblocks */ | ||
232 | __be32 sb_unit; /* stripe or raid unit */ | ||
233 | __be32 sb_width; /* stripe or raid width */ | ||
234 | __u8 sb_dirblklog; /* log2 of dir block size (fsbs) */ | ||
235 | __u8 sb_logsectlog; /* log2 of the log sector size */ | ||
236 | __be16 sb_logsectsize; /* sector size for the log, bytes */ | ||
237 | __be32 sb_logsunit; /* stripe unit size for the log */ | ||
238 | __be32 sb_features2; /* additional feature bits */ | ||
239 | /* | ||
240 | * bad features2 field as a result of failing to pad the sb | ||
241 | * structure to 64 bits. Some machines will be using this field | ||
242 | * for features2 bits. Easiest just to mark it bad and not use | ||
243 | * it for anything else. | ||
244 | */ | ||
245 | __be32 sb_bad_features2; | ||
246 | |||
247 | /* version 5 superblock fields start here */ | ||
248 | |||
249 | /* feature masks */ | ||
250 | __be32 sb_features_compat; | ||
251 | __be32 sb_features_ro_compat; | ||
252 | __be32 sb_features_incompat; | ||
253 | __be32 sb_features_log_incompat; | ||
254 | |||
255 | __le32 sb_crc; /* superblock crc */ | ||
256 | __be32 sb_pad; | ||
257 | |||
258 | __be64 sb_pquotino; /* project quota inode */ | ||
259 | __be64 sb_lsn; /* last write sequence */ | ||
260 | |||
261 | /* must be padded to 64 bit alignment */ | ||
262 | } xfs_dsb_t; | ||
263 | |||
264 | /* | ||
265 | * Sequence number values for the fields. | ||
266 | */ | ||
267 | typedef enum { | ||
268 | XFS_SBS_MAGICNUM, XFS_SBS_BLOCKSIZE, XFS_SBS_DBLOCKS, XFS_SBS_RBLOCKS, | ||
269 | XFS_SBS_REXTENTS, XFS_SBS_UUID, XFS_SBS_LOGSTART, XFS_SBS_ROOTINO, | ||
270 | XFS_SBS_RBMINO, XFS_SBS_RSUMINO, XFS_SBS_REXTSIZE, XFS_SBS_AGBLOCKS, | ||
271 | XFS_SBS_AGCOUNT, XFS_SBS_RBMBLOCKS, XFS_SBS_LOGBLOCKS, | ||
272 | XFS_SBS_VERSIONNUM, XFS_SBS_SECTSIZE, XFS_SBS_INODESIZE, | ||
273 | XFS_SBS_INOPBLOCK, XFS_SBS_FNAME, XFS_SBS_BLOCKLOG, | ||
274 | XFS_SBS_SECTLOG, XFS_SBS_INODELOG, XFS_SBS_INOPBLOG, XFS_SBS_AGBLKLOG, | ||
275 | XFS_SBS_REXTSLOG, XFS_SBS_INPROGRESS, XFS_SBS_IMAX_PCT, XFS_SBS_ICOUNT, | ||
276 | XFS_SBS_IFREE, XFS_SBS_FDBLOCKS, XFS_SBS_FREXTENTS, XFS_SBS_UQUOTINO, | ||
277 | XFS_SBS_GQUOTINO, XFS_SBS_QFLAGS, XFS_SBS_FLAGS, XFS_SBS_SHARED_VN, | ||
278 | XFS_SBS_INOALIGNMT, XFS_SBS_UNIT, XFS_SBS_WIDTH, XFS_SBS_DIRBLKLOG, | ||
279 | XFS_SBS_LOGSECTLOG, XFS_SBS_LOGSECTSIZE, XFS_SBS_LOGSUNIT, | ||
280 | XFS_SBS_FEATURES2, XFS_SBS_BAD_FEATURES2, XFS_SBS_FEATURES_COMPAT, | ||
281 | XFS_SBS_FEATURES_RO_COMPAT, XFS_SBS_FEATURES_INCOMPAT, | ||
282 | XFS_SBS_FEATURES_LOG_INCOMPAT, XFS_SBS_CRC, XFS_SBS_PAD, | ||
283 | XFS_SBS_PQUOTINO, XFS_SBS_LSN, | ||
284 | XFS_SBS_FIELDCOUNT | ||
285 | } xfs_sb_field_t; | ||
286 | |||
287 | /* | ||
288 | * Mask values, defined based on the xfs_sb_field_t values. | ||
289 | * Only define the ones we're using. | ||
290 | */ | ||
291 | #define XFS_SB_MVAL(x) (1LL << XFS_SBS_ ## x) | ||
292 | #define XFS_SB_UUID XFS_SB_MVAL(UUID) | ||
293 | #define XFS_SB_FNAME XFS_SB_MVAL(FNAME) | ||
294 | #define XFS_SB_ROOTINO XFS_SB_MVAL(ROOTINO) | ||
295 | #define XFS_SB_RBMINO XFS_SB_MVAL(RBMINO) | ||
296 | #define XFS_SB_RSUMINO XFS_SB_MVAL(RSUMINO) | ||
297 | #define XFS_SB_VERSIONNUM XFS_SB_MVAL(VERSIONNUM) | ||
298 | #define XFS_SB_UQUOTINO XFS_SB_MVAL(UQUOTINO) | ||
299 | #define XFS_SB_GQUOTINO XFS_SB_MVAL(GQUOTINO) | ||
300 | #define XFS_SB_QFLAGS XFS_SB_MVAL(QFLAGS) | ||
301 | #define XFS_SB_SHARED_VN XFS_SB_MVAL(SHARED_VN) | ||
302 | #define XFS_SB_UNIT XFS_SB_MVAL(UNIT) | ||
303 | #define XFS_SB_WIDTH XFS_SB_MVAL(WIDTH) | ||
304 | #define XFS_SB_ICOUNT XFS_SB_MVAL(ICOUNT) | ||
305 | #define XFS_SB_IFREE XFS_SB_MVAL(IFREE) | ||
306 | #define XFS_SB_FDBLOCKS XFS_SB_MVAL(FDBLOCKS) | ||
307 | #define XFS_SB_FEATURES2 XFS_SB_MVAL(FEATURES2) | ||
308 | #define XFS_SB_BAD_FEATURES2 XFS_SB_MVAL(BAD_FEATURES2) | ||
309 | #define XFS_SB_FEATURES_COMPAT XFS_SB_MVAL(FEATURES_COMPAT) | ||
310 | #define XFS_SB_FEATURES_RO_COMPAT XFS_SB_MVAL(FEATURES_RO_COMPAT) | ||
311 | #define XFS_SB_FEATURES_INCOMPAT XFS_SB_MVAL(FEATURES_INCOMPAT) | ||
312 | #define XFS_SB_FEATURES_LOG_INCOMPAT XFS_SB_MVAL(FEATURES_LOG_INCOMPAT) | ||
313 | #define XFS_SB_CRC XFS_SB_MVAL(CRC) | ||
314 | #define XFS_SB_PQUOTINO XFS_SB_MVAL(PQUOTINO) | ||
315 | #define XFS_SB_NUM_BITS ((int)XFS_SBS_FIELDCOUNT) | ||
316 | #define XFS_SB_ALL_BITS ((1LL << XFS_SB_NUM_BITS) - 1) | ||
317 | #define XFS_SB_MOD_BITS \ | ||
318 | (XFS_SB_UUID | XFS_SB_ROOTINO | XFS_SB_RBMINO | XFS_SB_RSUMINO | \ | ||
319 | XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | XFS_SB_GQUOTINO | \ | ||
320 | XFS_SB_QFLAGS | XFS_SB_SHARED_VN | XFS_SB_UNIT | XFS_SB_WIDTH | \ | ||
321 | XFS_SB_ICOUNT | XFS_SB_IFREE | XFS_SB_FDBLOCKS | XFS_SB_FEATURES2 | \ | ||
322 | XFS_SB_BAD_FEATURES2 | XFS_SB_FEATURES_COMPAT | \ | ||
323 | XFS_SB_FEATURES_RO_COMPAT | XFS_SB_FEATURES_INCOMPAT | \ | ||
324 | XFS_SB_FEATURES_LOG_INCOMPAT | XFS_SB_PQUOTINO) | ||
325 | |||
326 | |||
327 | /* | ||
328 | * Misc. Flags - warning - these will be cleared by xfs_repair unless | ||
329 | * a feature bit is set when the flag is used. | ||
330 | */ | ||
331 | #define XFS_SBF_NOFLAGS 0x00 /* no flags set */ | ||
332 | #define XFS_SBF_READONLY 0x01 /* only read-only mounts allowed */ | ||
333 | |||
334 | /* | ||
335 | * define max. shared version we can interoperate with | ||
336 | */ | ||
337 | #define XFS_SB_MAX_SHARED_VN 0 | ||
338 | |||
339 | #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) | ||
340 | |||
341 | /* | ||
342 | * The first XFS version we support is a v4 superblock with V2 directories. | ||
343 | */ | ||
344 | static inline bool xfs_sb_good_v4_features(struct xfs_sb *sbp) | ||
345 | { | ||
346 | if (!(sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT)) | ||
347 | return false; | ||
348 | |||
349 | /* check for unknown features in the fs */ | ||
350 | if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKBITS) || | ||
351 | ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && | ||
352 | (sbp->sb_features2 & ~XFS_SB_VERSION2_OKBITS))) | ||
353 | return false; | ||
354 | |||
355 | return true; | ||
356 | } | ||
357 | |||
358 | static inline bool xfs_sb_good_version(struct xfs_sb *sbp) | ||
359 | { | ||
360 | if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) | ||
361 | return true; | ||
362 | if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) | ||
363 | return xfs_sb_good_v4_features(sbp); | ||
364 | return false; | ||
365 | } | ||
366 | |||
367 | /* | ||
368 | * Detect a mismatched features2 field. Older kernels read/wrote | ||
369 | * this into the wrong slot, so to be safe we keep them in sync. | ||
370 | */ | ||
371 | static inline bool xfs_sb_has_mismatched_features2(struct xfs_sb *sbp) | ||
372 | { | ||
373 | return sbp->sb_bad_features2 != sbp->sb_features2; | ||
374 | } | ||
375 | |||
376 | static inline bool xfs_sb_version_hasattr(struct xfs_sb *sbp) | ||
377 | { | ||
378 | return (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT); | ||
379 | } | ||
380 | |||
381 | static inline void xfs_sb_version_addattr(struct xfs_sb *sbp) | ||
382 | { | ||
383 | sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; | ||
384 | } | ||
385 | |||
386 | static inline bool xfs_sb_version_hasquota(struct xfs_sb *sbp) | ||
387 | { | ||
388 | return (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT); | ||
389 | } | ||
390 | |||
391 | static inline void xfs_sb_version_addquota(struct xfs_sb *sbp) | ||
392 | { | ||
393 | sbp->sb_versionnum |= XFS_SB_VERSION_QUOTABIT; | ||
394 | } | ||
395 | |||
396 | static inline bool xfs_sb_version_hasalign(struct xfs_sb *sbp) | ||
397 | { | ||
398 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || | ||
399 | (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT)); | ||
400 | } | ||
401 | |||
402 | static inline bool xfs_sb_version_hasdalign(struct xfs_sb *sbp) | ||
403 | { | ||
404 | return (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); | ||
405 | } | ||
406 | |||
407 | static inline bool xfs_sb_version_haslogv2(struct xfs_sb *sbp) | ||
408 | { | ||
409 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || | ||
410 | (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); | ||
411 | } | ||
412 | |||
413 | static inline bool xfs_sb_version_hasextflgbit(struct xfs_sb *sbp) | ||
414 | { | ||
415 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || | ||
416 | (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); | ||
417 | } | ||
418 | |||
419 | static inline bool xfs_sb_version_hassector(struct xfs_sb *sbp) | ||
420 | { | ||
421 | return (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT); | ||
422 | } | ||
423 | |||
424 | static inline bool xfs_sb_version_hasasciici(struct xfs_sb *sbp) | ||
425 | { | ||
426 | return (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT); | ||
427 | } | ||
428 | |||
429 | static inline bool xfs_sb_version_hasmorebits(struct xfs_sb *sbp) | ||
430 | { | ||
431 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || | ||
432 | (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); | ||
433 | } | ||
434 | |||
435 | /* | ||
436 | * sb_features2 bit version macros. | ||
437 | */ | ||
438 | static inline bool xfs_sb_version_haslazysbcount(struct xfs_sb *sbp) | ||
439 | { | ||
440 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | ||
441 | (xfs_sb_version_hasmorebits(sbp) && | ||
442 | (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); | ||
443 | } | ||
444 | |||
445 | static inline bool xfs_sb_version_hasattr2(struct xfs_sb *sbp) | ||
446 | { | ||
447 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | ||
448 | (xfs_sb_version_hasmorebits(sbp) && | ||
449 | (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT)); | ||
450 | } | ||
451 | |||
452 | static inline void xfs_sb_version_addattr2(struct xfs_sb *sbp) | ||
453 | { | ||
454 | sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; | ||
455 | sbp->sb_features2 |= XFS_SB_VERSION2_ATTR2BIT; | ||
456 | sbp->sb_bad_features2 |= XFS_SB_VERSION2_ATTR2BIT; | ||
457 | } | ||
458 | |||
459 | static inline void xfs_sb_version_removeattr2(struct xfs_sb *sbp) | ||
460 | { | ||
461 | sbp->sb_features2 &= ~XFS_SB_VERSION2_ATTR2BIT; | ||
462 | sbp->sb_bad_features2 &= ~XFS_SB_VERSION2_ATTR2BIT; | ||
463 | if (!sbp->sb_features2) | ||
464 | sbp->sb_versionnum &= ~XFS_SB_VERSION_MOREBITSBIT; | ||
465 | } | ||
466 | |||
467 | static inline bool xfs_sb_version_hasprojid32bit(struct xfs_sb *sbp) | ||
468 | { | ||
469 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | ||
470 | (xfs_sb_version_hasmorebits(sbp) && | ||
471 | (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT)); | ||
472 | } | ||
473 | |||
474 | static inline void xfs_sb_version_addprojid32bit(struct xfs_sb *sbp) | ||
475 | { | ||
476 | sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; | ||
477 | sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT; | ||
478 | sbp->sb_bad_features2 |= XFS_SB_VERSION2_PROJID32BIT; | ||
479 | } | ||
480 | |||
481 | /* | ||
482 | * Extended v5 superblock feature masks. These are to be used for new v5 | ||
483 | * superblock features only. | ||
484 | * | ||
485 | * Compat features are new features that old kernels will not notice or affect | ||
486 | * and so can mount read-write without issues. | ||
487 | * | ||
488 | * RO-Compat (read only) are features that old kernels can read but will break | ||
489 | * if they write. Hence only read-only mounts of such filesystems are allowed on | ||
490 | * kernels that don't support the feature bit. | ||
491 | * | ||
492 | * InCompat features are features which old kernels will not understand and so | ||
493 | * must not mount. | ||
494 | * | ||
495 | * Log-InCompat features are for changes to log formats or new transactions that | ||
496 | * can't be replayed on older kernels. The fields are set when the filesystem is | ||
497 | * mounted, and a clean unmount clears the fields. | ||
498 | */ | ||
499 | #define XFS_SB_FEAT_COMPAT_ALL 0 | ||
500 | #define XFS_SB_FEAT_COMPAT_UNKNOWN ~XFS_SB_FEAT_COMPAT_ALL | ||
501 | static inline bool | ||
502 | xfs_sb_has_compat_feature( | ||
503 | struct xfs_sb *sbp, | ||
504 | __uint32_t feature) | ||
505 | { | ||
506 | return (sbp->sb_features_compat & feature) != 0; | ||
507 | } | ||
508 | |||
509 | #define XFS_SB_FEAT_RO_COMPAT_FINOBT (1 << 0) /* free inode btree */ | ||
510 | #define XFS_SB_FEAT_RO_COMPAT_ALL \ | ||
511 | (XFS_SB_FEAT_RO_COMPAT_FINOBT) | ||
512 | #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN ~XFS_SB_FEAT_RO_COMPAT_ALL | ||
513 | static inline bool | ||
514 | xfs_sb_has_ro_compat_feature( | ||
515 | struct xfs_sb *sbp, | ||
516 | __uint32_t feature) | ||
517 | { | ||
518 | return (sbp->sb_features_ro_compat & feature) != 0; | ||
519 | } | ||
520 | |||
521 | #define XFS_SB_FEAT_INCOMPAT_FTYPE (1 << 0) /* filetype in dirent */ | ||
522 | #define XFS_SB_FEAT_INCOMPAT_ALL \ | ||
523 | (XFS_SB_FEAT_INCOMPAT_FTYPE) | ||
524 | |||
525 | #define XFS_SB_FEAT_INCOMPAT_UNKNOWN ~XFS_SB_FEAT_INCOMPAT_ALL | ||
526 | static inline bool | ||
527 | xfs_sb_has_incompat_feature( | ||
528 | struct xfs_sb *sbp, | ||
529 | __uint32_t feature) | ||
530 | { | ||
531 | return (sbp->sb_features_incompat & feature) != 0; | ||
532 | } | ||
533 | |||
534 | #define XFS_SB_FEAT_INCOMPAT_LOG_ALL 0 | ||
535 | #define XFS_SB_FEAT_INCOMPAT_LOG_UNKNOWN ~XFS_SB_FEAT_INCOMPAT_LOG_ALL | ||
536 | static inline bool | ||
537 | xfs_sb_has_incompat_log_feature( | ||
538 | struct xfs_sb *sbp, | ||
539 | __uint32_t feature) | ||
540 | { | ||
541 | return (sbp->sb_features_log_incompat & feature) != 0; | ||
542 | } | ||
543 | |||
544 | /* | ||
545 | * V5 superblock specific feature checks | ||
546 | */ | ||
547 | static inline int xfs_sb_version_hascrc(struct xfs_sb *sbp) | ||
548 | { | ||
549 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5; | ||
550 | } | ||
551 | |||
552 | static inline int xfs_sb_version_has_pquotino(struct xfs_sb *sbp) | ||
553 | { | ||
554 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5; | ||
555 | } | ||
556 | |||
557 | static inline int xfs_sb_version_hasftype(struct xfs_sb *sbp) | ||
558 | { | ||
559 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 && | ||
560 | xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_FTYPE)) || | ||
561 | (xfs_sb_version_hasmorebits(sbp) && | ||
562 | (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE)); | ||
563 | } | ||
564 | |||
565 | static inline int xfs_sb_version_hasfinobt(xfs_sb_t *sbp) | ||
566 | { | ||
567 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) && | ||
568 | (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_FINOBT); | ||
569 | } | ||
570 | |||
571 | /* | ||
572 | * end of superblock version macros | ||
573 | */ | ||
574 | |||
575 | static inline bool | ||
576 | xfs_is_quota_inode(struct xfs_sb *sbp, xfs_ino_t ino) | ||
577 | { | ||
578 | return (ino == sbp->sb_uquotino || | ||
579 | ino == sbp->sb_gquotino || | ||
580 | ino == sbp->sb_pquotino); | ||
581 | } | ||
582 | |||
583 | #define XFS_SB_DADDR ((xfs_daddr_t)0) /* daddr in filesystem/ag */ | ||
584 | #define XFS_SB_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_SB_DADDR) | ||
585 | #define XFS_BUF_TO_SBP(bp) ((xfs_dsb_t *)((bp)->b_addr)) | ||
586 | |||
587 | #define XFS_HDR_BLOCK(mp,d) ((xfs_agblock_t)XFS_BB_TO_FSBT(mp,d)) | ||
588 | #define XFS_DADDR_TO_FSB(mp,d) XFS_AGB_TO_FSB(mp, \ | ||
589 | xfs_daddr_to_agno(mp,d), xfs_daddr_to_agbno(mp,d)) | ||
590 | #define XFS_FSB_TO_DADDR(mp,fsbno) XFS_AGB_TO_DADDR(mp, \ | ||
591 | XFS_FSB_TO_AGNO(mp,fsbno), XFS_FSB_TO_AGBNO(mp,fsbno)) | ||
592 | |||
593 | /* | ||
594 | * File system sector to basic block conversions. | ||
595 | */ | ||
596 | #define XFS_FSS_TO_BB(mp,sec) ((sec) << (mp)->m_sectbb_log) | ||
597 | |||
598 | /* | ||
599 | * File system block to basic block conversions. | ||
600 | */ | ||
601 | #define XFS_FSB_TO_BB(mp,fsbno) ((fsbno) << (mp)->m_blkbb_log) | ||
602 | #define XFS_BB_TO_FSB(mp,bb) \ | ||
603 | (((bb) + (XFS_FSB_TO_BB(mp,1) - 1)) >> (mp)->m_blkbb_log) | ||
604 | #define XFS_BB_TO_FSBT(mp,bb) ((bb) >> (mp)->m_blkbb_log) | ||
605 | |||
606 | /* | ||
607 | * File system block to byte conversions. | ||
608 | */ | ||
609 | #define XFS_FSB_TO_B(mp,fsbno) ((xfs_fsize_t)(fsbno) << (mp)->m_sb.sb_blocklog) | ||
610 | #define XFS_B_TO_FSB(mp,b) \ | ||
611 | ((((__uint64_t)(b)) + (mp)->m_blockmask) >> (mp)->m_sb.sb_blocklog) | ||
612 | #define XFS_B_TO_FSBT(mp,b) (((__uint64_t)(b)) >> (mp)->m_sb.sb_blocklog) | ||
613 | #define XFS_B_FSB_OFFSET(mp,b) ((b) & (mp)->m_blockmask) | ||
614 | |||
615 | /* | ||
37 | * Allocation group header | 616 | * Allocation group header |
38 | * | 617 | * |
39 | * This is divided into three structures, placed in sequential 512-byte | 618 | * This is divided into three structures, placed in sequential 512-byte |
diff --git a/fs/xfs/libxfs/xfs_ialloc_btree.c b/fs/xfs/libxfs/xfs_ialloc_btree.c index 4e029cc238e6..964c465ca69c 100644 --- a/fs/xfs/libxfs/xfs_ialloc_btree.c +++ b/fs/xfs/libxfs/xfs_ialloc_btree.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
28 | #include "xfs_btree.h" | 27 | #include "xfs_btree.h" |
diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c index f63c455c3f69..002b6b3a1988 100644 --- a/fs/xfs/libxfs/xfs_inode_buf.c +++ b/fs/xfs/libxfs/xfs_inode_buf.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_inode.h" | 25 | #include "xfs_inode.h" |
27 | #include "xfs_error.h" | 26 | #include "xfs_error.h" |
diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c index ab0659949a47..8912d28eb43e 100644 --- a/fs/xfs/libxfs/xfs_inode_fork.c +++ b/fs/xfs/libxfs/xfs_inode_fork.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_inum.h" | 25 | #include "xfs_inum.h" |
26 | #include "xfs_sb.h" | ||
27 | #include "xfs_mount.h" | 26 | #include "xfs_mount.h" |
28 | #include "xfs_inode.h" | 27 | #include "xfs_inode.h" |
29 | #include "xfs_trans.h" | 28 | #include "xfs_trans.h" |
diff --git a/fs/xfs/libxfs/xfs_log_rlimit.c b/fs/xfs/libxfs/xfs_log_rlimit.c index 1c250ee07dca..c10597973333 100644 --- a/fs/xfs/libxfs/xfs_log_rlimit.c +++ b/fs/xfs/libxfs/xfs_log_rlimit.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_da_format.h" | 25 | #include "xfs_da_format.h" |
27 | #include "xfs_trans_space.h" | 26 | #include "xfs_trans_space.h" |
diff --git a/fs/xfs/libxfs/xfs_rtbitmap.c b/fs/xfs/libxfs/xfs_rtbitmap.c index ad3d1dc37d11..9b59ffa1fc19 100644 --- a/fs/xfs/libxfs/xfs_rtbitmap.c +++ b/fs/xfs/libxfs/xfs_rtbitmap.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
28 | #include "xfs_bmap.h" | 27 | #include "xfs_bmap.h" |
diff --git a/fs/xfs/libxfs/xfs_sb.h b/fs/xfs/libxfs/xfs_sb.h index 2e739708afd3..8eb1c54bafbf 100644 --- a/fs/xfs/libxfs/xfs_sb.h +++ b/fs/xfs/libxfs/xfs_sb.h | |||
@@ -19,590 +19,6 @@ | |||
19 | #define __XFS_SB_H__ | 19 | #define __XFS_SB_H__ |
20 | 20 | ||
21 | /* | 21 | /* |
22 | * Super block | ||
23 | * Fits into a sector-sized buffer at address 0 of each allocation group. | ||
24 | * Only the first of these is ever updated except during growfs. | ||
25 | */ | ||
26 | |||
27 | struct xfs_buf; | ||
28 | struct xfs_mount; | ||
29 | struct xfs_trans; | ||
30 | |||
31 | #define XFS_SB_MAGIC 0x58465342 /* 'XFSB' */ | ||
32 | #define XFS_SB_VERSION_1 1 /* 5.3, 6.0.1, 6.1 */ | ||
33 | #define XFS_SB_VERSION_2 2 /* 6.2 - attributes */ | ||
34 | #define XFS_SB_VERSION_3 3 /* 6.2 - new inode version */ | ||
35 | #define XFS_SB_VERSION_4 4 /* 6.2+ - bitmask version */ | ||
36 | #define XFS_SB_VERSION_5 5 /* CRC enabled filesystem */ | ||
37 | #define XFS_SB_VERSION_NUMBITS 0x000f | ||
38 | #define XFS_SB_VERSION_ALLFBITS 0xfff0 | ||
39 | #define XFS_SB_VERSION_ATTRBIT 0x0010 | ||
40 | #define XFS_SB_VERSION_NLINKBIT 0x0020 | ||
41 | #define XFS_SB_VERSION_QUOTABIT 0x0040 | ||
42 | #define XFS_SB_VERSION_ALIGNBIT 0x0080 | ||
43 | #define XFS_SB_VERSION_DALIGNBIT 0x0100 | ||
44 | #define XFS_SB_VERSION_SHAREDBIT 0x0200 | ||
45 | #define XFS_SB_VERSION_LOGV2BIT 0x0400 | ||
46 | #define XFS_SB_VERSION_SECTORBIT 0x0800 | ||
47 | #define XFS_SB_VERSION_EXTFLGBIT 0x1000 | ||
48 | #define XFS_SB_VERSION_DIRV2BIT 0x2000 | ||
49 | #define XFS_SB_VERSION_BORGBIT 0x4000 /* ASCII only case-insens. */ | ||
50 | #define XFS_SB_VERSION_MOREBITSBIT 0x8000 | ||
51 | |||
52 | /* | ||
53 | * Supported feature bit list is just all bits in the versionnum field because | ||
54 | * we've used them all up and understand them all. Except, of course, for the | ||
55 | * shared superblock bit, which nobody knows what it does and so is unsupported. | ||
56 | */ | ||
57 | #define XFS_SB_VERSION_OKBITS \ | ||
58 | ((XFS_SB_VERSION_NUMBITS | XFS_SB_VERSION_ALLFBITS) & \ | ||
59 | ~XFS_SB_VERSION_SHAREDBIT) | ||
60 | |||
61 | /* | ||
62 | * There are two words to hold XFS "feature" bits: the original | ||
63 | * word, sb_versionnum, and sb_features2. Whenever a bit is set in | ||
64 | * sb_features2, the feature bit XFS_SB_VERSION_MOREBITSBIT must be set. | ||
65 | * | ||
66 | * These defines represent bits in sb_features2. | ||
67 | */ | ||
68 | #define XFS_SB_VERSION2_RESERVED1BIT 0x00000001 | ||
69 | #define XFS_SB_VERSION2_LAZYSBCOUNTBIT 0x00000002 /* Superblk counters */ | ||
70 | #define XFS_SB_VERSION2_RESERVED4BIT 0x00000004 | ||
71 | #define XFS_SB_VERSION2_ATTR2BIT 0x00000008 /* Inline attr rework */ | ||
72 | #define XFS_SB_VERSION2_PARENTBIT 0x00000010 /* parent pointers */ | ||
73 | #define XFS_SB_VERSION2_PROJID32BIT 0x00000080 /* 32 bit project id */ | ||
74 | #define XFS_SB_VERSION2_CRCBIT 0x00000100 /* metadata CRCs */ | ||
75 | #define XFS_SB_VERSION2_FTYPE 0x00000200 /* inode type in dir */ | ||
76 | |||
77 | #define XFS_SB_VERSION2_OKBITS \ | ||
78 | (XFS_SB_VERSION2_LAZYSBCOUNTBIT | \ | ||
79 | XFS_SB_VERSION2_ATTR2BIT | \ | ||
80 | XFS_SB_VERSION2_PROJID32BIT | \ | ||
81 | XFS_SB_VERSION2_FTYPE) | ||
82 | |||
83 | /* | ||
84 | * Superblock - in core version. Must match the ondisk version below. | ||
85 | * Must be padded to 64 bit alignment. | ||
86 | */ | ||
87 | typedef struct xfs_sb { | ||
88 | __uint32_t sb_magicnum; /* magic number == XFS_SB_MAGIC */ | ||
89 | __uint32_t sb_blocksize; /* logical block size, bytes */ | ||
90 | xfs_rfsblock_t sb_dblocks; /* number of data blocks */ | ||
91 | xfs_rfsblock_t sb_rblocks; /* number of realtime blocks */ | ||
92 | xfs_rtblock_t sb_rextents; /* number of realtime extents */ | ||
93 | uuid_t sb_uuid; /* file system unique id */ | ||
94 | xfs_fsblock_t sb_logstart; /* starting block of log if internal */ | ||
95 | xfs_ino_t sb_rootino; /* root inode number */ | ||
96 | xfs_ino_t sb_rbmino; /* bitmap inode for realtime extents */ | ||
97 | xfs_ino_t sb_rsumino; /* summary inode for rt bitmap */ | ||
98 | xfs_agblock_t sb_rextsize; /* realtime extent size, blocks */ | ||
99 | xfs_agblock_t sb_agblocks; /* size of an allocation group */ | ||
100 | xfs_agnumber_t sb_agcount; /* number of allocation groups */ | ||
101 | xfs_extlen_t sb_rbmblocks; /* number of rt bitmap blocks */ | ||
102 | xfs_extlen_t sb_logblocks; /* number of log blocks */ | ||
103 | __uint16_t sb_versionnum; /* header version == XFS_SB_VERSION */ | ||
104 | __uint16_t sb_sectsize; /* volume sector size, bytes */ | ||
105 | __uint16_t sb_inodesize; /* inode size, bytes */ | ||
106 | __uint16_t sb_inopblock; /* inodes per block */ | ||
107 | char sb_fname[12]; /* file system name */ | ||
108 | __uint8_t sb_blocklog; /* log2 of sb_blocksize */ | ||
109 | __uint8_t sb_sectlog; /* log2 of sb_sectsize */ | ||
110 | __uint8_t sb_inodelog; /* log2 of sb_inodesize */ | ||
111 | __uint8_t sb_inopblog; /* log2 of sb_inopblock */ | ||
112 | __uint8_t sb_agblklog; /* log2 of sb_agblocks (rounded up) */ | ||
113 | __uint8_t sb_rextslog; /* log2 of sb_rextents */ | ||
114 | __uint8_t sb_inprogress; /* mkfs is in progress, don't mount */ | ||
115 | __uint8_t sb_imax_pct; /* max % of fs for inode space */ | ||
116 | /* statistics */ | ||
117 | /* | ||
118 | * These fields must remain contiguous. If you really | ||
119 | * want to change their layout, make sure you fix the | ||
120 | * code in xfs_trans_apply_sb_deltas(). | ||
121 | */ | ||
122 | __uint64_t sb_icount; /* allocated inodes */ | ||
123 | __uint64_t sb_ifree; /* free inodes */ | ||
124 | __uint64_t sb_fdblocks; /* free data blocks */ | ||
125 | __uint64_t sb_frextents; /* free realtime extents */ | ||
126 | /* | ||
127 | * End contiguous fields. | ||
128 | */ | ||
129 | xfs_ino_t sb_uquotino; /* user quota inode */ | ||
130 | xfs_ino_t sb_gquotino; /* group quota inode */ | ||
131 | __uint16_t sb_qflags; /* quota flags */ | ||
132 | __uint8_t sb_flags; /* misc. flags */ | ||
133 | __uint8_t sb_shared_vn; /* shared version number */ | ||
134 | xfs_extlen_t sb_inoalignmt; /* inode chunk alignment, fsblocks */ | ||
135 | __uint32_t sb_unit; /* stripe or raid unit */ | ||
136 | __uint32_t sb_width; /* stripe or raid width */ | ||
137 | __uint8_t sb_dirblklog; /* log2 of dir block size (fsbs) */ | ||
138 | __uint8_t sb_logsectlog; /* log2 of the log sector size */ | ||
139 | __uint16_t sb_logsectsize; /* sector size for the log, bytes */ | ||
140 | __uint32_t sb_logsunit; /* stripe unit size for the log */ | ||
141 | __uint32_t sb_features2; /* additional feature bits */ | ||
142 | |||
143 | /* | ||
144 | * bad features2 field as a result of failing to pad the sb | ||
145 | * structure to 64 bits. Some machines will be using this field | ||
146 | * for features2 bits. Easiest just to mark it bad and not use | ||
147 | * it for anything else. | ||
148 | */ | ||
149 | __uint32_t sb_bad_features2; | ||
150 | |||
151 | /* version 5 superblock fields start here */ | ||
152 | |||
153 | /* feature masks */ | ||
154 | __uint32_t sb_features_compat; | ||
155 | __uint32_t sb_features_ro_compat; | ||
156 | __uint32_t sb_features_incompat; | ||
157 | __uint32_t sb_features_log_incompat; | ||
158 | |||
159 | __uint32_t sb_crc; /* superblock crc */ | ||
160 | __uint32_t sb_pad; | ||
161 | |||
162 | xfs_ino_t sb_pquotino; /* project quota inode */ | ||
163 | xfs_lsn_t sb_lsn; /* last write sequence */ | ||
164 | |||
165 | /* must be padded to 64 bit alignment */ | ||
166 | } xfs_sb_t; | ||
167 | |||
168 | #define XFS_SB_CRC_OFF offsetof(struct xfs_sb, sb_crc) | ||
169 | |||
170 | /* | ||
171 | * Superblock - on disk version. Must match the in core version above. | ||
172 | * Must be padded to 64 bit alignment. | ||
173 | */ | ||
174 | typedef struct xfs_dsb { | ||
175 | __be32 sb_magicnum; /* magic number == XFS_SB_MAGIC */ | ||
176 | __be32 sb_blocksize; /* logical block size, bytes */ | ||
177 | __be64 sb_dblocks; /* number of data blocks */ | ||
178 | __be64 sb_rblocks; /* number of realtime blocks */ | ||
179 | __be64 sb_rextents; /* number of realtime extents */ | ||
180 | uuid_t sb_uuid; /* file system unique id */ | ||
181 | __be64 sb_logstart; /* starting block of log if internal */ | ||
182 | __be64 sb_rootino; /* root inode number */ | ||
183 | __be64 sb_rbmino; /* bitmap inode for realtime extents */ | ||
184 | __be64 sb_rsumino; /* summary inode for rt bitmap */ | ||
185 | __be32 sb_rextsize; /* realtime extent size, blocks */ | ||
186 | __be32 sb_agblocks; /* size of an allocation group */ | ||
187 | __be32 sb_agcount; /* number of allocation groups */ | ||
188 | __be32 sb_rbmblocks; /* number of rt bitmap blocks */ | ||
189 | __be32 sb_logblocks; /* number of log blocks */ | ||
190 | __be16 sb_versionnum; /* header version == XFS_SB_VERSION */ | ||
191 | __be16 sb_sectsize; /* volume sector size, bytes */ | ||
192 | __be16 sb_inodesize; /* inode size, bytes */ | ||
193 | __be16 sb_inopblock; /* inodes per block */ | ||
194 | char sb_fname[12]; /* file system name */ | ||
195 | __u8 sb_blocklog; /* log2 of sb_blocksize */ | ||
196 | __u8 sb_sectlog; /* log2 of sb_sectsize */ | ||
197 | __u8 sb_inodelog; /* log2 of sb_inodesize */ | ||
198 | __u8 sb_inopblog; /* log2 of sb_inopblock */ | ||
199 | __u8 sb_agblklog; /* log2 of sb_agblocks (rounded up) */ | ||
200 | __u8 sb_rextslog; /* log2 of sb_rextents */ | ||
201 | __u8 sb_inprogress; /* mkfs is in progress, don't mount */ | ||
202 | __u8 sb_imax_pct; /* max % of fs for inode space */ | ||
203 | /* statistics */ | ||
204 | /* | ||
205 | * These fields must remain contiguous. If you really | ||
206 | * want to change their layout, make sure you fix the | ||
207 | * code in xfs_trans_apply_sb_deltas(). | ||
208 | */ | ||
209 | __be64 sb_icount; /* allocated inodes */ | ||
210 | __be64 sb_ifree; /* free inodes */ | ||
211 | __be64 sb_fdblocks; /* free data blocks */ | ||
212 | __be64 sb_frextents; /* free realtime extents */ | ||
213 | /* | ||
214 | * End contiguous fields. | ||
215 | */ | ||
216 | __be64 sb_uquotino; /* user quota inode */ | ||
217 | __be64 sb_gquotino; /* group quota inode */ | ||
218 | __be16 sb_qflags; /* quota flags */ | ||
219 | __u8 sb_flags; /* misc. flags */ | ||
220 | __u8 sb_shared_vn; /* shared version number */ | ||
221 | __be32 sb_inoalignmt; /* inode chunk alignment, fsblocks */ | ||
222 | __be32 sb_unit; /* stripe or raid unit */ | ||
223 | __be32 sb_width; /* stripe or raid width */ | ||
224 | __u8 sb_dirblklog; /* log2 of dir block size (fsbs) */ | ||
225 | __u8 sb_logsectlog; /* log2 of the log sector size */ | ||
226 | __be16 sb_logsectsize; /* sector size for the log, bytes */ | ||
227 | __be32 sb_logsunit; /* stripe unit size for the log */ | ||
228 | __be32 sb_features2; /* additional feature bits */ | ||
229 | /* | ||
230 | * bad features2 field as a result of failing to pad the sb | ||
231 | * structure to 64 bits. Some machines will be using this field | ||
232 | * for features2 bits. Easiest just to mark it bad and not use | ||
233 | * it for anything else. | ||
234 | */ | ||
235 | __be32 sb_bad_features2; | ||
236 | |||
237 | /* version 5 superblock fields start here */ | ||
238 | |||
239 | /* feature masks */ | ||
240 | __be32 sb_features_compat; | ||
241 | __be32 sb_features_ro_compat; | ||
242 | __be32 sb_features_incompat; | ||
243 | __be32 sb_features_log_incompat; | ||
244 | |||
245 | __le32 sb_crc; /* superblock crc */ | ||
246 | __be32 sb_pad; | ||
247 | |||
248 | __be64 sb_pquotino; /* project quota inode */ | ||
249 | __be64 sb_lsn; /* last write sequence */ | ||
250 | |||
251 | /* must be padded to 64 bit alignment */ | ||
252 | } xfs_dsb_t; | ||
253 | |||
254 | /* | ||
255 | * Sequence number values for the fields. | ||
256 | */ | ||
257 | typedef enum { | ||
258 | XFS_SBS_MAGICNUM, XFS_SBS_BLOCKSIZE, XFS_SBS_DBLOCKS, XFS_SBS_RBLOCKS, | ||
259 | XFS_SBS_REXTENTS, XFS_SBS_UUID, XFS_SBS_LOGSTART, XFS_SBS_ROOTINO, | ||
260 | XFS_SBS_RBMINO, XFS_SBS_RSUMINO, XFS_SBS_REXTSIZE, XFS_SBS_AGBLOCKS, | ||
261 | XFS_SBS_AGCOUNT, XFS_SBS_RBMBLOCKS, XFS_SBS_LOGBLOCKS, | ||
262 | XFS_SBS_VERSIONNUM, XFS_SBS_SECTSIZE, XFS_SBS_INODESIZE, | ||
263 | XFS_SBS_INOPBLOCK, XFS_SBS_FNAME, XFS_SBS_BLOCKLOG, | ||
264 | XFS_SBS_SECTLOG, XFS_SBS_INODELOG, XFS_SBS_INOPBLOG, XFS_SBS_AGBLKLOG, | ||
265 | XFS_SBS_REXTSLOG, XFS_SBS_INPROGRESS, XFS_SBS_IMAX_PCT, XFS_SBS_ICOUNT, | ||
266 | XFS_SBS_IFREE, XFS_SBS_FDBLOCKS, XFS_SBS_FREXTENTS, XFS_SBS_UQUOTINO, | ||
267 | XFS_SBS_GQUOTINO, XFS_SBS_QFLAGS, XFS_SBS_FLAGS, XFS_SBS_SHARED_VN, | ||
268 | XFS_SBS_INOALIGNMT, XFS_SBS_UNIT, XFS_SBS_WIDTH, XFS_SBS_DIRBLKLOG, | ||
269 | XFS_SBS_LOGSECTLOG, XFS_SBS_LOGSECTSIZE, XFS_SBS_LOGSUNIT, | ||
270 | XFS_SBS_FEATURES2, XFS_SBS_BAD_FEATURES2, XFS_SBS_FEATURES_COMPAT, | ||
271 | XFS_SBS_FEATURES_RO_COMPAT, XFS_SBS_FEATURES_INCOMPAT, | ||
272 | XFS_SBS_FEATURES_LOG_INCOMPAT, XFS_SBS_CRC, XFS_SBS_PAD, | ||
273 | XFS_SBS_PQUOTINO, XFS_SBS_LSN, | ||
274 | XFS_SBS_FIELDCOUNT | ||
275 | } xfs_sb_field_t; | ||
276 | |||
277 | /* | ||
278 | * Mask values, defined based on the xfs_sb_field_t values. | ||
279 | * Only define the ones we're using. | ||
280 | */ | ||
281 | #define XFS_SB_MVAL(x) (1LL << XFS_SBS_ ## x) | ||
282 | #define XFS_SB_UUID XFS_SB_MVAL(UUID) | ||
283 | #define XFS_SB_FNAME XFS_SB_MVAL(FNAME) | ||
284 | #define XFS_SB_ROOTINO XFS_SB_MVAL(ROOTINO) | ||
285 | #define XFS_SB_RBMINO XFS_SB_MVAL(RBMINO) | ||
286 | #define XFS_SB_RSUMINO XFS_SB_MVAL(RSUMINO) | ||
287 | #define XFS_SB_VERSIONNUM XFS_SB_MVAL(VERSIONNUM) | ||
288 | #define XFS_SB_UQUOTINO XFS_SB_MVAL(UQUOTINO) | ||
289 | #define XFS_SB_GQUOTINO XFS_SB_MVAL(GQUOTINO) | ||
290 | #define XFS_SB_QFLAGS XFS_SB_MVAL(QFLAGS) | ||
291 | #define XFS_SB_SHARED_VN XFS_SB_MVAL(SHARED_VN) | ||
292 | #define XFS_SB_UNIT XFS_SB_MVAL(UNIT) | ||
293 | #define XFS_SB_WIDTH XFS_SB_MVAL(WIDTH) | ||
294 | #define XFS_SB_ICOUNT XFS_SB_MVAL(ICOUNT) | ||
295 | #define XFS_SB_IFREE XFS_SB_MVAL(IFREE) | ||
296 | #define XFS_SB_FDBLOCKS XFS_SB_MVAL(FDBLOCKS) | ||
297 | #define XFS_SB_FEATURES2 XFS_SB_MVAL(FEATURES2) | ||
298 | #define XFS_SB_BAD_FEATURES2 XFS_SB_MVAL(BAD_FEATURES2) | ||
299 | #define XFS_SB_FEATURES_COMPAT XFS_SB_MVAL(FEATURES_COMPAT) | ||
300 | #define XFS_SB_FEATURES_RO_COMPAT XFS_SB_MVAL(FEATURES_RO_COMPAT) | ||
301 | #define XFS_SB_FEATURES_INCOMPAT XFS_SB_MVAL(FEATURES_INCOMPAT) | ||
302 | #define XFS_SB_FEATURES_LOG_INCOMPAT XFS_SB_MVAL(FEATURES_LOG_INCOMPAT) | ||
303 | #define XFS_SB_CRC XFS_SB_MVAL(CRC) | ||
304 | #define XFS_SB_PQUOTINO XFS_SB_MVAL(PQUOTINO) | ||
305 | #define XFS_SB_NUM_BITS ((int)XFS_SBS_FIELDCOUNT) | ||
306 | #define XFS_SB_ALL_BITS ((1LL << XFS_SB_NUM_BITS) - 1) | ||
307 | #define XFS_SB_MOD_BITS \ | ||
308 | (XFS_SB_UUID | XFS_SB_ROOTINO | XFS_SB_RBMINO | XFS_SB_RSUMINO | \ | ||
309 | XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | XFS_SB_GQUOTINO | \ | ||
310 | XFS_SB_QFLAGS | XFS_SB_SHARED_VN | XFS_SB_UNIT | XFS_SB_WIDTH | \ | ||
311 | XFS_SB_ICOUNT | XFS_SB_IFREE | XFS_SB_FDBLOCKS | XFS_SB_FEATURES2 | \ | ||
312 | XFS_SB_BAD_FEATURES2 | XFS_SB_FEATURES_COMPAT | \ | ||
313 | XFS_SB_FEATURES_RO_COMPAT | XFS_SB_FEATURES_INCOMPAT | \ | ||
314 | XFS_SB_FEATURES_LOG_INCOMPAT | XFS_SB_PQUOTINO) | ||
315 | |||
316 | |||
317 | /* | ||
318 | * Misc. Flags - warning - these will be cleared by xfs_repair unless | ||
319 | * a feature bit is set when the flag is used. | ||
320 | */ | ||
321 | #define XFS_SBF_NOFLAGS 0x00 /* no flags set */ | ||
322 | #define XFS_SBF_READONLY 0x01 /* only read-only mounts allowed */ | ||
323 | |||
324 | /* | ||
325 | * define max. shared version we can interoperate with | ||
326 | */ | ||
327 | #define XFS_SB_MAX_SHARED_VN 0 | ||
328 | |||
329 | #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) | ||
330 | |||
331 | /* | ||
332 | * The first XFS version we support is a v4 superblock with V2 directories. | ||
333 | */ | ||
334 | static inline bool xfs_sb_good_v4_features(struct xfs_sb *sbp) | ||
335 | { | ||
336 | if (!(sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT)) | ||
337 | return false; | ||
338 | |||
339 | /* check for unknown features in the fs */ | ||
340 | if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKBITS) || | ||
341 | ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && | ||
342 | (sbp->sb_features2 & ~XFS_SB_VERSION2_OKBITS))) | ||
343 | return false; | ||
344 | |||
345 | return true; | ||
346 | } | ||
347 | |||
348 | static inline bool xfs_sb_good_version(struct xfs_sb *sbp) | ||
349 | { | ||
350 | if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) | ||
351 | return true; | ||
352 | if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) | ||
353 | return xfs_sb_good_v4_features(sbp); | ||
354 | return false; | ||
355 | } | ||
356 | |||
357 | /* | ||
358 | * Detect a mismatched features2 field. Older kernels read/wrote | ||
359 | * this into the wrong slot, so to be safe we keep them in sync. | ||
360 | */ | ||
361 | static inline bool xfs_sb_has_mismatched_features2(struct xfs_sb *sbp) | ||
362 | { | ||
363 | return sbp->sb_bad_features2 != sbp->sb_features2; | ||
364 | } | ||
365 | |||
366 | static inline bool xfs_sb_version_hasattr(struct xfs_sb *sbp) | ||
367 | { | ||
368 | return (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT); | ||
369 | } | ||
370 | |||
371 | static inline void xfs_sb_version_addattr(struct xfs_sb *sbp) | ||
372 | { | ||
373 | sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; | ||
374 | } | ||
375 | |||
376 | static inline bool xfs_sb_version_hasquota(struct xfs_sb *sbp) | ||
377 | { | ||
378 | return (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT); | ||
379 | } | ||
380 | |||
381 | static inline void xfs_sb_version_addquota(struct xfs_sb *sbp) | ||
382 | { | ||
383 | sbp->sb_versionnum |= XFS_SB_VERSION_QUOTABIT; | ||
384 | } | ||
385 | |||
386 | static inline bool xfs_sb_version_hasalign(struct xfs_sb *sbp) | ||
387 | { | ||
388 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || | ||
389 | (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT)); | ||
390 | } | ||
391 | |||
392 | static inline bool xfs_sb_version_hasdalign(struct xfs_sb *sbp) | ||
393 | { | ||
394 | return (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); | ||
395 | } | ||
396 | |||
397 | static inline bool xfs_sb_version_haslogv2(struct xfs_sb *sbp) | ||
398 | { | ||
399 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || | ||
400 | (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); | ||
401 | } | ||
402 | |||
403 | static inline bool xfs_sb_version_hasextflgbit(struct xfs_sb *sbp) | ||
404 | { | ||
405 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || | ||
406 | (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); | ||
407 | } | ||
408 | |||
409 | static inline bool xfs_sb_version_hassector(struct xfs_sb *sbp) | ||
410 | { | ||
411 | return (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT); | ||
412 | } | ||
413 | |||
414 | static inline bool xfs_sb_version_hasasciici(struct xfs_sb *sbp) | ||
415 | { | ||
416 | return (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT); | ||
417 | } | ||
418 | |||
419 | static inline bool xfs_sb_version_hasmorebits(struct xfs_sb *sbp) | ||
420 | { | ||
421 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || | ||
422 | (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); | ||
423 | } | ||
424 | |||
425 | /* | ||
426 | * sb_features2 bit version macros. | ||
427 | */ | ||
428 | static inline bool xfs_sb_version_haslazysbcount(struct xfs_sb *sbp) | ||
429 | { | ||
430 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | ||
431 | (xfs_sb_version_hasmorebits(sbp) && | ||
432 | (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); | ||
433 | } | ||
434 | |||
435 | static inline bool xfs_sb_version_hasattr2(struct xfs_sb *sbp) | ||
436 | { | ||
437 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | ||
438 | (xfs_sb_version_hasmorebits(sbp) && | ||
439 | (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT)); | ||
440 | } | ||
441 | |||
442 | static inline void xfs_sb_version_addattr2(struct xfs_sb *sbp) | ||
443 | { | ||
444 | sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; | ||
445 | sbp->sb_features2 |= XFS_SB_VERSION2_ATTR2BIT; | ||
446 | sbp->sb_bad_features2 |= XFS_SB_VERSION2_ATTR2BIT; | ||
447 | } | ||
448 | |||
449 | static inline void xfs_sb_version_removeattr2(struct xfs_sb *sbp) | ||
450 | { | ||
451 | sbp->sb_features2 &= ~XFS_SB_VERSION2_ATTR2BIT; | ||
452 | sbp->sb_bad_features2 &= ~XFS_SB_VERSION2_ATTR2BIT; | ||
453 | if (!sbp->sb_features2) | ||
454 | sbp->sb_versionnum &= ~XFS_SB_VERSION_MOREBITSBIT; | ||
455 | } | ||
456 | |||
457 | static inline bool xfs_sb_version_hasprojid32bit(struct xfs_sb *sbp) | ||
458 | { | ||
459 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | ||
460 | (xfs_sb_version_hasmorebits(sbp) && | ||
461 | (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT)); | ||
462 | } | ||
463 | |||
464 | static inline void xfs_sb_version_addprojid32bit(struct xfs_sb *sbp) | ||
465 | { | ||
466 | sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; | ||
467 | sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT; | ||
468 | sbp->sb_bad_features2 |= XFS_SB_VERSION2_PROJID32BIT; | ||
469 | } | ||
470 | |||
471 | /* | ||
472 | * Extended v5 superblock feature masks. These are to be used for new v5 | ||
473 | * superblock features only. | ||
474 | * | ||
475 | * Compat features are new features that old kernels will not notice or affect | ||
476 | * and so can mount read-write without issues. | ||
477 | * | ||
478 | * RO-Compat (read only) are features that old kernels can read but will break | ||
479 | * if they write. Hence only read-only mounts of such filesystems are allowed on | ||
480 | * kernels that don't support the feature bit. | ||
481 | * | ||
482 | * InCompat features are features which old kernels will not understand and so | ||
483 | * must not mount. | ||
484 | * | ||
485 | * Log-InCompat features are for changes to log formats or new transactions that | ||
486 | * can't be replayed on older kernels. The fields are set when the filesystem is | ||
487 | * mounted, and a clean unmount clears the fields. | ||
488 | */ | ||
489 | #define XFS_SB_FEAT_COMPAT_ALL 0 | ||
490 | #define XFS_SB_FEAT_COMPAT_UNKNOWN ~XFS_SB_FEAT_COMPAT_ALL | ||
491 | static inline bool | ||
492 | xfs_sb_has_compat_feature( | ||
493 | struct xfs_sb *sbp, | ||
494 | __uint32_t feature) | ||
495 | { | ||
496 | return (sbp->sb_features_compat & feature) != 0; | ||
497 | } | ||
498 | |||
499 | #define XFS_SB_FEAT_RO_COMPAT_FINOBT (1 << 0) /* free inode btree */ | ||
500 | #define XFS_SB_FEAT_RO_COMPAT_ALL \ | ||
501 | (XFS_SB_FEAT_RO_COMPAT_FINOBT) | ||
502 | #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN ~XFS_SB_FEAT_RO_COMPAT_ALL | ||
503 | static inline bool | ||
504 | xfs_sb_has_ro_compat_feature( | ||
505 | struct xfs_sb *sbp, | ||
506 | __uint32_t feature) | ||
507 | { | ||
508 | return (sbp->sb_features_ro_compat & feature) != 0; | ||
509 | } | ||
510 | |||
511 | #define XFS_SB_FEAT_INCOMPAT_FTYPE (1 << 0) /* filetype in dirent */ | ||
512 | #define XFS_SB_FEAT_INCOMPAT_ALL \ | ||
513 | (XFS_SB_FEAT_INCOMPAT_FTYPE) | ||
514 | |||
515 | #define XFS_SB_FEAT_INCOMPAT_UNKNOWN ~XFS_SB_FEAT_INCOMPAT_ALL | ||
516 | static inline bool | ||
517 | xfs_sb_has_incompat_feature( | ||
518 | struct xfs_sb *sbp, | ||
519 | __uint32_t feature) | ||
520 | { | ||
521 | return (sbp->sb_features_incompat & feature) != 0; | ||
522 | } | ||
523 | |||
524 | #define XFS_SB_FEAT_INCOMPAT_LOG_ALL 0 | ||
525 | #define XFS_SB_FEAT_INCOMPAT_LOG_UNKNOWN ~XFS_SB_FEAT_INCOMPAT_LOG_ALL | ||
526 | static inline bool | ||
527 | xfs_sb_has_incompat_log_feature( | ||
528 | struct xfs_sb *sbp, | ||
529 | __uint32_t feature) | ||
530 | { | ||
531 | return (sbp->sb_features_log_incompat & feature) != 0; | ||
532 | } | ||
533 | |||
534 | /* | ||
535 | * V5 superblock specific feature checks | ||
536 | */ | ||
537 | static inline int xfs_sb_version_hascrc(struct xfs_sb *sbp) | ||
538 | { | ||
539 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5; | ||
540 | } | ||
541 | |||
542 | static inline int xfs_sb_version_has_pquotino(struct xfs_sb *sbp) | ||
543 | { | ||
544 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5; | ||
545 | } | ||
546 | |||
547 | static inline int xfs_sb_version_hasftype(struct xfs_sb *sbp) | ||
548 | { | ||
549 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 && | ||
550 | xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_FTYPE)) || | ||
551 | (xfs_sb_version_hasmorebits(sbp) && | ||
552 | (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE)); | ||
553 | } | ||
554 | |||
555 | static inline int xfs_sb_version_hasfinobt(xfs_sb_t *sbp) | ||
556 | { | ||
557 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) && | ||
558 | (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_FINOBT); | ||
559 | } | ||
560 | |||
561 | /* | ||
562 | * end of superblock version macros | ||
563 | */ | ||
564 | |||
565 | static inline bool | ||
566 | xfs_is_quota_inode(struct xfs_sb *sbp, xfs_ino_t ino) | ||
567 | { | ||
568 | return (ino == sbp->sb_uquotino || | ||
569 | ino == sbp->sb_gquotino || | ||
570 | ino == sbp->sb_pquotino); | ||
571 | } | ||
572 | |||
573 | #define XFS_SB_DADDR ((xfs_daddr_t)0) /* daddr in filesystem/ag */ | ||
574 | #define XFS_SB_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_SB_DADDR) | ||
575 | #define XFS_BUF_TO_SBP(bp) ((xfs_dsb_t *)((bp)->b_addr)) | ||
576 | |||
577 | #define XFS_HDR_BLOCK(mp,d) ((xfs_agblock_t)XFS_BB_TO_FSBT(mp,d)) | ||
578 | #define XFS_DADDR_TO_FSB(mp,d) XFS_AGB_TO_FSB(mp, \ | ||
579 | xfs_daddr_to_agno(mp,d), xfs_daddr_to_agbno(mp,d)) | ||
580 | #define XFS_FSB_TO_DADDR(mp,fsbno) XFS_AGB_TO_DADDR(mp, \ | ||
581 | XFS_FSB_TO_AGNO(mp,fsbno), XFS_FSB_TO_AGBNO(mp,fsbno)) | ||
582 | |||
583 | /* | ||
584 | * File system sector to basic block conversions. | ||
585 | */ | ||
586 | #define XFS_FSS_TO_BB(mp,sec) ((sec) << (mp)->m_sectbb_log) | ||
587 | |||
588 | /* | ||
589 | * File system block to basic block conversions. | ||
590 | */ | ||
591 | #define XFS_FSB_TO_BB(mp,fsbno) ((fsbno) << (mp)->m_blkbb_log) | ||
592 | #define XFS_BB_TO_FSB(mp,bb) \ | ||
593 | (((bb) + (XFS_FSB_TO_BB(mp,1) - 1)) >> (mp)->m_blkbb_log) | ||
594 | #define XFS_BB_TO_FSBT(mp,bb) ((bb) >> (mp)->m_blkbb_log) | ||
595 | |||
596 | /* | ||
597 | * File system block to byte conversions. | ||
598 | */ | ||
599 | #define XFS_FSB_TO_B(mp,fsbno) ((xfs_fsize_t)(fsbno) << (mp)->m_sb.sb_blocklog) | ||
600 | #define XFS_B_TO_FSB(mp,b) \ | ||
601 | ((((__uint64_t)(b)) + (mp)->m_blockmask) >> (mp)->m_sb.sb_blocklog) | ||
602 | #define XFS_B_TO_FSBT(mp,b) (((__uint64_t)(b)) >> (mp)->m_sb.sb_blocklog) | ||
603 | #define XFS_B_FSB_OFFSET(mp,b) ((b) & (mp)->m_blockmask) | ||
604 | |||
605 | /* | ||
606 | * perag get/put wrappers for ref counting | 22 | * perag get/put wrappers for ref counting |
607 | */ | 23 | */ |
608 | extern struct xfs_perag *xfs_perag_get(struct xfs_mount *, xfs_agnumber_t); | 24 | extern struct xfs_perag *xfs_perag_get(struct xfs_mount *, xfs_agnumber_t); |
diff --git a/fs/xfs/libxfs/xfs_symlink_remote.c b/fs/xfs/libxfs/xfs_symlink_remote.c index 87ee2996379c..c80c5236c3da 100644 --- a/fs/xfs/libxfs/xfs_symlink_remote.c +++ b/fs/xfs/libxfs/xfs_symlink_remote.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_shared.h" | 23 | #include "xfs_shared.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_bmap_btree.h" | 26 | #include "xfs_bmap_btree.h" |
28 | #include "xfs_inode.h" | 27 | #include "xfs_inode.h" |
diff --git a/fs/xfs/libxfs/xfs_trans_resv.c b/fs/xfs/libxfs/xfs_trans_resv.c index f2a03e5dec96..6c1330f29050 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.c +++ b/fs/xfs/libxfs/xfs_trans_resv.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_format.h" | 22 | #include "xfs_format.h" |
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_da_format.h" | 26 | #include "xfs_da_format.h" |
28 | #include "xfs_da_btree.h" | 27 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c index 66cd043d9165..4b641676f258 100644 --- a/fs/xfs/xfs_acl.c +++ b/fs/xfs/xfs_acl.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include "xfs_format.h" | 19 | #include "xfs_format.h" |
20 | #include "xfs_log_format.h" | 20 | #include "xfs_log_format.h" |
21 | #include "xfs_trans_resv.h" | 21 | #include "xfs_trans_resv.h" |
22 | #include "xfs_sb.h" | ||
23 | #include "xfs_mount.h" | 22 | #include "xfs_mount.h" |
24 | #include "xfs_inode.h" | 23 | #include "xfs_inode.h" |
25 | #include "xfs_acl.h" | 24 | #include "xfs_acl.h" |
diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c index 183b634dc432..18e2f3bbae5e 100644 --- a/fs/xfs/xfs_aops.c +++ b/fs/xfs/xfs_aops.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "xfs_format.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_mount.h" | 23 | #include "xfs_mount.h" |
25 | #include "xfs_inode.h" | 24 | #include "xfs_inode.h" |
26 | #include "xfs_trans.h" | 25 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_attr_inactive.c b/fs/xfs/xfs_attr_inactive.c index b466388358a2..83af4c149635 100644 --- a/fs/xfs/xfs_attr_inactive.c +++ b/fs/xfs/xfs_attr_inactive.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_bit.h" | 25 | #include "xfs_bit.h" |
26 | #include "xfs_sb.h" | ||
27 | #include "xfs_mount.h" | 26 | #include "xfs_mount.h" |
28 | #include "xfs_da_format.h" | 27 | #include "xfs_da_format.h" |
29 | #include "xfs_da_btree.h" | 28 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/xfs_attr_list.c b/fs/xfs/xfs_attr_list.c index 13dce2b19682..a43d370d2c58 100644 --- a/fs/xfs/xfs_attr_list.c +++ b/fs/xfs/xfs_attr_list.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_da_format.h" | 26 | #include "xfs_da_format.h" |
28 | #include "xfs_da_btree.h" | 27 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index 6df4730ef5c3..a68110eed65e 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_bit.h" | 25 | #include "xfs_bit.h" |
26 | #include "xfs_sb.h" | ||
27 | #include "xfs_mount.h" | 26 | #include "xfs_mount.h" |
28 | #include "xfs_da_format.h" | 27 | #include "xfs_da_format.h" |
29 | #include "xfs_inode.h" | 28 | #include "xfs_inode.h" |
diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c index 09b0eb723590..b5a10d2e9aef 100644 --- a/fs/xfs/xfs_dir2_readdir.c +++ b/fs/xfs/xfs_dir2_readdir.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_da_format.h" | 26 | #include "xfs_da_format.h" |
28 | #include "xfs_da_btree.h" | 27 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c index 222168493ac4..02c01bbbc789 100644 --- a/fs/xfs/xfs_dquot.c +++ b/fs/xfs/xfs_dquot.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_shared.h" | 22 | #include "xfs_shared.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
28 | #include "xfs_bmap.h" | 27 | #include "xfs_bmap.h" |
diff --git a/fs/xfs/xfs_dquot_item.c b/fs/xfs/xfs_dquot_item.c index 1f87bc8166f3..814cff94e78f 100644 --- a/fs/xfs/xfs_dquot_item.c +++ b/fs/xfs/xfs_dquot_item.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "xfs_format.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_mount.h" | 23 | #include "xfs_mount.h" |
25 | #include "xfs_inode.h" | 24 | #include "xfs_inode.h" |
26 | #include "xfs_quota.h" | 25 | #include "xfs_quota.h" |
diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index f5d90eda78fb..3ee186ac1093 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "xfs_fs.h" | 20 | #include "xfs_fs.h" |
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_mount.h" | 23 | #include "xfs_mount.h" |
25 | #include "xfs_error.h" | 24 | #include "xfs_error.h" |
26 | 25 | ||
diff --git a/fs/xfs/xfs_export.c b/fs/xfs/xfs_export.c index 73172e1bd399..0a0a6fa11ce1 100644 --- a/fs/xfs/xfs_export.c +++ b/fs/xfs/xfs_export.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include "xfs_format.h" | 19 | #include "xfs_format.h" |
20 | #include "xfs_log_format.h" | 20 | #include "xfs_log_format.h" |
21 | #include "xfs_trans_resv.h" | 21 | #include "xfs_trans_resv.h" |
22 | #include "xfs_sb.h" | ||
23 | #include "xfs_mount.h" | 22 | #include "xfs_mount.h" |
24 | #include "xfs_da_format.h" | 23 | #include "xfs_da_format.h" |
25 | #include "xfs_dir2.h" | 24 | #include "xfs_dir2.h" |
diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c index e751c6074000..cb7fe64cdbfa 100644 --- a/fs/xfs/xfs_extfree_item.c +++ b/fs/xfs/xfs_extfree_item.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "xfs_format.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_mount.h" | 23 | #include "xfs_mount.h" |
25 | #include "xfs_trans.h" | 24 | #include "xfs_trans.h" |
26 | #include "xfs_trans_priv.h" | 25 | #include "xfs_trans_priv.h" |
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 69b7dd316542..e2b1a8116f1c 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_da_format.h" | 25 | #include "xfs_da_format.h" |
27 | #include "xfs_da_btree.h" | 26 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/xfs_icreate_item.c b/fs/xfs/xfs_icreate_item.c index 131b0432f77e..d45ca72af6fb 100644 --- a/fs/xfs/xfs_icreate_item.c +++ b/fs/xfs/xfs_icreate_item.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_trans.h" | 26 | #include "xfs_trans.h" |
28 | #include "xfs_trans_priv.h" | 27 | #include "xfs_trans_priv.h" |
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 0bd3af61e09c..bf13a5a7e2f4 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "xfs_format.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_mount.h" | 23 | #include "xfs_mount.h" |
25 | #include "xfs_inode.h" | 24 | #include "xfs_inode.h" |
26 | #include "xfs_trans.h" | 25 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index d2175b60f232..a1831980a68e 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_inode.h" | 25 | #include "xfs_inode.h" |
27 | #include "xfs_ioctl.h" | 26 | #include "xfs_ioctl.h" |
diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c index 9a36ee0113d1..ec6772866f3d 100644 --- a/fs/xfs/xfs_ioctl32.c +++ b/fs/xfs/xfs_ioctl32.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_format.h" | 25 | #include "xfs_format.h" |
26 | #include "xfs_log_format.h" | 26 | #include "xfs_log_format.h" |
27 | #include "xfs_trans_resv.h" | 27 | #include "xfs_trans_resv.h" |
28 | #include "xfs_sb.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_inode.h" | 29 | #include "xfs_inode.h" |
31 | #include "xfs_itable.h" | 30 | #include "xfs_itable.h" |
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 7ab365a96017..2262ce32926a 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_inode.h" | 25 | #include "xfs_inode.h" |
27 | #include "xfs_btree.h" | 26 | #include "xfs_btree.h" |
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 55aa9e8d79b9..f14a3e5e4a0a 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_da_format.h" | 25 | #include "xfs_da_format.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index 2b92694926df..584feee3edb7 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_inum.h" | 24 | #include "xfs_inum.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
28 | #include "xfs_btree.h" | 27 | #include "xfs_btree.h" |
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index 765f32ebed4c..bfeb442ef827 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_error.h" | 25 | #include "xfs_error.h" |
27 | #include "xfs_trans.h" | 26 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c index 951c08fac0e7..45cc0ce18adf 100644 --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_shared.h" | 22 | #include "xfs_shared.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_error.h" | 25 | #include "xfs_error.h" |
27 | #include "xfs_alloc.h" | 26 | #include "xfs_alloc.h" |
diff --git a/fs/xfs/xfs_message.c b/fs/xfs/xfs_message.c index 8abc2d5643e1..d8b67547ab34 100644 --- a/fs/xfs/xfs_message.c +++ b/fs/xfs/xfs_message.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "xfs_format.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_mount.h" | 23 | #include "xfs_mount.h" |
25 | 24 | ||
26 | /* | 25 | /* |
diff --git a/fs/xfs/xfs_qm_bhv.c b/fs/xfs/xfs_qm_bhv.c index b781dc57e7a6..3e52d5de7ae1 100644 --- a/fs/xfs/xfs_qm_bhv.c +++ b/fs/xfs/xfs_qm_bhv.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "xfs_format.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_quota.h" | 23 | #include "xfs_quota.h" |
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_inode.h" | 25 | #include "xfs_inode.h" |
diff --git a/fs/xfs/xfs_quotaops.c b/fs/xfs/xfs_quotaops.c index 763843994026..7542bbeca6a1 100644 --- a/fs/xfs/xfs_quotaops.c +++ b/fs/xfs/xfs_quotaops.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include "xfs_format.h" | 19 | #include "xfs_format.h" |
20 | #include "xfs_log_format.h" | 20 | #include "xfs_log_format.h" |
21 | #include "xfs_trans_resv.h" | 21 | #include "xfs_trans_resv.h" |
22 | #include "xfs_sb.h" | ||
23 | #include "xfs_mount.h" | 22 | #include "xfs_mount.h" |
24 | #include "xfs_inode.h" | 23 | #include "xfs_inode.h" |
25 | #include "xfs_quota.h" | 24 | #include "xfs_quota.h" |
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c index cb93a7231baf..f2079b6911cc 100644 --- a/fs/xfs/xfs_rtalloc.c +++ b/fs/xfs/xfs_rtalloc.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
28 | #include "xfs_bmap.h" | 27 | #include "xfs_bmap.h" |
diff --git a/fs/xfs/xfs_symlink.c b/fs/xfs/xfs_symlink.c index 99bc12927999..25791df6f638 100644 --- a/fs/xfs/xfs_symlink.c +++ b/fs/xfs/xfs_symlink.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_bit.h" | 25 | #include "xfs_bit.h" |
26 | #include "xfs_sb.h" | ||
27 | #include "xfs_mount.h" | 26 | #include "xfs_mount.h" |
28 | #include "xfs_da_format.h" | 27 | #include "xfs_da_format.h" |
29 | #include "xfs_da_btree.h" | 28 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/xfs_trace.c b/fs/xfs/xfs_trace.c index 017051a10d1c..13a029806805 100644 --- a/fs/xfs/xfs_trace.c +++ b/fs/xfs/xfs_trace.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_da_format.h" | 25 | #include "xfs_da_format.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c index 02df25d607d8..fa3135b9bf04 100644 --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_format.h" | 22 | #include "xfs_format.h" |
23 | #include "xfs_log_format.h" | 23 | #include "xfs_log_format.h" |
24 | #include "xfs_trans_resv.h" | 24 | #include "xfs_trans_resv.h" |
25 | #include "xfs_sb.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_inode.h" | 26 | #include "xfs_inode.h" |
28 | #include "xfs_extent_busy.h" | 27 | #include "xfs_extent_busy.h" |
diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index dd828d6fa15a..573aefb5a573 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_trans.h" | 25 | #include "xfs_trans.h" |
27 | #include "xfs_trans_priv.h" | 26 | #include "xfs_trans_priv.h" |
diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c index f9192b03d570..d3d80bef59e1 100644 --- a/fs/xfs/xfs_trans_buf.c +++ b/fs/xfs/xfs_trans_buf.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_inode.h" | 25 | #include "xfs_inode.h" |
27 | #include "xfs_trans.h" | 26 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c index 6320e287e527..76a16df55ef7 100644 --- a/fs/xfs/xfs_trans_dquot.c +++ b/fs/xfs/xfs_trans_dquot.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_inode.h" | 25 | #include "xfs_inode.h" |
27 | #include "xfs_error.h" | 26 | #include "xfs_error.h" |
diff --git a/fs/xfs/xfs_trans_extfree.c b/fs/xfs/xfs_trans_extfree.c index a0aaa3e3d2b0..284397dd7990 100644 --- a/fs/xfs/xfs_trans_extfree.c +++ b/fs/xfs/xfs_trans_extfree.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_trans.h" | 25 | #include "xfs_trans.h" |
27 | #include "xfs_trans_priv.h" | 26 | #include "xfs_trans_priv.h" |
diff --git a/fs/xfs/xfs_trans_inode.c b/fs/xfs/xfs_trans_inode.c index 592904b0262b..17280cd71934 100644 --- a/fs/xfs/xfs_trans_inode.c +++ b/fs/xfs/xfs_trans_inode.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include "xfs_format.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log_format.h" | 22 | #include "xfs_log_format.h" |
23 | #include "xfs_trans_resv.h" | 23 | #include "xfs_trans_resv.h" |
24 | #include "xfs_sb.h" | ||
25 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
26 | #include "xfs_inode.h" | 25 | #include "xfs_inode.h" |
27 | #include "xfs_trans.h" | 26 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_xattr.c b/fs/xfs/xfs_xattr.c index 30c6158a037c..69f6e475de97 100644 --- a/fs/xfs/xfs_xattr.c +++ b/fs/xfs/xfs_xattr.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "xfs_format.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log_format.h" | 21 | #include "xfs_log_format.h" |
22 | #include "xfs_trans_resv.h" | 22 | #include "xfs_trans_resv.h" |
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_mount.h" | 23 | #include "xfs_mount.h" |
25 | #include "xfs_da_format.h" | 24 | #include "xfs_da_format.h" |
26 | #include "xfs_inode.h" | 25 | #include "xfs_inode.h" |