当前位置: 首页 > news >正文

Linux0.11内核源码解析-truncate.c

truncate文件只要实现释放指定i节点在设备上占用的所有逻辑块,包括直接块、一次间接块、二次间接块。从而将文件节点对应的文件长度截为0,并释放占用的设备空间。

索引节点的逻辑块连接方式

 

释放一次间接块

static void free_ind(int dev,int block)
{struct buffer_head * bh;unsigned short * p;int i;if (!block)return;//读取一次间接块,并释放其上表明使用的所有逻辑块,然后释放该一次间接块的缓冲区if ((bh=bread(dev,block))) {p = (unsigned short *) bh->b_data; //指向数据缓冲区for (i=0;i<512;i++,p++) //每个逻辑块上有512块号if (*p)free_block(dev,*p); //释放指定逻辑块brelse(bh);}free_block(dev,block);
}

释放二次间接块

static void free_dind(int dev,int block)
{struct buffer_head * bh;unsigned short * p;int i;if (!block)return;//读取二次间接块的一级块,并释放其上表明使用的所有逻辑块,然后释放该一级块的缓冲区if ((bh=bread(dev,block))) {p = (unsigned short *) bh->b_data;for (i=0;i<512;i++,p++) //每个逻辑块可连接512个二级块if (*p)free_ind(dev,*p);brelse(bh);}free_block(dev,block);
}

将节点对应的文件长度截0,并释放占用的设备空间

void truncate(struct m_inode * inode)
{int i;if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)))return;//释放i节点的7个直接逻辑块,并将这7个逻辑块项全置为0for (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]);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;
}

相关文章:

Linux0.11内核源码解析-truncate.c

truncate文件只要实现释放指定i节点在设备上占用的所有逻辑块&#xff0c;包括直接块、一次间接块、二次间接块。从而将文件节点对应的文件长度截为0&#xff0c;并释放占用的设备空间。 索引节点的逻辑块连接方式 释放一次间接块 static void free_ind(int dev,int block) {…...

LED驱动型IC芯片的原理介绍

一、LED驱动器是什么 LED驱动器&#xff08;LED Driver&#xff09;&#xff0c;是指驱动LED发光或LED模块组件正常工作的电源调整电子器件。由于LED PN结的导通特性决定&#xff0c;它能适应的电源电压和电流变动范围十分狭窄&#xff0c;稍许偏离就可能无法点亮LED或者发光效…...

VLAN实验

实验题目如下&#xff1a; 实验拓扑如下&#xff1a; 实验要求如下&#xff1a; 【1】PC1/3的接口均为access模式&#xff0c;且属于van2&#xff0c;在同一网段 【2】PC2/4/5/6的IP地址在同一网段&#xff0c;与PC1/3不在同一网段 【3】PC2可以访问4/5/6&#xff0c;PC4不能…...

Qt应用开发(基础篇)——高级纯文本窗口 QPlainTextEdit

一、前言 QPlainTextEdit类继承于QAbstractScrollArea&#xff0c;QAbstractScrollArea继承于QFrame&#xff0c;是Qt用来显示和编辑纯文本的窗口。 滚屏区域基类https://blog.csdn.net/u014491932/article/details/132245486?spm1001.2014.3001.5501框架类QFramehttps://blo…...

三维可视化平台有哪些?Sovit3D可视化平台怎么样?

随着社会经济的发展和数字技术的进步&#xff0c;互联网行业发展迅速。为了适应新时代社会发展的需要&#xff0c;大数据在这个社会经济发展过程中随着技术的进步而显得尤为重要。同时&#xff0c;大数据技术的快速发展进程也推动了可视化技术的飞速发展&#xff0c;国内外各类…...

Xxl-job安装部署以及SpringBoot集成Xxl-job使用

1、安装Xxl-job&#xff1a; 可以使用docker拉取镜像部署和源码编译两种方式&#xff0c;这里选择源码编译安装。 代码拉取地址&#xff1a; https://github.com/xuxueli/xxl-job/tree/2.1.2 官方开发文档&#xff1a; https://www.xuxueli.com/xxl-job/#%E3%80%8A%E5%88%…...

【【超声波避障小车代码】】

超声波避障小车代码 #include <reg51.h> //通用51头文件 #include <intrins.h> //使用了_nop()_函数#define uchar unsigned char //用 uchar 表示 unsigned char 类型 #define uint unsigned int //用 uint 表示 unsigned int 类型sbit EN…...

TDI(Time Delay Integration)

TDI&#xff08;Time Delay Integration&#xff09;是一种特殊的图像采集技术&#xff0c;常用于线阵CCD&#xff08;Charge-Coupled Device&#xff09;相机。TDI技术可以在保持高分辨率的同时增强图像的信噪比&#xff08;Signal-to-Noise Ratio, SNR&#xff09;&#xff0…...

RHCE——一、安装部署及例行性工作

RHCE 一、网络服务1、准备工作2、RHEL9操作系统的安装部署3、配置并优化RHEL9操作系统4、网络配置5、修改网络连接 二、例行性工作1、单一执行的例行性工作2、循环执行的例行性工作 三、书写定时任务的注意事项四、系统级别的计划任务五、实验1、实验一&#xff1a;编写脚本tes…...

服务器数据库中了360后缀勒索病毒怎么办?360后缀勒索病毒的加密形式

随着信息技术的发展&#xff0c;企业的计算机服务器数据库变得越来越重要。然而&#xff0c;在数字时代&#xff0c;网络上的威胁也日益增多。近期&#xff0c;我们收到很多企业的求助&#xff0c;企业的计算机服务器遭到了360后缀勒索病毒的攻击&#xff0c;导致服务器内的所有…...

期权就是股指期货吗,哪个好做一点?

近年来&#xff0c;场内ETF期权产品不断扩大&#xff0c;越来越多的投资者有投资期权的想法。当我们看到期权时&#xff0c;我们会不知不觉地想到期货&#xff0c;虽然期货与期权只有一个字的区别&#xff0c;但实际上有很大的不同&#xff0c;那么期权就是股指期货吗&#xff…...

week32

本周目标&#xff1a; Belady现象的解释 操作系统 计组IO/MM chapter 刷力扣 ubuntu磁盘/网络/命令行进阶*1 tarball之类的使用 Question 大数据系统实验要学吗&#xff1f; 据说课讲得不好这是一门类似数据库的课程——大数据之hadoop / hive / hbase 的区别是什么&a…...

【数据库】P1 数据库基本常识

数据库基本常识 数据库 ≠ 数据库管理系统表&#xff08;Table&#xff09;SQL是什么 数据库 ≠ 数据库管理系统 数据库是保存有组织的数据的容器&#xff0c;数据库称为 DB&#xff08;DataBase&#xff09;&#xff1b;数据库管理系统是创建和操纵数据库的软件&#xff0c;数…...

c语言——计算两个数的乘积

//计算两个数的乘积 #include<stdio.h> #include<stdlib.h> int main() {double firstNumber,secondNumber,product;printf("两个浮点数&#xff1a;");scanf("%lf,%lf",&firstNumber,&secondNumber);productfirstNumber*secondNumber…...

单机模型并行最佳实践

单机模型并行最佳实践 模型并行在分布式训练技术中被广泛使用。 先前的帖子已经解释了如何使用 DataParallel 在多个 GPU 上训练神经网络&#xff1b; 此功能将相同的模型复制到所有 GPU&#xff0c;其中每个 GPU 消耗输入数据的不同分区。 尽管它可以极大地加快训练过程&…...

编程练习(3)

一.选择题 第一题&#xff1a; 函数传参的两个变量都是传的地址&#xff0c;而数组名c本身就是地址&#xff0c;int型变量b需要使用&符号&#xff0c;因此答案为A 第二题&#xff1a; 本题考察const修饰指针变量&#xff0c;答案为A,B,C,D 第三题&#xff1a; 注意int 型变…...

PyTorch学习笔记(十三)——现有网络模型的使用及修改

以分类模型的VGG为例 vgg16_false torchvision.models.vgg16(weightsFalse) vgg16_true torchvision.models.vgg16(weightsTrue) 设置为 False 的情况&#xff0c;相当于网络模型中的参数都是初始化的、默认的设置为 True 时&#xff0c;网络模型中的参数在数据集上是训练好…...

Python爬虫的scrapy的学习(学习于b站尚硅谷)

目录 一、scrapy  1. scrapy的安装  &#xff08;1&#xff09;什么是scrapy  &#xff08;2&#xff09;scrapy的安装 2. scrapy的基本使用  &#xff08;1&#xff09;scrap的使用步骤  &#xff08;2&#xff09;代码的演示 3. scrapy之58同城项目结构和基本方法&…...

“深入解析JVM:揭秘Java虚拟机的工作原理“

标题&#xff1a;深入解析JVM&#xff1a;揭秘Java虚拟机的工作原理 摘要&#xff1a;本文将深入解析Java虚拟机&#xff08;JVM&#xff09;的工作原理&#xff0c;探讨其内部结构和运行机制。我们将介绍JVM的组成部分、类加载过程、内存管理、垃圾回收、即时编译等关键概念&…...

【数据结构与算法】十大经典排序算法-归并排序

&#x1f31f;个人博客&#xff1a;www.hellocode.top &#x1f3f0;Java知识导航&#xff1a;Java-Navigate &#x1f525;CSDN&#xff1a;HelloCode. &#x1f31e;知乎&#xff1a;HelloCode &#x1f334;掘金&#xff1a;HelloCode ⚡如有问题&#xff0c;欢迎指正&#…...

RK3588 Android12在线视频播放拷机重启?手把手教你定位DMABUF内存泄漏(附/proc节点排查法)

RK3588 Android12视频播放内存泄漏实战&#xff1a;从崩溃日志到精准定位DMABUF泄漏进程 当RK3588平台在Android12系统上长时间播放在线视频时突然重启&#xff0c;这种看似随机的系统崩溃往往让开发者头疼不已。本文将带您深入内核层&#xff0c;通过一套可复用的方法论&#…...

ARMv8浮点运算单元与MVFR寄存器深度解析

1. ARMv8浮点运算单元架构解析在移动计算和嵌入式系统领域&#xff0c;ARMv8架构已经成为事实上的行业标准。作为其核心计算能力的重要组成部分&#xff0c;浮点运算单元(FPU)和高级SIMD(Neon)扩展的性能直接影响着机器学习、图形处理、科学计算等关键应用的执行效率。与x86架构…...

利用Taotoken为开源项目提供可配置的AI功能模块

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken为开源项目提供可配置的AI功能模块 为开源项目集成人工智能能力&#xff0c;正成为提升项目实用性和吸引力的有效方式…...

海洋AI工具集seait:从数据处理到模型部署的工程实践指南

1. 项目概述&#xff1a;一个面向“海洋”的AI工具集最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目&#xff0c;叫seait。第一眼看到这个名字&#xff0c;我下意识地把它拆成了“sea”和“it”&#xff0c;心想这大概是个和海洋或者海事相关的IT工具。点进去一看&am…...

告别手动抢红包!用Kotlin写一个Android微信红包监听助手(附完整代码)

用Kotlin构建Android微信红包自动化工具&#xff1a;从原理到避坑指南 春节聚会时&#xff0c;你是否曾因低头抢红包错过亲友的精彩对话&#xff1f;工作群里的手气红包总在分神时一闪而过&#xff1f;作为一名Android开发者&#xff0c;其实可以用技术优雅解决这些烦恼。本文…...

SkillZero:零样本AI智能体的分层规划与工具调用实战解析

1. 项目概述&#xff1a;从“零技能”到“零样本”的智能体进化最近在开源社区里&#xff0c;一个名为“SkillZero”的项目引起了我的注意。它来自浙江大学REAL实验室&#xff0c;名字本身就很有意思——“技能为零”。乍一听&#xff0c;这似乎是个悖论&#xff0c;一个智能体…...

微软UFO项目:统一AI模型调用的抽象层设计与工程实践

1. 项目概述&#xff1a;当“统一”成为AI开发的新范式最近在折腾大模型应用开发的朋友&#xff0c;可能都绕不开一个痛点&#xff1a;模型太多&#xff0c;工具链太杂。想用闭源的GPT-4处理文本&#xff0c;用开源的Llama搞本地推理&#xff0c;再用DALL-E 3生成图片&#xff…...

OpenClaw AVP:构建统一音视频协议栈,实现多协议流媒体处理

1. 项目概述&#xff1a;一个面向音视频处理的协议栈最近在整理一些音视频项目时&#xff0c;又翻到了avp-protocol/openclaw-avp这个仓库。对于从事流媒体、实时通信或者音视频编解码开发的工程师来说&#xff0c;看到avp这个缩写&#xff0c;第一反应多半是 “Audio-Video Pr…...

纯文本CRM:用Markdown与Git构建极简客户关系管理系统

1. 项目概述与核心价值最近在开源社区里&#xff0c;我注意到一个名为anthroos/plaintext-crm的项目&#xff0c;它提出了一种非常规的客户关系管理&#xff08;CRM&#xff09;思路。简单来说&#xff0c;这个项目主张用纯文本文件&#xff08;如 Markdown、TXT&#xff09;来…...

Transformer加速iLQR:机器人实时轨迹优化新方法

1. 项目概述 在机器人控制和自动驾驶领域&#xff0c;实时轨迹优化一直是个关键挑战。传统迭代线性二次调节器(iLQR)算法虽然能有效处理非线性系统&#xff0c;但其固有的串行计算特性严重制约了实时性能。想象一下&#xff0c;当四旋翼无人机需要快速避障时&#xff0c;或者当…...