dentry结构体和inode结构体

匿名 (未验证) 提交于 2019-12-03 00:34:01

dentry结构体相关信息:

 struct ext2_dir_entry_2 {     __u32   inode;          /* 文件的inode号 */     __u16   rec_len;        /* 目录项长度 */     __u8    name_len;       /* 文件名包含的字符数 */     __u8    file_type;         /* 文件类型 */     char    name[EXT2_NAME_LEN];    /* 文件名 */  };

rec_len代表当前目录项的长度
name_len代表的是文件名的长度



file_type代表文件的文件类型,有以下几种:

enum {            EXT2_FT_UNKNOWN,      /*未知*/            EXT2_FT_REG_FILE,       /*常规文件*/            EXT2_FT_DIR,           /*目录文件*/            EXT2_FT_CHRDEV,       /*字符设备文件*/            EXT2_FT_BLKDEV,        /*块设备文件*/            EXT2_FT_FIFO,          /*命名管道文件*/            EXT2_FT_SOCK,         /*套接字文件*/            EXT2_FT_SYMLINK,      /*符号连文件*/            EXT2_FT_MAX          /*文件类型的最大个数*/   };  

inode结构体详细信息:

 struct ext2_inode {     __u16   i_mode;     /*  文件的权限  */     __u16   i_uid;      /* 文件所有者ID  */     __u32   i_size;     /* 文件字节数大小 */     __u32   i_atime;    /* 文件上次被访问的时间  */     __u32   i_ctime;    /* 文件创建时间 */     __u32   i_mtime;    /* 文件被修改的时间 */     __u32   i_dtime;    /* 文件被删除的时间 */     __u16   i_gid;      /* 文件所属组ID */     __u16   i_links_count;  /* 此文件的inode被连接的次数 */     __u32   i_blocks;   /* Blocks count */     __u32   i_flags;    /* File flags */     union {         struct {             __u32  l_i_reserved1;         } linux1;         struct {             __u32  h_i_translator;         } hurd1;         struct {             __u32  m_i_reserved1;         } masix1; } osd1;             /* OS dependent 1 */     __u32   i_block[EXT2_N_BLOCKS];/*  指向存储文件数据的块的数组 */     __u32   i_generation;   /* File version (for NFS) */     __u32   i_file_acl; /* File ACL */     __u32   i_dir_acl;  /* Directory ACL */     __u32   i_faddr;    /* Fragment address */     union {         struct {             __u8    l_i_frag;   /* Fragment number */             __u8    l_i_fsize;  /* Fragment size */             __u16   i_pad1;             __u16   l_i_uid_high;   /* these 2 fields    */             __u16   l_i_gid_high;   /* were reserved2[0] */             __u32   l_i_reserved2;         } linux2;         struct {             __u8    h_i_frag;   /* Fragment number */             __u8    h_i_fsize;  /* Fragment size */             __u16   h_i_mode_high;             __u16   h_i_uid_high;             __u16   h_i_gid_high;             __u32   h_i_author;         } hurd2;         struct {             __u8    m_i_frag;   /* Fragment number */             __u8    m_i_fsize;  /* Fragment size */             __u16   m_pad1;             __u32   m_i_reserved2[2];         } masix2;     } osd2;             /* OS dependent 2 */  };


图1-文件索引过程

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!