iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux中文件系统truncate.c详解
  • 801
分享到

Linux中文件系统truncate.c详解

文件系统truncate.clinux文件系统truncate.c 2023-03-24 10:03:18 801人浏览 安东尼
摘要

目录linux-0.11 文件系统truncate.c详解free_indfree_dindtruncateLinux-0.11 文件系统truncate.c详解 free_ind static void free_in

目录
  • linux-0.11 文件系统truncate.c详解
    • free_ind
    • free_dind
    • truncate

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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: Linux中文件系统truncate.c详解

本文链接: https://www.lsjlt.com/news/201114.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux中文件系统truncate.c详解
    目录linux-0.11 文件系统truncate.c详解free_indfree_dindtruncateLinux-0.11 文件系统truncate.c详解 free_ind static void free_in...
    99+
    2023-03-24
    文件系统truncate.c linux 文件系统truncate.c
  • Linux中文件系统truncate.c源码分析
    这篇文章主要讲解了“Linux中文件系统truncate.c源码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中文件系统truncate.c源码分析”吧!Linux-0.11 ...
    99+
    2023-07-05
  • Windows系统中的DLL文件详解
    DLL(Dynamic Link Library)文件是Windows系统中的一种动态链接库文件,它包含了一组可被应用程序调用的函数...
    99+
    2023-09-15
    Windows
  • 【Linux】文件系统
    ​🌠 作者:@阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们...
    99+
    2023-09-09
    linux 服务器 运维 文件系统
  • 如何理解Linux系统中的虚拟文件系统
    这篇文章主要介绍“如何理解Linux系统中的虚拟文件系统”,在日常操作中,相信很多人在如何理解Linux系统中的虚拟文件系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Linux系统中的虚拟文件系统...
    99+
    2023-06-12
  • Linux系统有哪些解压文件的方式?详解
    Linux系统中有多种解压文件的方式,以下为详细解释: tar命令 .tar文件是Linux系统中的一种归档文件格式,可以使用tar命令将其解压。语法如下: ``` tar -xvf 文件名.tar ``` 其中,x表示解压操作,v表示输...
    99+
    2023-08-31
    linux 服务器 centos 运维 bash
  • Linux系统下如何使用C++解析json文件详解
    1. 背景 工作需要,下班回来自己造轮子,记录以后查阅。 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要Lin...
    99+
    2024-04-02
  • Linux系统中的文件传输
    目录 一、文件传输 二、文档的归档压缩 总结 实验环境: 需要2台主机并且保证两台主机可以通信 systemctl disable firewalld        设定防火墙开启不启动 systemctl stop firewalld...
    99+
    2023-09-20
    linux 服务器 运维
  • Linux系统中怎么开启Initrd文件系统
    Linux系统中怎么开启Initrd文件系统,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。initial RAM diskLinux初始RAM磁盘(initrd)是在系统引...
    99+
    2023-06-12
  • Linux系统如何解压zip文件
    本篇文章为大家展示了Linux系统如何解压zip文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。zip是最流行也是最广泛的一种压缩方法,那么在Linux系统中如何解压呢?先决条件:检查你是否安装了...
    99+
    2023-06-28
  • 怎么解析Linux系统中的/etc/shadow文件
    这篇文章给大家介绍怎么解析Linux系统中的/etc/shadow文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“...
    99+
    2023-06-05
  • Linux系统怎样解压7z文件
    Linux系统怎样解压7z文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。7z 是一种主流高效的压缩格式,它拥有极高的压缩比,在计算机科学中,7z是一种可以使用多种压缩算...
    99+
    2023-06-28
  • node.js文件系统之文件写入实例详解
    目录前言一、语法格式二、参数解读三、实例演示1.打开vsc创建一个js文件,保存在自己的文件夹内2.在js文件中写入一下代码3.运行4.结果显示总结前言 Hello,各位小伙伴们,我...
    99+
    2023-03-06
    nodejs文件写入 nodejs读取文件内容 nodejs流写入文件
  • Linux系统中常见的文件系统有哪些?
      Linux系统是现在非常受欢迎的操作系统,在Linux之中,一切都是文件,因为有很多操作都是依靠文件系统才可以完成的,而且文件系统可以满足用户正常的使用,那么Linux中常见的文件系统有哪些为大家介绍一下。  总体来说,在Linux之中...
    99+
    2023-06-05
  • Linux系统中怎么统计文件夹下文件数量
    这篇文章主要讲解了“Linux系统中怎么统计文件夹下文件数量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统中怎么统计文件夹下文件数量”吧!一种是:代码如下:ls -l |gre...
    99+
    2023-06-10
  • 详解Linux内核编译配置(menuconfig)、文件系统制作
    Linux内核编译配置(menuconfig)是指通过命令make menuconfig来配置Linux内核的编译选项。menuco...
    99+
    2023-09-21
    linux
  • Linux系统中怎么创建文件
    Linux系统中怎么创建文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。对应英文:touch命令:touch [目录名]作用:如果文件不存在,新建文件Linu...
    99+
    2023-06-28
  • linux系统中怎么查找文件
    今天给大家介绍一下linux系统中怎么查找文件。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。Linux系统中查找文件有两个方法:第一种方法是就是使用find命...
    99+
    2023-06-28
  • Linux系统中sz和rz命令详解(文件传输、上传、下载)
    rz和sz是Linux/Unix同Windows进行Zmodem文件传输的命令工具,都使用Zmodem文件传输协议。 rz: receive zmodem的缩写,运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器。sz:...
    99+
    2023-08-31
    linux 运维 服务器 sz rz
  • Linux系统中怎么拷贝文件
    Linux系统中怎么拷贝文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先,无论本地还是远程,需要移动或拷贝的文件较多且都不太大时,用cp命令和mv命令效率较低,可以先使用...
    99+
    2023-06-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作