-struct inode {
- struct inode *i_chain[2]; /* must be first */
- u_short i_flag;
- u_short i_count; /* reference count */
- dev_t i_dev; /* device where inode resides */
- u_short i_shlockc; /* count of shared locks on inode */
- u_short i_exlockc; /* count of exclusive locks on inode */
- ino_t i_number; /* i number, 1-to-1 with device address */
- struct fs *i_fs; /* file sys associated with this inode */
- struct dquot *i_dquot; /* quota structure controlling this file */
- union {
- daddr_t if_lastr; /* last read (read-ahead) */
- struct socket *is_socket;
- struct {
- struct inode *if_freef; /* free list forward */
- struct inode **if_freeb; /* free list back */
- } i_fr;
- } i_un;
- struct icommon
- {
- u_short ic_mode; /* 0: mode and type of file */
- short ic_nlink; /* 2: number of links to file */
- short ic_uid; /* 4: owner's user id */
- short ic_gid; /* 6: owner's group id */
- quad ic_size; /* 8: number of bytes in file */
- time_t ic_atime; /* 16: time last accessed */
- long ic_atspare;
- time_t ic_mtime; /* 24: time last modified */
- long ic_mtspare;
- time_t ic_ctime; /* 32: last time inode changed */
- long ic_ctspare;
- daddr_t ic_db[NDADDR]; /* 40: disk block addresses */
- daddr_t ic_ib[NIADDR]; /* 88: indirect blocks */
- long ic_flags; /* 100: status, currently unused */
- long ic_blocks; /* 104: blocks actually held */
- long ic_spare[5]; /* 108: reserved, currently unused */
- } i_ic;
-};
-