xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/minix_fs.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #ifndef _LINUX_MINIX_FS_H
2*53ee8cc1Swenshuai.xi #define _LINUX_MINIX_FS_H
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi #include <linux/magic.h>
5*53ee8cc1Swenshuai.xi 
6*53ee8cc1Swenshuai.xi /*
7*53ee8cc1Swenshuai.xi  * The minix filesystem constants/structures
8*53ee8cc1Swenshuai.xi  */
9*53ee8cc1Swenshuai.xi 
10*53ee8cc1Swenshuai.xi /*
11*53ee8cc1Swenshuai.xi  * Thanks to Kees J Bot for sending me the definitions of the new
12*53ee8cc1Swenshuai.xi  * minix filesystem (aka V2) with bigger inodes and 32-bit block
13*53ee8cc1Swenshuai.xi  * pointers.
14*53ee8cc1Swenshuai.xi  */
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi #define MINIX_ROOT_INO 1
17*53ee8cc1Swenshuai.xi 
18*53ee8cc1Swenshuai.xi /* Not the same as the bogus LINK_MAX in <linux/limits.h>. Oh well. */
19*53ee8cc1Swenshuai.xi #define MINIX_LINK_MAX	250
20*53ee8cc1Swenshuai.xi #define MINIX2_LINK_MAX	65530
21*53ee8cc1Swenshuai.xi 
22*53ee8cc1Swenshuai.xi #define MINIX_I_MAP_SLOTS	8
23*53ee8cc1Swenshuai.xi #define MINIX_Z_MAP_SLOTS	64
24*53ee8cc1Swenshuai.xi #define MINIX_VALID_FS		0x0001		/* Clean fs. */
25*53ee8cc1Swenshuai.xi #define MINIX_ERROR_FS		0x0002		/* fs has errors. */
26*53ee8cc1Swenshuai.xi 
27*53ee8cc1Swenshuai.xi #define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix_inode)))
28*53ee8cc1Swenshuai.xi 
29*53ee8cc1Swenshuai.xi /*
30*53ee8cc1Swenshuai.xi  * This is the original minix inode layout on disk.
31*53ee8cc1Swenshuai.xi  * Note the 8-bit gid and atime and ctime.
32*53ee8cc1Swenshuai.xi  */
33*53ee8cc1Swenshuai.xi struct minix_inode {
34*53ee8cc1Swenshuai.xi 	__u16 i_mode;
35*53ee8cc1Swenshuai.xi 	__u16 i_uid;
36*53ee8cc1Swenshuai.xi 	__u32 i_size;
37*53ee8cc1Swenshuai.xi 	__u32 i_time;
38*53ee8cc1Swenshuai.xi 	__u8  i_gid;
39*53ee8cc1Swenshuai.xi 	__u8  i_nlinks;
40*53ee8cc1Swenshuai.xi 	__u16 i_zone[9];
41*53ee8cc1Swenshuai.xi };
42*53ee8cc1Swenshuai.xi 
43*53ee8cc1Swenshuai.xi /*
44*53ee8cc1Swenshuai.xi  * The new minix inode has all the time entries, as well as
45*53ee8cc1Swenshuai.xi  * long block numbers and a third indirect block (7+1+1+1
46*53ee8cc1Swenshuai.xi  * instead of 7+1+1). Also, some previously 8-bit values are
47*53ee8cc1Swenshuai.xi  * now 16-bit. The inode is now 64 bytes instead of 32.
48*53ee8cc1Swenshuai.xi  */
49*53ee8cc1Swenshuai.xi struct minix2_inode {
50*53ee8cc1Swenshuai.xi 	__u16 i_mode;
51*53ee8cc1Swenshuai.xi 	__u16 i_nlinks;
52*53ee8cc1Swenshuai.xi 	__u16 i_uid;
53*53ee8cc1Swenshuai.xi 	__u16 i_gid;
54*53ee8cc1Swenshuai.xi 	__u32 i_size;
55*53ee8cc1Swenshuai.xi 	__u32 i_atime;
56*53ee8cc1Swenshuai.xi 	__u32 i_mtime;
57*53ee8cc1Swenshuai.xi 	__u32 i_ctime;
58*53ee8cc1Swenshuai.xi 	__u32 i_zone[10];
59*53ee8cc1Swenshuai.xi };
60*53ee8cc1Swenshuai.xi 
61*53ee8cc1Swenshuai.xi /*
62*53ee8cc1Swenshuai.xi  * minix super-block data on disk
63*53ee8cc1Swenshuai.xi  */
64*53ee8cc1Swenshuai.xi struct minix_super_block {
65*53ee8cc1Swenshuai.xi 	__u16 s_ninodes;
66*53ee8cc1Swenshuai.xi 	__u16 s_nzones;
67*53ee8cc1Swenshuai.xi 	__u16 s_imap_blocks;
68*53ee8cc1Swenshuai.xi 	__u16 s_zmap_blocks;
69*53ee8cc1Swenshuai.xi 	__u16 s_firstdatazone;
70*53ee8cc1Swenshuai.xi 	__u16 s_log_zone_size;
71*53ee8cc1Swenshuai.xi 	__u32 s_max_size;
72*53ee8cc1Swenshuai.xi 	__u16 s_magic;
73*53ee8cc1Swenshuai.xi 	__u16 s_state;
74*53ee8cc1Swenshuai.xi 	__u32 s_zones;
75*53ee8cc1Swenshuai.xi };
76*53ee8cc1Swenshuai.xi 
77*53ee8cc1Swenshuai.xi /*
78*53ee8cc1Swenshuai.xi  * V3 minix super-block data on disk
79*53ee8cc1Swenshuai.xi  */
80*53ee8cc1Swenshuai.xi struct minix3_super_block {
81*53ee8cc1Swenshuai.xi 	__u32 s_ninodes;
82*53ee8cc1Swenshuai.xi 	__u16 s_pad0;
83*53ee8cc1Swenshuai.xi 	__u16 s_imap_blocks;
84*53ee8cc1Swenshuai.xi 	__u16 s_zmap_blocks;
85*53ee8cc1Swenshuai.xi 	__u16 s_firstdatazone;
86*53ee8cc1Swenshuai.xi 	__u16 s_log_zone_size;
87*53ee8cc1Swenshuai.xi 	__u16 s_pad1;
88*53ee8cc1Swenshuai.xi 	__u32 s_max_size;
89*53ee8cc1Swenshuai.xi 	__u32 s_zones;
90*53ee8cc1Swenshuai.xi 	__u16 s_magic;
91*53ee8cc1Swenshuai.xi 	__u16 s_pad2;
92*53ee8cc1Swenshuai.xi 	__u16 s_blocksize;
93*53ee8cc1Swenshuai.xi 	__u8  s_disk_version;
94*53ee8cc1Swenshuai.xi };
95*53ee8cc1Swenshuai.xi 
96*53ee8cc1Swenshuai.xi struct minix_dir_entry {
97*53ee8cc1Swenshuai.xi 	__u16 inode;
98*53ee8cc1Swenshuai.xi 	char name[0];
99*53ee8cc1Swenshuai.xi };
100*53ee8cc1Swenshuai.xi 
101*53ee8cc1Swenshuai.xi struct minix3_dir_entry {
102*53ee8cc1Swenshuai.xi 	__u32 inode;
103*53ee8cc1Swenshuai.xi 	char name[0];
104*53ee8cc1Swenshuai.xi };
105*53ee8cc1Swenshuai.xi #endif
106