1 #ifndef __PFS_INODE_H__
2 #define __PFS_INODE_H__
4 /* Inode table. This table holds inodes that are currently in use.
10 mode_t i_mode
; /* file type, protection, etc. */
11 nlink_t i_nlinks
; /* how many links to this file */
12 uid_t i_uid
; /* user id of the file's owner */
13 gid_t i_gid
; /* group number */
14 off_t i_size
; /* current file size in bytes */
15 time_t i_atime
; /* time of last access (V2 only) */
16 time_t i_mtime
; /* when was file data last changed */
17 time_t i_ctime
; /* when was inode itself changed (V2 only)*/
19 /* The following items are not present on the disk. */
20 dev_t i_dev
; /* which device is the inode on */
21 dev_t i_rdev
; /* which special device is the inode on */
22 ino_t i_num
; /* inode number on its (minor) device */
23 int i_count
; /* # times inode used; 0 means slot is free */
24 char i_update
; /* the ATIME, CTIME, and MTIME bits are here */
26 LIST_ENTRY(inode
) i_hash
; /* hash list */
27 TAILQ_ENTRY(inode
) i_unused
; /* free and unused list */
30 } inode
[PFS_NR_INODES
];
32 /* list of unused/free inodes */
33 EXTERN
TAILQ_HEAD(unused_inodes_t
, inode
) unused_inodes
;
36 EXTERN
LIST_HEAD(inodelist
, inode
) hash_inodes
[INODE_HASH_SIZE
];