diff options
author | Al Smith <Al.Smith@aeschi.ch.eu.org> | 1999-03-31 11:25:39 +0000 |
---|---|---|
committer | Al Smith <Al.Smith@aeschi.ch.eu.org> | 1999-03-31 11:25:39 +0000 |
commit | ae7b6b442dd0b4578271a10c9bdd5886e0ee51af (patch) | |
tree | 9ee350dc43910e06d371c3e34f5046efafc78796 /include/linux/efs_fs_i.h | |
parent | 211c1c4bf211531809d6812de0386ffa806948be (diff) |
Updated efs files for efs-0.97.
Diffstat (limited to 'include/linux/efs_fs_i.h')
-rw-r--r-- | include/linux/efs_fs_i.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/include/linux/efs_fs_i.h b/include/linux/efs_fs_i.h new file mode 100644 index 000000000..60e21fc6f --- /dev/null +++ b/include/linux/efs_fs_i.h @@ -0,0 +1,62 @@ +/* + * efs_fs_i.h + * + * Copyright (c) 1999 Al Smith + * + * Portions derived from IRIX header files (c) 1988 Silicon Graphics + */ + +#ifndef __EFS_FS_I_H__ +#define __EFS_FS_I_H__ + +typedef int32_t efs_block_t; +typedef uint32_t efs_ino_t; + +#define EFS_DIRECTEXTENTS 12 + +/* + * layout of an extent, in memory and on disk. 8 bytes exactly + */ +typedef union extent_u { + struct extent_s { + unsigned int ex_magic:8; /* magic # (zero) */ + unsigned int ex_bn:24; /* basic block */ + unsigned int ex_length:8; /* numblocks in this extent */ + unsigned int ex_offset:24; /* logical offset into file */ + } cooked; + unsigned char raw[8]; +} efs_extent; + +/* + * extent based filesystem inode as it appears on disk. The efs inode + * is exactly 128 bytes long. + */ +struct efs_dinode { + u_short di_mode; /* mode and type of file */ + short di_nlink; /* number of links to file */ + u_short di_uid; /* owner's user id */ + u_short di_gid; /* owner's group id */ + int32_t di_size; /* number of bytes in file */ + int32_t di_atime; /* time last accessed */ + int32_t di_mtime; /* time last modified */ + int32_t di_ctime; /* time created */ + uint32_t di_gen; /* generation number */ + short di_numextents; /* # of extents */ + u_char di_version; /* version of inode */ + u_char di_spare; /* spare - used by AFS */ + union di_addr { + efs_extent di_extents[EFS_DIRECTEXTENTS]; + dev_t di_dev; /* device for IFCHR/IFBLK */ + } di_u; +}; + +/* efs inode storage in memory */ +struct efs_inode_info { + int numextents; + int lastextent; + + efs_extent extents[EFS_DIRECTEXTENTS]; +}; + +#endif /* __EFS_FS_I_H__ */ + |