linux-headers (unknown)

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