Chinaunix首页 | 论坛 | 博客
  • 博客访问: 823112
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4136
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-21 00:52
个人简介

余自庚寅年麦月误入Linux领域,先从事文件系统与IO之技,后及性能基准之术,上诸述之领域,吾虽有知晓,然未能精通,实为憾事!

文章存档

2016年(8)

2014年(9)

2013年(14)

分类: LINUX

2014-01-08 19:56:37

1. EXT4_IOC_GETVERSION获取文件的版本号

Ext4 EXT4_IOC_GETVERSION命令用于获取文件的版本号(inode.i_generation),将获取的文件版本号传给ioctl的第三个参数unsigned int arg

 ioctl(fd, EXT4_IOC_GETVERSION, arg )

2.  EXT4_IOC_SETVERSION设置文件的版本号

Ext4 EXT4_IOC_SETVERSION命令用于设置文件的版本号,将要设置的最终版本号作为ioctl的第三个参数unsigned int arg传入ioctl函数中:

 ioctl(fd, EXT4_IOC_SETVERSION, arg )

3.  设置文件版本号的操作过程

(1)    首先确定用户对文件具有访问权限且对文件所在的文件系统具有写权限(因为设置inode标志成功会引起元数据更新操作)。并将用户设置的文件版本号(ioctl命令的第三个参数)拷贝到内核空间。

(2)    发起一个日志事务,用于后面提交日志事务时更新inode

(3)    在日志中建立元数据更新事务,用于更新inode元数据;

(4)    更新inode元数据,设置新的文件版本号,更新inode到磁盘;

(5)    结束日志事务处理;

(6)    结束对文件系统的写操作;

阅读(5069) | 评论(0) | 转发(6) |
给主人留下些什么吧!~~