/*
 * This file is auto-generated. Modifications will be lost.
 *
 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
 * for more information.
 */
#ifndef _LINUX_MINIX_FS_H
#define _LINUX_MINIX_FS_H
#include <linux/types.h>
#include <linux/magic.h>
#define MINIX_ROOT_INO 1
#define MINIX_LINK_MAX 250
#define MINIX2_LINK_MAX 65530
#define MINIX_I_MAP_SLOTS 8
#define MINIX_Z_MAP_SLOTS 64
#define MINIX_VALID_FS 0x0001
#define MINIX_ERROR_FS 0x0002
#define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE) / (sizeof(struct minix_inode)))
struct minix_inode {
  __u16 i_mode;
  __u16 i_uid;
  __u32 i_size;
  __u32 i_time;
  __u8 i_gid;
  __u8 i_nlinks;
  __u16 i_zone[9];
};
struct minix2_inode {
  __u16 i_mode;
  __u16 i_nlinks;
  __u16 i_uid;
  __u16 i_gid;
  __u32 i_size;
  __u32 i_atime;
  __u32 i_mtime;
  __u32 i_ctime;
  __u32 i_zone[10];
};
struct minix_super_block {
  __u16 s_ninodes;
  __u16 s_nzones;
  __u16 s_imap_blocks;
  __u16 s_zmap_blocks;
  __u16 s_firstdatazone;
  __u16 s_log_zone_size;
  __u32 s_max_size;
  __u16 s_magic;
  __u16 s_state;
  __u32 s_zones;
};
struct minix3_super_block {
  __u32 s_ninodes;
  __u16 s_pad0;
  __u16 s_imap_blocks;
  __u16 s_zmap_blocks;
  __u16 s_firstdatazone;
  __u16 s_log_zone_size;
  __u16 s_pad1;
  __u32 s_max_size;
  __u32 s_zones;
  __u16 s_magic;
  __u16 s_pad2;
  __u16 s_blocksize;
  __u8 s_disk_version;
};
struct minix_dir_entry {
  __u16 inode;
  char name[];
};
struct minix3_dir_entry {
  __u32 inode;
  char name[];
};
#endif
