linux/include/linux/efs_fs_i.h
<<
>>
Prefs
   1/*
   2 * efs_fs_i.h
   3 *
   4 * Copyright (c) 1999 Al Smith
   5 *
   6 * Portions derived from IRIX header files (c) 1988 Silicon Graphics
   7 */
   8
   9#ifndef __EFS_FS_I_H__
  10#define __EFS_FS_I_H__
  11
  12typedef int32_t         efs_block_t;
  13typedef uint32_t        efs_ino_t;
  14
  15#define EFS_DIRECTEXTENTS       12
  16
  17/*
  18 * layout of an extent, in memory and on disk. 8 bytes exactly.
  19 */
  20typedef union extent_u {
  21        unsigned char raw[8];
  22        struct extent_s {
  23                unsigned int    ex_magic:8;     /* magic # (zero) */
  24                unsigned int    ex_bn:24;       /* basic block */
  25                unsigned int    ex_length:8;    /* numblocks in this extent */
  26                unsigned int    ex_offset:24;   /* logical offset into file */
  27        } cooked;
  28} efs_extent;
  29
  30typedef struct edevs {
  31        __be16          odev;
  32        __be32          ndev;
  33} efs_devs;
  34
  35/*
  36 * extent based filesystem inode as it appears on disk.  The efs inode
  37 * is exactly 128 bytes long.
  38 */
  39struct  efs_dinode {
  40        __be16          di_mode;        /* mode and type of file */
  41        __be16          di_nlink;       /* number of links to file */
  42        __be16          di_uid;         /* owner's user id */
  43        __be16          di_gid;         /* owner's group id */
  44        __be32          di_size;        /* number of bytes in file */
  45        __be32          di_atime;       /* time last accessed */
  46        __be32          di_mtime;       /* time last modified */
  47        __be32          di_ctime;       /* time created */
  48        __be32          di_gen;         /* generation number */
  49        __be16          di_numextents;  /* # of extents */
  50        u_char          di_version;     /* version of inode */
  51        u_char          di_spare;       /* spare - used by AFS */
  52        union di_addr {
  53                efs_extent      di_extents[EFS_DIRECTEXTENTS];
  54                efs_devs        di_dev; /* device for IFCHR/IFBLK */
  55        } di_u;
  56};
  57
  58/* efs inode storage in memory */
  59struct efs_inode_info {
  60        int             numextents;
  61        int             lastextent;
  62
  63        efs_extent      extents[EFS_DIRECTEXTENTS];
  64        struct inode    vfs_inode;
  65};
  66
  67#endif  /* __EFS_FS_I_H__ */
  68
  69