今天,我们看一下ext2文件系统源代码里面的ext2.h文件,这是一个头文件,里边都是一些函数的声明和一些结构体的定义,很多引用ext2的函数的地方都需要包含这个头文件,所以这个头文件用处是很广泛的,但是这个文件很简单,并且还很短,这就让我们理解变得很轻松了。
#include <linux/fs.h>
#include <linux/ext2_fs.h>
/*ext2挂载选项结构体*/
struct ext2_mount_options {
/*挂载选项位图*/
unsigned long s_mount_opt;
/*保存用户id和保存组id*/
uid_t s_resuid;
gid_t s_resgid;
};
/*在内存里的ext2文件系统的inode信息数据*/
struct ext2_inode_info {
__le32 i_data[15];
__u32 i_flags;
__u32 i_faddr;
__u8 i_frag_no;
__u8 i_frag_size;
__u16 i_state;
__u32 i_file_acl;
__u32 i_dir_acl;
__u32 i_dtime;
/*i_block_group是这个文件的inode所在的块组号码,ext2文件系统分配block的时候尽量使得block和他的inode在一个块组,分配inode的时候尽量使得inode和它的父目录的inode在一个块组 */
__u32 i_block_group;
/*i_next_alloc_block记录最近分配的块的逻辑编号,这个名字取得不是很好 */
__u32 i_next_alloc_block;
/*i_next_alloc_goal记录最近分配的块的物理编号,这个变量给了我们下一次分配的优先位置*/
__u32 i_next_alloc_goal;
__u32 i_prealloc_block;
__u