linux/include/uapi/linux/minix_fs.h
<<
>>
Prefs
   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 */
  35struct 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 */
  51struct 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 */
  66struct 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 */
  82struct 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
  98struct minix_dir_entry {
  99        __u16 inode;
 100        char name[0];
 101};
 102
 103struct minix3_dir_entry {
 104        __u32 inode;
 105        char name[0];
 106};
 107#endif
 108