linux系统中怎么调用sync源码
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇文章给大家分享的是有关linux系统中怎么调用sync源码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。int sys_sync(v
千家信息网最后更新 2025年12月01日linux系统中怎么调用sync源码
本篇文章给大家分享的是有关linux系统中怎么调用sync源码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
int sys_sync(void)
{
int i;
struct buffer_head * bh;
// 把所有inode写入buffer,等待回写,见下面代码
sync_inodes(); /* write out inodes into buffers */
bh = start_buffer;
for (i=0 ; i wait_on_buffer(bh);
if (bh->b_dirt)
// 请求底层写硬盘操作,等待底层驱动回写到硬盘,不一定立刻写入
ll_rw_block(WRITE,bh);
}
return 0;
}
我们先看sync_inode。该函数把inode table里的,即进程打开的文件对应的inode节点,写入到buffer里。
// 遍历所有inode,从硬盘读包括该inode的数据块,然后用内存的inode覆盖硬盘读进来的,存在buffer里,等待回写
void sync_inodes(void)
{
int i;
struct m_inode * inode;
inode = 0+inode_table;
for(i=0 ; i wait_on_inode(inode);
// 管道的内容存放在内存,所以不需要同步
if (inode->i_dirt && !inode->i_pipe)
write_inode(inode);
}
}
// 先把inode从硬盘中读进来,然后覆盖,等待回写
static void write_inode(struct m_inode * inode)
{
struct super_block * sb;
struct buffer_head * bh;
int block;
lock_inode(inode);
if (!inode->i_dirt || !inode->i_dev) {
unlock_inode(inode);
return;
}
if (!(sb=get_super(inode->i_dev)))
panic("trying to write inode without device");
// 算出inode的块号,2 + inode位图块数 + 块位图块数 + inode的相对偏移
block = 2 + sb->s_imap_blocks + sb->s_zmap_blocks +
(inode->i_num-1)/INODES_PER_BLOCK;
// 读入包含该inode的整个数据块
if (!(bh=bread(inode->i_dev,block)))
panic("unable to read i-node block");
// 找到数据块中inode所属的位置,写到高速缓存等待回写到硬盘
((struct d_inode *)bh->b_data)
[(inode->i_num-1)%INODES_PER_BLOCK] =
*(struct d_inode *)inode;
bh->b_dirt=1;
inode->i_dirt=0;
brelse(bh);
unlock_inode(inode);
}
以上就是linux系统中怎么调用sync源码,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
硬盘
数据
源码
系统
位图
内存
底层
更多
知识
篇文章
实用
代码
位置
内容
函数
就是
工作会
所属
文件
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
对软件开发的赞美
网络安全警示教育会议讲话稿
呼市网络安全培训机构
学生 服务器
贵州网络安全负责人通讯录
迈阿密网络技术运营
一个号可以进两个不同的服务器吗
2018身边的网络安全
长春专业的网络安全机构
惠普服务器报修电话
软件商店检测到服务器异常
dcs 数据库 存多久
行云数据库 库连接
局域网怎么建立服务器
湘西软件开发职校
web服务器需要几台
网络安全人才基地周刚
怎么看内存数据库
哈尔滨应用软件开发费用多少
高端软件开发培训班
网络安全法自426
摩诃网络技术
小鼠基因数据库
期末考试数据库试题
金蝶服务器未能检测产品安全锁
软件开发工程师近几年需求量
网络安全的问题有哪些方面
dns服务器分布图
软件开发费计入无形资产吗
贵州网站建设软件开发