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

Linux中文件系统truncate.c源码分析

2023-07-05 16:07:50 864人浏览 薄情痞子
摘要

这篇文章主要讲解了“linux中文件系统truncate.c源码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中文件系统truncate.c源码分析”吧!Linux-0.11

这篇文章主要讲解了“linux中文件系统truncate.c源码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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源码分析”的内容了,经过本文的学习后,相信大家对Linux中文件系统truncate.c源码分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Linux中文件系统truncate.c源码分析

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

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

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

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

下载Word文档
猜你喜欢
  • Linux中文件系统truncate.c源码分析
    这篇文章主要讲解了“Linux中文件系统truncate.c源码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中文件系统truncate.c源码分析”吧!Linux-0.11 ...
    99+
    2023-07-05
  • 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文件系统
    这篇文章主要为大家分析了如何分析Linux文件系统的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何分析Linux文件系统”的知识吧。用计算机都需要在硬盘驱...
    99+
    2023-06-28
  • linux系统中文件I/O的示例分析
    小编给大家分享一下linux系统中文件I/O的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!linux 文件I/O一,文件描述符对内核而言,所以打开的文件...
    99+
    2023-06-13
  • Node.js模块系统源码分析
    这篇文章主要介绍“Node.js模块系统源码分析”,在日常操作中,相信很多人在Node.js模块系统源码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js模块系...
    99+
    2024-04-02
  • nodejs模块系统源码分析
    目录概述CommonJS 规范Node 对 CommonJS 规范的实现模块导出以及引用模块系统实现分析模块定位加载策略模块加载模块文件处理后缀处理编译执行概述 Node.js的出现...
    99+
    2024-04-02
  • 如何分析Linux系统日志文件
    这篇文章的内容主要围绕如何分析Linux系统日志文件进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!在Linux系统中日志是一个非常重要的文件,日志文...
    99+
    2023-06-28
  • Linux系统DNS文件的示例分析
    这篇文章将为大家详细讲解有关Linux系统DNS文件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DNS一般指域名系统。DNS是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库...
    99+
    2023-06-28
  • linux中根文件系统挂载的示例分析
    这篇文章主要介绍linux中根文件系统挂载的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!st1\:*{behavior:url(#ieooui) }一:前言前段时间在编译kernel的时候发现rootfs挂...
    99+
    2023-06-12
  • Linux系统备份文件的示例分析
    这篇文章的内容主要围绕Linux系统备份文件的示例分析进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!一、备份服务器配置rsync文件 vi /etc...
    99+
    2023-06-28
  • Linux文件系统权限的示例分析
    小编给大家分享一下Linux文件系统权限的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!理解 ls 命令的输出在讨论如何修改权限之前,我们需要知道如何查看权限。通过 ls 命令的长列表参数(-l)为我们提供了有关文...
    99+
    2023-06-16
  • 如何分析Linux系统磁盘和文件系统管理
    今天就跟大家聊聊有关如何分析Linux系统磁盘和文件系统管理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 分区MBR(Master Boot Recorder)主引导分区仅提供最多...
    99+
    2023-06-17
  • RocketMQ broker文件清理源码分析
    本篇内容介绍了“RocketMQ broker文件清理源码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. broker 清...
    99+
    2023-07-05
  • Linux下常见文件系统的示例分析
    这篇文章主要介绍了Linux下常见文件系统的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。历史文件系统创建者创建时间最开始支持的平台ext2R&eacute;...
    99+
    2023-06-16
  • Linux中文件系统及一些命令的示例分析
    这篇文章主要介绍了Linux中文件系统及一些命令的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。磁盘分区和文件系统    1.1 硬盘分区&nbs...
    99+
    2023-06-05
  • linux中磁盘与文件系统管理的示例分析
    这篇文章将为大家详细讲解有关linux中磁盘与文件系统管理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。====三个重要的概念====* super block:记录文件系统的整体信息,包括in...
    99+
    2023-06-13
  • python文件读写操作源码分析
    本篇内容介绍了“python文件读写操作源码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!文件写操作的案例# 打开文件(只写模...
    99+
    2023-07-05
  • python源文件中字符编码的示例分析
    这篇文章将为大家详细讲解有关python源文件中字符编码的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pyth...
    99+
    2023-06-14
  • 同城外卖跑腿系统源码分析
    外卖订餐已经成为很多“社畜”日常不可分割的一部分,足不出户,只需要一部电子设备即可在线订餐,并且可提供的选择非常多样化,与传统的电话订餐外卖模式相比也更便捷的多。 因此,同城外卖跑腿系统源码得以爆火,...
    99+
    2023-09-07
    数据库 服务器 小程序 php 前端
  • Linux中源码安装的示例分析
    小编给大家分享一下Linux中源码安装的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在linux下安装软件,难免会碰到需要源码安装的,而就是这简简单单的...
    99+
    2023-06-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作