Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 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 | short odev; |
||
32 | unsigned int 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 | u_short di_mode; /* mode and type of file */ |
||
41 | short di_nlink; /* number of links to file */ |
||
42 | u_short di_uid; /* owner's user id */ |
||
43 | u_short di_gid; /* owner's group id */ |
||
44 | int32_t di_size; /* number of bytes in file */ |
||
45 | int32_t di_atime; /* time last accessed */ |
||
46 | int32_t di_mtime; /* time last modified */ |
||
47 | int32_t di_ctime; /* time created */ |
||
48 | uint32_t di_gen; /* generation number */ |
||
49 | short 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 |