do_writepages调用inode->i_mapping->a_ops->writepages

摘自:http://www.2cto.com/os/201110/108848.html

为什么会在这里讨论writepage这个函数,这个函数会根据不同的文件系统类型,调用不同的方法对数据进行磁盘写入。在这里,我想讨论的应该是当wirtepage执行的是异步操作,并没有等待IO驱动返回,还是IO操作已经结束。或者说是函数的回调。我在这里感到非常的疑惑。所以记下笔记。

猜测:不过,我猜测其实应该是同步的操作,不可能再次异步操作,毕竟没有必要阻塞,除非驱动程序还需要继续合并请求,也就是将内容再次合并。

时间: 2024-10-21 07:35:46

do_writepages调用inode->i_mapping->a_ops->writepages的相关文章

linux 同步IO: sync、fsync与fdatasync、sys_sync【转】

本文转自:http://blog.csdn.net/cywosp/article/details/8767327 和 http://www.2cto.com/os/201204/126687.html 传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行.当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后待其

Linux下ls命令显示符号链接权限为777的探索

Linux下ls命令显示符号链接权限为777的探索 --深入ls.链接.文件系统与权限 一.摘要 ls是Linux和Unix下最常使用的命令之一,主要用来列举目录下的文件信息,-l参数允许查看当前目录下所有可见文件的详细属性,包括文件属性.所有者.文件大小等信息.但是,当其显示符号链接的属性时,无论其指向文件属性如何,都会显示777,即任何人可读可写可执行.本文从ls命令源码出发,由浅入深地分析该现象的原因,简略探究了Linux 4.10下的符号链接链接.文件系统与权限的源码实现. 关键词:Li

HDFS源码学习纪录之-NameNode篇(一)

NameNode维护了HDFS命名空间的两层关系: 1) 文件与数据块之间的关系(INodeFile,INodeDirectory) 2) 数据块与DataNode之间的关系(BlockMap.BlockInfo) 首先,贴一张类图: 1. INode类: INode模仿Linux文件系统中的索引节点inode.INode为一个抽象类,INode中保存了文件名,文件所有者,文件的访问权限,文件父目录(INodeDirectory引用,无论是INode的INodeFile子类还是INodeDire

第二十章 系统性能调优

一.topas 1.子命令: a    ---->返回最初的主画面 c    ---->CPU区域状态切换(cpu) d    ---->磁盘区域状态切换(disk) n    ---->网络区域状态切换(net) p    ---->进程区域状态切换(processor) P    ---->全屏显示进程状态(大写P) q    ---->退出(quit) 2.监视画面解析 a)CPU区域各项参数 Kernel:CPU用于执行内核模式的程序的占用比 User:C

Linux 系统调用

用户空间的程序无法直接执行内核代码.它们不能直接调用内核空间中的函数,因为内核驻留在受保护的地址空间上.如果进程可以直接在内核的地址空间上读写的话,系统安全就会失去控制.所以,应用程序应该以某种方式通知系统,告诉内核自己需要执行一个系统调用,希望系统切换到内核态,这样内核就可以代表应用程序来执行该系统调用了. 通知内核的机制是靠软件中断实现的.首先,用户程序为系统调用设置参数.其中一个参数是系统调用编号.参数设置完成后,程序执行"系统调用"指令.x86系统上的软中断由int产生.这个指

学习3ds max插件开发过程中的一些小结

1. 3ds max是以树状结构来管理整个场景的,每个树节点类型为INode 2. Interface类很关键,可以通过其中的GetRootNode.NumberOfChildren和GetChildNode方法来遍历整个场景的所有节点 3. 在max中一个物体是object而不是INode,Object是附着在INode上的,并且Object的坐标所在的坐标系是INode的local坐标系 4. INode::GetNodeTM方法返回INode到世界坐标系的变换矩阵,INode::GetOb

linux socket编程系统调用栈

目录 一.网络协议参考模型简介 二.SOCKET概述 三.SOCKET基本数据结构 1.TCP通信编程 2.服务器端实例代码 3.客户端实例代码 4.头文件socketwrapper.h 5.程序实现功能 6.探究socket系统调用 @(linux socket编程实现原理) 一.网络协议参考模型简介 国际标准组织(ISO)制定了OSI模型.这个模型把网络通信的工作分为7层,从上至下为应用层.表示层.会话层. 传输层.网络层.数据链路层.物理层. 而TCP/IP协议将OSI的7层模型简化为4层

Linux字符设备中的两个重要结构体(file、inode)

对于Linux系统中,一般字符设备和驱动之间的函数调用关系如下图所示 上图描述了用户空间应用程序通过系统调用来调用程序的过程.一般而言在驱动程序的设计中,会关系 struct file 和 struct inode 这两个结构体. 用户空间使用open()系统调用函数打开一个字符设备时( int fd = open("dev/demo", O_RDWR) )大致有以下过程: 在虚拟文件系统VFS中的查找对应与字符设备对应 struct inode节点 遍历字符设备列表(chardevs

Samsung_tiny4412(笔记)-->volatile,container_of,file_operations,file,inode

/*********************************************************************************** * * Samsung_tiny4412(笔记)-->volatile,container_of,file_operations,file,inode * * 声明: * 本文的结构体的注释主要是参考网络上的解释,几乎无任何个人理解,主要是为后续 * 代码编辑提供参考. * * 2015-3-8 阴 深圳 尚观 Etc 曾剑锋