| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
|  | 12 | typedef	int32_t		efs_block_t; | 
|  | 13 | typedef 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 | */ | 
|  | 20 | typedef 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 |  | 
|  | 30 | typedef 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 | */ | 
|  | 39 | struct	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 */ | 
|  | 59 | struct 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 |  |