Home | History | Annotate | Download | only in linux
      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 
     69