Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 |