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