Initial public busybox upstream commit
[busybox4maemo] / util-linux / minix.h
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 super-block data on disk
35  */
36 struct minix_super_block {
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[0];
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         MINIX1_SUPER_MAGIC      = 0x137F,       /* original minix fs */
65         MINIX1_SUPER_MAGIC2     = 0x138F,       /* minix fs, 30 char names */
66         MINIX2_SUPER_MAGIC      = 0x2468,       /* minix V2 fs */
67         MINIX2_SUPER_MAGIC2     = 0x2478,       /* minix V2 fs, 30 char names */
68         MINIX_VALID_FS          = 0x0001,       /* clean fs */
69         MINIX_ERROR_FS          = 0x0002,       /* fs has errors */
70
71         INODE_SIZE1             = sizeof(struct minix1_inode),
72         INODE_SIZE2             = sizeof(struct minix2_inode),
73         MINIX1_INODES_PER_BLOCK = BLOCK_SIZE / sizeof(struct minix1_inode),
74         MINIX2_INODES_PER_BLOCK = BLOCK_SIZE / sizeof(struct minix2_inode),
75 };
76
77 /*
78 Basic test script for regressions in mkfs/fsck.
79 Copies current dir into image (typically bbox build tree).
80
81 #!/bin/sh
82 tmpdir=/tmp/minixtest-$$
83 tmpimg=/tmp/minix-img-$$
84
85 mkdir $tmpdir
86 dd if=/dev/zero of=$tmpimg bs=1M count=20 || exit
87 ./busybox mkfs.minix $tmpimg || exit
88 mount -o loop $tmpimg $tmpdir || exit
89 cp -a "$PWD" $tmpdir
90 umount $tmpdir || exit
91 ./busybox fsck.minix -vfm $tmpimg || exit
92 echo "Continue?"
93 read junk
94 ./busybox fsck.minix -vfml $tmpimg || exit
95 rmdir $tmpdir
96 rm $tmpimg
97
98 */