Inode的基本资料蛮多,在此我很简略的跟各位介绍一下
unsigned long i_ino;
每一个
Inode都有一个序号,经由super block
结构和其序号,我们可以很轻易的找到这个
Inode。
unsigned int i_count;
在Kernel里,很多的
结构都会记录其reference count,以确保如果某个
结构正在使用,它不会被不小心释放掉,i_count就是其reference count。
kdev_t i_dev; /*
Inode所在的device代码 */
umode_t i_mode; /*
Inode的权限 */
nlink_t i_nlink; /* hard link的个数 */
uid_t i_uid; /*
Inode拥有者的id */
gid_t i_gid; /*
Inode所属的群组id */
kdev_t i_rdev; /* 如果
Inode代表的是device的话,
那此字段将记录device的代码 */
off_t i_size; /*
Inode所代表的档案大小 */
time_t i_atime; /*
Inode最近一次的存取时间 */
time_t i_mtime; /*
Inode最近一次的修改时间 */
time_t i_ctime; /*
Inode的产生时间 */
unsigned long i_blksize; /*
Inode在做IO时的区块大小 */
unsigned long i_blocks; /*
Inode所使用的block数,一个block为512 byte*/
unsigned long i_version; /* 版本号码 */
unsigned long i_nrpages; /*
Inode所使用的page个数 */
struct page *i_pages;
/*
Inode使用的page会被放在串行里,这个字段记录着此串行的开头 */
struct super_block *i_sb; /*
Inode所属档案系统的super block */
unsigned long i_state;
/*
Inode目前的状态,可以是I_DIRTY,I_LOCK和 I_FREEING的OR组合 */
unsigned int i_flags; /* 记录此
Inode的参数 */
unsigned char i_pipe; /* 用来记录此
Inode是否为pipe */
unsigned char i_sock; /* 用来记录此
Inode是否为socket */
unsigned int i_attr_flags; /* 用来记录此
Inode的属性参数 */
struct file_lock *i_flock; /* 用来做file lock */