diff options
Diffstat (limited to 'fs/squashfs/squashfs_fs.h')
-rw-r--r-- | fs/squashfs/squashfs_fs.h | 76 |
1 files changed, 75 insertions, 1 deletions
diff --git a/fs/squashfs/squashfs_fs.h b/fs/squashfs/squashfs_fs.h index 79024245ea00..8eabb808b78d 100644 --- a/fs/squashfs/squashfs_fs.h +++ b/fs/squashfs/squashfs_fs.h | |||
@@ -46,6 +46,7 @@ | |||
46 | #define SQUASHFS_NAME_LEN 256 | 46 | #define SQUASHFS_NAME_LEN 256 |
47 | 47 | ||
48 | #define SQUASHFS_INVALID_FRAG (0xffffffffU) | 48 | #define SQUASHFS_INVALID_FRAG (0xffffffffU) |
49 | #define SQUASHFS_INVALID_XATTR (0xffffffffU) | ||
49 | #define SQUASHFS_INVALID_BLK (-1LL) | 50 | #define SQUASHFS_INVALID_BLK (-1LL) |
50 | 51 | ||
51 | /* Filesystem flags */ | 52 | /* Filesystem flags */ |
@@ -96,6 +97,13 @@ | |||
96 | #define SQUASHFS_LFIFO_TYPE 13 | 97 | #define SQUASHFS_LFIFO_TYPE 13 |
97 | #define SQUASHFS_LSOCKET_TYPE 14 | 98 | #define SQUASHFS_LSOCKET_TYPE 14 |
98 | 99 | ||
100 | /* Xattr types */ | ||
101 | #define SQUASHFS_XATTR_USER 0 | ||
102 | #define SQUASHFS_XATTR_TRUSTED 1 | ||
103 | #define SQUASHFS_XATTR_SECURITY 2 | ||
104 | #define SQUASHFS_XATTR_VALUE_OOL 256 | ||
105 | #define SQUASHFS_XATTR_PREFIX_MASK 0xff | ||
106 | |||
99 | /* Flag whether block is compressed or uncompressed, bit is set if block is | 107 | /* Flag whether block is compressed or uncompressed, bit is set if block is |
100 | * uncompressed */ | 108 | * uncompressed */ |
101 | #define SQUASHFS_COMPRESSED_BIT (1 << 15) | 109 | #define SQUASHFS_COMPRESSED_BIT (1 << 15) |
@@ -174,6 +182,24 @@ | |||
174 | 182 | ||
175 | #define SQUASHFS_ID_BLOCK_BYTES(A) (SQUASHFS_ID_BLOCKS(A) *\ | 183 | #define SQUASHFS_ID_BLOCK_BYTES(A) (SQUASHFS_ID_BLOCKS(A) *\ |
176 | sizeof(u64)) | 184 | sizeof(u64)) |
185 | /* xattr id lookup table defines */ | ||
186 | #define SQUASHFS_XATTR_BYTES(A) ((A) * sizeof(struct squashfs_xattr_id)) | ||
187 | |||
188 | #define SQUASHFS_XATTR_BLOCK(A) (SQUASHFS_XATTR_BYTES(A) / \ | ||
189 | SQUASHFS_METADATA_SIZE) | ||
190 | |||
191 | #define SQUASHFS_XATTR_BLOCK_OFFSET(A) (SQUASHFS_XATTR_BYTES(A) % \ | ||
192 | SQUASHFS_METADATA_SIZE) | ||
193 | |||
194 | #define SQUASHFS_XATTR_BLOCKS(A) ((SQUASHFS_XATTR_BYTES(A) + \ | ||
195 | SQUASHFS_METADATA_SIZE - 1) / \ | ||
196 | SQUASHFS_METADATA_SIZE) | ||
197 | |||
198 | #define SQUASHFS_XATTR_BLOCK_BYTES(A) (SQUASHFS_XATTR_BLOCKS(A) *\ | ||
199 | sizeof(u64)) | ||
200 | #define SQUASHFS_XATTR_BLK(A) ((unsigned int) ((A) >> 16)) | ||
201 | |||
202 | #define SQUASHFS_XATTR_OFFSET(A) ((unsigned int) ((A) & 0xffff)) | ||
177 | 203 | ||
178 | /* cached data constants for filesystem */ | 204 | /* cached data constants for filesystem */ |
179 | #define SQUASHFS_CACHED_BLKS 8 | 205 | #define SQUASHFS_CACHED_BLKS 8 |
@@ -228,7 +254,7 @@ struct squashfs_super_block { | |||
228 | __le64 root_inode; | 254 | __le64 root_inode; |
229 | __le64 bytes_used; | 255 | __le64 bytes_used; |
230 | __le64 id_table_start; | 256 | __le64 id_table_start; |
231 | __le64 xattr_table_start; | 257 | __le64 xattr_id_table_start; |
232 | __le64 inode_table_start; | 258 | __le64 inode_table_start; |
233 | __le64 directory_table_start; | 259 | __le64 directory_table_start; |
234 | __le64 fragment_table_start; | 260 | __le64 fragment_table_start; |
@@ -261,6 +287,17 @@ struct squashfs_ipc_inode { | |||
261 | __le32 nlink; | 287 | __le32 nlink; |
262 | }; | 288 | }; |
263 | 289 | ||
290 | struct squashfs_lipc_inode { | ||
291 | __le16 inode_type; | ||
292 | __le16 mode; | ||
293 | __le16 uid; | ||
294 | __le16 guid; | ||
295 | __le32 mtime; | ||
296 | __le32 inode_number; | ||
297 | __le32 nlink; | ||
298 | __le32 xattr; | ||
299 | }; | ||
300 | |||
264 | struct squashfs_dev_inode { | 301 | struct squashfs_dev_inode { |
265 | __le16 inode_type; | 302 | __le16 inode_type; |
266 | __le16 mode; | 303 | __le16 mode; |
@@ -272,6 +309,18 @@ struct squashfs_dev_inode { | |||
272 | __le32 rdev; | 309 | __le32 rdev; |
273 | }; | 310 | }; |
274 | 311 | ||
312 | struct squashfs_ldev_inode { | ||
313 | __le16 inode_type; | ||
314 | __le16 mode; | ||
315 | __le16 uid; | ||
316 | __le16 guid; | ||
317 | __le32 mtime; | ||
318 | __le32 inode_number; | ||
319 | __le32 nlink; | ||
320 | __le32 rdev; | ||
321 | __le32 xattr; | ||
322 | }; | ||
323 | |||
275 | struct squashfs_symlink_inode { | 324 | struct squashfs_symlink_inode { |
276 | __le16 inode_type; | 325 | __le16 inode_type; |
277 | __le16 mode; | 326 | __le16 mode; |
@@ -349,12 +398,14 @@ struct squashfs_ldir_inode { | |||
349 | union squashfs_inode { | 398 | union squashfs_inode { |
350 | struct squashfs_base_inode base; | 399 | struct squashfs_base_inode base; |
351 | struct squashfs_dev_inode dev; | 400 | struct squashfs_dev_inode dev; |
401 | struct squashfs_ldev_inode ldev; | ||
352 | struct squashfs_symlink_inode symlink; | 402 | struct squashfs_symlink_inode symlink; |
353 | struct squashfs_reg_inode reg; | 403 | struct squashfs_reg_inode reg; |
354 | struct squashfs_lreg_inode lreg; | 404 | struct squashfs_lreg_inode lreg; |
355 | struct squashfs_dir_inode dir; | 405 | struct squashfs_dir_inode dir; |
356 | struct squashfs_ldir_inode ldir; | 406 | struct squashfs_ldir_inode ldir; |
357 | struct squashfs_ipc_inode ipc; | 407 | struct squashfs_ipc_inode ipc; |
408 | struct squashfs_lipc_inode lipc; | ||
358 | }; | 409 | }; |
359 | 410 | ||
360 | struct squashfs_dir_entry { | 411 | struct squashfs_dir_entry { |
@@ -377,4 +428,27 @@ struct squashfs_fragment_entry { | |||
377 | unsigned int unused; | 428 | unsigned int unused; |
378 | }; | 429 | }; |
379 | 430 | ||
431 | struct squashfs_xattr_entry { | ||
432 | __le16 type; | ||
433 | __le16 size; | ||
434 | char data[0]; | ||
435 | }; | ||
436 | |||
437 | struct squashfs_xattr_val { | ||
438 | __le32 vsize; | ||
439 | char value[0]; | ||
440 | }; | ||
441 | |||
442 | struct squashfs_xattr_id { | ||
443 | __le64 xattr; | ||
444 | __le32 count; | ||
445 | __le32 size; | ||
446 | }; | ||
447 | |||
448 | struct squashfs_xattr_id_table { | ||
449 | __le64 xattr_table_start; | ||
450 | __le32 xattr_ids; | ||
451 | __le32 unused; | ||
452 | }; | ||
453 | |||
380 | #endif | 454 | #endif |