1 /* 2 * This is the original minix inode layout on disk. 3 * Note the 8-bit gid and atime and ctime. 4 */ 5 struct minix1_inode { 6 uint16_t i_mode; 7 uint16_t i_uid; 8 uint32_t i_size; 9 uint32_t i_time; 10 uint8_t i_gid; 11 uint8_t i_nlinks; 12 uint16_t i_zone[9]; 13 }; 14 15 /* 16 * The new minix inode has all the time entries, as well as 17 * long block numbers and a third indirect block (7+1+1+1 18 * instead of 7+1+1). Also, some previously 8-bit values are 19 * now 16-bit. The inode is now 64 bytes instead of 32. 20 */ 21 struct minix2_inode { 22 uint16_t i_mode; 23 uint16_t i_nlinks; 24 uint16_t i_uid; 25 uint16_t i_gid; 26 uint32_t i_size; 27 uint32_t i_atime; 28 uint32_t i_mtime; 29 uint32_t i_ctime; 30 uint32_t i_zone[10]; 31 }; 32 33 /* 34 * minix superblock data on disk 35 */ 36 struct minix_superblock { 37 uint16_t s_ninodes; 38 uint16_t s_nzones; 39 uint16_t s_imap_blocks; 40 uint16_t s_zmap_blocks; 41 uint16_t s_firstdatazone; 42 uint16_t s_log_zone_size; 43 uint32_t s_max_size; 44 uint16_t s_magic; 45 uint16_t s_state; 46 uint32_t s_zones; 47 }; 48 49 struct minix_dir_entry { 50 uint16_t inode; 51 char name[]; 52 }; 53 54 /* Believe it or not, but mount.h has this one #defined */ 55 #undef BLOCK_SIZE 56 57 enum { 58 BLOCK_SIZE = 1024, 59 BITS_PER_BLOCK = BLOCK_SIZE << 3, 60 61 MINIX_ROOT_INO = 1, 62 MINIX_BAD_INO = 2, 63 64 #undef MINIX1_SUPER_MAGIC 65 MINIX1_SUPER_MAGIC = 0x137F, /* original minix fs */ 66 #undef MINIX1_SUPER_MAGIC2 67 MINIX1_SUPER_MAGIC2 = 0x138F, /* minix fs, 30 char names */ 68 /* bionic has this define */ 69 #undef MINIX2_SUPER_MAGIC 70 MINIX2_SUPER_MAGIC = 0x2468, /* minix V2 fs */ 71 #undef MINIX2_SUPER_MAGIC2 72 MINIX2_SUPER_MAGIC2 = 0x2478, /* minix V2 fs, 30 char names */ 73 MINIX_VALID_FS = 0x0001, /* clean fs */ 74 MINIX_ERROR_FS = 0x0002, /* fs has errors */ 75 76 INODE_SIZE1 = sizeof(struct minix1_inode), 77 INODE_SIZE2 = sizeof(struct minix2_inode), 78 MINIX1_INODES_PER_BLOCK = BLOCK_SIZE / sizeof(struct minix1_inode), 79 MINIX2_INODES_PER_BLOCK = BLOCK_SIZE / sizeof(struct minix2_inode), 80 }; 81 82 /* 83 Basic test script for regressions in mkfs/fsck. 84 Copies current dir into image (typically bbox build tree). 85 86 #!/bin/sh 87 tmpdir=/tmp/minixtest-$$ 88 tmpimg=/tmp/minix-img-$$ 89 90 mkdir $tmpdir 91 dd if=/dev/zero of=$tmpimg bs=1M count=20 || exit 92 ./busybox mkfs.minix $tmpimg || exit 93 mount -o loop $tmpimg $tmpdir || exit 94 cp -a "$PWD" $tmpdir 95 umount $tmpdir || exit 96 ./busybox fsck.minix -vfm $tmpimg || exit 97 echo "Continue?" 98 read junk 99 ./busybox fsck.minix -vfml $tmpimg || exit 100 rmdir $tmpdir 101 rm $tmpimg 102 103 */ 104