diff options
Diffstat (limited to 'fs/omfs/omfs_fs.h')
-rw-r--r-- | fs/omfs/omfs_fs.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/fs/omfs/omfs_fs.h b/fs/omfs/omfs_fs.h new file mode 100644 index 000000000000..12cca245d6e8 --- /dev/null +++ b/fs/omfs/omfs_fs.h | |||
@@ -0,0 +1,80 @@ | |||
1 | #ifndef _OMFS_FS_H | ||
2 | #define _OMFS_FS_H | ||
3 | |||
4 | /* OMFS On-disk structures */ | ||
5 | |||
6 | #define OMFS_MAGIC 0xC2993D87 | ||
7 | #define OMFS_IMAGIC 0xD2 | ||
8 | |||
9 | #define OMFS_DIR 'D' | ||
10 | #define OMFS_FILE 'F' | ||
11 | #define OMFS_INODE_NORMAL 'e' | ||
12 | #define OMFS_INODE_CONTINUATION 'c' | ||
13 | #define OMFS_INODE_SYSTEM 's' | ||
14 | #define OMFS_NAMELEN 256 | ||
15 | #define OMFS_DIR_START 0x1b8 | ||
16 | #define OMFS_EXTENT_START 0x1d0 | ||
17 | #define OMFS_EXTENT_CONT 0x40 | ||
18 | #define OMFS_XOR_COUNT 19 | ||
19 | #define OMFS_MAX_BLOCK_SIZE 8192 | ||
20 | |||
21 | struct omfs_super_block { | ||
22 | char s_fill1[256]; | ||
23 | __be64 s_root_block; /* block number of omfs_root_block */ | ||
24 | __be64 s_num_blocks; /* total number of FS blocks */ | ||
25 | __be32 s_magic; /* OMFS_MAGIC */ | ||
26 | __be32 s_blocksize; /* size of a block */ | ||
27 | __be32 s_mirrors; /* # of mirrors of system blocks */ | ||
28 | __be32 s_sys_blocksize; /* size of non-data blocks */ | ||
29 | }; | ||
30 | |||
31 | struct omfs_header { | ||
32 | __be64 h_self; /* FS block where this is located */ | ||
33 | __be32 h_body_size; /* size of useful data after header */ | ||
34 | __be16 h_crc; /* crc-ccitt of body_size bytes */ | ||
35 | char h_fill1[2]; | ||
36 | u8 h_version; /* version, always 1 */ | ||
37 | char h_type; /* OMFS_INODE_X */ | ||
38 | u8 h_magic; /* OMFS_IMAGIC */ | ||
39 | u8 h_check_xor; /* XOR of header bytes before this */ | ||
40 | __be32 h_fill2; | ||
41 | }; | ||
42 | |||
43 | struct omfs_root_block { | ||
44 | struct omfs_header r_head; /* header */ | ||
45 | __be64 r_fill1; | ||
46 | __be64 r_num_blocks; /* total number of FS blocks */ | ||
47 | __be64 r_root_dir; /* block # of root directory */ | ||
48 | __be64 r_bitmap; /* block # of free space bitmap */ | ||
49 | __be32 r_blocksize; /* size of a block */ | ||
50 | __be32 r_clustersize; /* size allocated for data blocks */ | ||
51 | __be64 r_mirrors; /* # of mirrors of system blocks */ | ||
52 | char r_name[OMFS_NAMELEN]; /* partition label */ | ||
53 | }; | ||
54 | |||
55 | struct omfs_inode { | ||
56 | struct omfs_header i_head; /* header */ | ||
57 | __be64 i_parent; /* parent containing this inode */ | ||
58 | __be64 i_sibling; /* next inode in hash bucket */ | ||
59 | __be64 i_ctime; /* ctime, in milliseconds */ | ||
60 | char i_fill1[35]; | ||
61 | char i_type; /* OMFS_[DIR,FILE] */ | ||
62 | __be32 i_fill2; | ||
63 | char i_fill3[64]; | ||
64 | char i_name[OMFS_NAMELEN]; /* filename */ | ||
65 | __be64 i_size; /* size of file, in bytes */ | ||
66 | }; | ||
67 | |||
68 | struct omfs_extent_entry { | ||
69 | __be64 e_cluster; /* start location of a set of blocks */ | ||
70 | __be64 e_blocks; /* number of blocks after e_cluster */ | ||
71 | }; | ||
72 | |||
73 | struct omfs_extent { | ||
74 | __be64 e_next; /* next extent table location */ | ||
75 | __be32 e_extent_count; /* total # extents in this table */ | ||
76 | __be32 e_fill; | ||
77 | struct omfs_extent_entry e_entry; /* start of extent entries */ | ||
78 | }; | ||
79 | |||
80 | #endif | ||