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