Linux中文件系统truncate.c详解
Linux-0.11 文件系统truncate.c详解
free_ind
static void free_ind(int dev,int block)
该函数的作用是释放所有的一次间接块。
该函数首先读取一次间接块到bh中, 该bh块中存储了512个盘块号。
struct buffer_head * bh; unsigned short * p; int i; if (!block) return; if ((bh=bread(dev,block))) {
接下来就对这512个盘块号进行遍历,如果盘块号不为0, 就调用free_block(bitmap.c中)释放该盘块。遍历完毕之后,将一次间接块的bh块引用计数减1。最后将这个一次间接块也进行释放。
for (i=0;i<512;i++,p++) if (*p) free_block(dev,*p); brelse(bh); free_block(dev,block);
free_dind
static void free_dind(int dev,int block)
该函数的作用就是释放所有的二次间接块。
该函数首先对盘块号的有效性进行校验。
struct buffer_head * bh; unsigned short * p; int i; if (!block) return;
接着读取二次间接块到bh中, 该bh块中存储了512个一次间接块的盘块号。
接下来就对这512个一次间接块的盘块号进行遍历,如果盘块号不为0, 就调用free_ind释放该一次间接块所有的block。遍历完毕之后,将二次间接块的bh块引用计数减1。最后将这个二次间接块也进行释放。
if ((bh=bread(dev,block))) { p = (unsigned short *) bh->b_data; for (i=0;i<512;i++,p++) if (*p) free_ind(dev,*p); brelse(bh); } free_block(dev,block);
truncate
void truncate(struct m_inode * inode)
该函数的作用是释放该inode所占据的磁盘空间。 该函数在iput函数(inode.c)中如果文件的链接数为0的时候被调用。
代码最开始检查如果不是常规文件或者是目录文件,就跳过。
int i; if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode))) return;
释放直接引用块。
for (i=0;i<7;i++) if (inode->i_zone[i]) { free_block(inode->i_dev,inode->i_zone[i]); inode->i_zone[i]=0; }
释放一次间接块和二次间接块。
free_ind(inode->i_dev,inode->i_zone[7]); free_dind(inode->i_dev,inode->i_zone[8]);
将一次间接块和二次间接块的地址置为0。将inode的size置为0, 将该inode设置为含有脏数据, 最后将inode的修改时候和创建时间都修改为当前时间。
inode->i_zone[7] = inode->i_zone[8] = 0; inode->i_size = 0; inode->i_dirt = 1; inode->i_mtime = inode->i_ctime = CURRENT_TIME;
到此这篇关于Linux中文件系统truncate.c详解的文章就介绍到这了,更多相关文件系统truncate.c内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Linux强制释放占用端口以及Linux防火墙端口开放方法详解
在linux系统中安装一些软件时有时遇到端口被占用的情况,本文为大家介绍了遇到这种情况我们应该怎么处理2018-10-10ubuntu中python调用C/C++方法之动态链接库详解
这篇文章主要给大家介绍了关于如何在ubuntu中python调用C/C++方法之动态链接库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧2018-11-11Apache APISIX Dashboard 未授权访问漏洞分析(CVE-2021-45232)
Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能,这篇文章主要介绍了Apache APISIX Dashboard 未授权访问漏洞(CVE-2021-45232),需要的朋友可以参考下2023-03-03
最新评论