-struct inode {
- char i_flag;
- char i_count; /* reference count */
- dev_t i_dev; /* device where inode resides */
- ino_t i_number; /* i number, 1-to-1 with device address */
-/* begin read from disk */
- u_short i_mode;
- short i_nlink; /* directory entries */
- short i_uid; /* owner */
- short i_gid; /* group of owner */
- off_t i_size; /* size of file */
- union {
- struct i_f {
- daddr_t if_addr[NADDR]; /* if normal file/directory */
- daddr_t if_lastr; /* last read (read-ahead) */
- } i_f;
- struct i_d {
- daddr_t id_rdev; /* i_addr[0] */
- } i_d;
- struct i_s {
- struct socket *is_socket;
- } i_s;
-#define i_addr i_f.if_addr
-#define i_lastr i_f.if_lastr
-#define i_rdev i_d.id_rdev
-#define i_socket i_s.is_socket
- } i_un;
-/* end read from disk */
- short i_XXXXXX; /* ### */
-/* SHOULD USE POINTERS, NOT INDICES, FOR HAS CHAIN */
- short i_hlink; /* link in hash chain (iget/iput/ifind) */
-};