今天,我们看一下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;__u32  i_prealloc_count;__u32  i_dir_start_lookup;/*配置了CONFIG_EXT2_FS_XATTR宏才会有的属性操作的信号量*/
#ifdef CONFIG_EXT2_FS_XATTRstruct rw_semaphore xattr_sem;
#endif/*配置了CONFIG_EXT2_FS_POSIX_ACL宏才会有的属性操作的acl操作结构体,之前讲过的哦*/
#ifdef CONFIG_EXT2_FS_POSIX_ACLstruct posix_acl *i_acl;struct posix_acl *i_default_acl;
#endifrwlock_t i_meta_lock;/*我们一般用到的inode结构体就是这个*/struct inode  vfs_inode;
};/*ext2的标记位,这个标识ext2刚刚建立*/
#define EXT2_STATE_NEW          0x00000001 /* inode is newly created *//*从inode结构体获得ext2_inode_info的函数,直接通过container_of宏,上边我们刚讲过,vfs_inode就是此处的inode*/
static inline struct ext2_inode_info *EXT2_I(struct inode *inode)
{return container_of(inode, struct ext2_inode_info, vfs_inode);
}/* balloc.c的函数声明,我们都讲过的哦 */
extern int ext2_bg_has_super(struct super_block *sb, int group);
extern unsigned long ext2_bg_num_gdb(struct super_block *sb, int group);
extern int ext2_new_block (struct inode *, unsigned long,__u32 *, __u32 *, int *);
extern void ext2_free_blocks (struct inode *, unsigned long,unsigned long);
extern unsigned long ext2_count_free_blocks (struct super_block *);
extern unsigned long ext2_count_dirs (struct super_block *);
extern void ext2_check_blocks_bitmap (struct super_block *);
extern struct ext2_group_desc * ext2_get_group_desc(struct super_block * sb,unsigned int block_group,struct buffer_head ** bh);/* dir.c的函数声明,我们都讲过的哦 */
extern int ext2_add_link (struct dentry *, struct inode *);
extern ino_t ext2_inode_by_name(struct inode *, struct dentry *);
extern int ext2_make_empty(struct inode *, struct inode *);
extern struct ext2_dir_entry_2 * ext2_find_entry (struct inode *,struct dentry *, struct page **);
extern int ext2_delete_entry (struct ext2_dir_entry_2 *, struct page *);
extern int ext2_empty_dir (struct inode *);
extern struct ext2_dir_entry_2 * ext2_dotdot (struct inode *, struct page **);
extern void ext2_set_link(struct inode *, struct ext2_dir_entry_2 *, struct page *, struct inode *);/* fsync.c 的函数声明*/
extern int ext2_sync_file (struct file *, struct dentry *, int);/* ialloc.c的函数声明 */
extern struct inode * ext2_new_inode (struct inode *, int);
extern void ext2_free_inode (struct inode *);
extern unsigned long ext2_count_free_inodes (struct super_block *);
extern void ext2_check_inodes_bitmap (struct super_block *);
extern unsigned long ext2_count_free (struct buffer_head *, unsigned);/* inode.c的函数声明 */
extern void ext2_read_inode (struct inode *);
extern int ext2_write_inode (struct inode *, int);
extern void ext2_put_inode (struct inode *);
extern void ext2_delete_inode (struct inode *);
extern int ext2_sync_inode (struct inode *);
extern void ext2_discard_prealloc (struct inode *);
extern int ext2_get_block(struct inode *, sector_t, struct buffer_head *, int);
extern void ext2_truncate (struct inode *);
extern int ext2_setattr (struct dentry *, struct iattr *);
extern void ext2_set_inode_flags(struct inode *inode);
extern void ext2_get_inode_flags(struct ext2_inode_info *);/* ioctl.c的函数声明 */
extern int ext2_ioctl (struct inode *, struct file *, unsigned int,unsigned long);
extern long ext2_compat_ioctl(struct file *, unsigned int, unsigned long);/* namei.c的函数声明 */
struct dentry *ext2_get_parent(struct dentry *child);/* super.c的函数声明 */
extern void ext2_error (struct super_block *, const char *, const char *, ...)__attribute__ ((format (printf, 3, 4)));
extern void ext2_warning (struct super_block *, const char *, const char *, ...)__attribute__ ((format (printf, 3, 4)));
extern void ext2_update_dynamic_rev (struct super_block *sb);
extern void ext2_write_super (struct super_block *);/** Inodes和files结构体的函数操作结构体集合*//* dir.c文件里的*/
extern const struct file_operations ext2_dir_operations;/* file.c文件里的 */
extern const struct inode_operations ext2_file_inode_operations;
extern const struct file_operations ext2_file_operations;
extern const struct file_operations ext2_xip_file_operations;/* inode.c文件里的 */
extern const struct address_space_operations ext2_aops;
extern const struct address_space_operations ext2_aops_xip;
extern const struct address_space_operations ext2_nobh_aops;/* namei.c文件里的 */
extern const struct inode_operations ext2_dir_inode_operations;
extern const struct inode_operations ext2_special_inode_operations;/* symlink.c文件里的 */
extern const struct inode_operations ext2_fast_symlink_inode_operations;
extern const struct inode_operations ext2_symlink_inode_operations;

ext2文件系统源代码之ext2.h相关推荐

  1. ext2文件系统源代码之dir.c

    今天我们来看ext2源代码的dir.c文件,这个文件是做和目录有关的操作的,也是很重要的一个文件,大家认真看哦,有什么和我不一致的大家一起探讨~~ 在讲这个之前我觉得还是先说下ext2文件系统的目录方 ...

  2. ext2文件系统源代码之super.c

    今天来看一个ext2文件系统里的super.c文件,这个文件的内容是文件系统里的超级块的相关函数,对于文件系统有很大的重要性,并且这个文件也很长,好啦,我们开始看吧. /* 日常作者信息* linux ...

  3. 构建小型Linux跟文件系统镜像(Ext2 或 Ext3)

    1,构建镜像文件(100M) mkdir work dd if=/dev/zero of=/work/linux_root.img bs=1k count=100000 100000+0 record ...

  4. Linux ext2文件系统小结

    本文来源:http://learn.akae.cn/media/ch29s02.html 有修改 1.ext2文件系统整体布局 一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs ...

  5. ext2文件系统了解

    一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息.下以ext2文件系统为例说明文件 ...

  6. Linux 文件系统及 ext2 文件系统

    linux 支持的文件系统类型 Ext2:     有点像 UNIX 文件系统.有 blocks,inodes,directories 的概念. Ext3:     Ext2 的加强版,添加了日志的功 ...

  7. Linux EXT2文件系统结构分析(详情见附件)

    Linux的第一个版本是基于Minix文件系统的.当 Linux成熟时,引入了扩展文件系统(Ext FS) ,它包含了几个重要的扩展,但提供的性能不令人满意.在 1994 年引入了第二扩展文件系统(s ...

  8. ext2文件系统 - mke2fs

      上一遍博文的重点其实将ext2整体的组织框架,我们知道了ext2文件系统由块组组成,每个块组里面的组织形式.我们甚至直接把超级块和组描述符里面的内容,用十六进制形式展现了出来.这篇博文主要讲述如何 ...

  9. 转:ext2文件系统详解

    第一部分磁盘的物理组成 磁盘的基本概念: 扇区为最小的物理存储单位,每个扇区为512字节. 将扇区组成一个圆,那就是柱面,柱面是分区的最小单位. 第一个扇区很重要,里面有硬盘主引导记录(Masterb ...

  10. ext显示服务器文件,使用linux的fsck.ext2命令检查及修复ext2文件系统

    使用linux的fsck.ext2命令检查及修复ext2文件系统 发布时间:2020-07-18 13:40:16 来源:亿速云 阅读:138 作者:清晨 栏目:服务器 不懂使用linux的fsck. ...

最新文章

  1. TCP/UDP协议基本概念
  2. Linux 忘记root密码(记录)
  3. 关于loadtxt编码问题的解决方法
  4. 配置Apache时出错及解决方法
  5. ASP.NET Core微服务(六)——【redis操作】
  6. 举例介绍活动目录的优势
  7. oracle分页查询加总数,oracle count 百万级 分页查询记要总数、总条数优化
  8. 倒计时 3 天!1024 程序员节全日程曝光,105 场深度演讲点燃数字经济新时代
  9. pde中微元分析法的主要思想_有限元方法的核心思想
  10. 今年Q3发布!小米12至尊版曝光:升级骁龙8 Plus处理器
  11. Android——手机系统重装的备忘笔记
  12. oracle sql取查询结果第一条,SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
  13. java http get_「面小易-面经12」阿里巴巴Java方向面试题汇总(含答案)
  14. 服务器性能测试 iometer 测试io
  15. python webpy 开发文档_Python webpy微信公众号开发之 回复图文消息
  16. java 石头剪刀布_java循环练习:石头剪刀布
  17. 家长会计算机教师致辞,家长会教师致辞最新
  18. 京东白条三道坎:“白条”如何吸金?
  19. OPPO A59m刷机包|OPPO A59m官方线刷包救砖
  20. 微信分享,缩略图显示不出来

热门文章

  1. CAJ VIEWER 7.2 已停止工作(正确的处理方法,最快最正确的方法,网上的其他方法也就是看看,很难找到问题的正确办法)
  2. 写给初学者:电气制图规范和图纸识读方法——第三期
  3. 关于AD9各种布线总结(很详细)
  4. 在线流程图绘制网站gliffy
  5. 快来试试这几个照片拼图软件,效果很不错
  6. SQL中字符串拼接方法(MySQL,SQLServer)
  7. 串口屏和并口屏的区别?
  8. COM组件注册DLL不成功
  9. 进销存excel_Excel进销存管理套表,自动库存显示应收应付,全函数快捷轻松
  10. 《统一沟通-微软-实战》-6-部署-2-中介服务器-2-安装中介服务器