Barrier I/O的目的是使其之前的I/O在其之前写入存储介质,之后的I/O需要等到其写入完成后才能得到执行。为了实现这个要求,我们最多需要执行2次flush(刷新)操作。(注意,这儿所说的flush,指的是刷新存储设备的缓存。但并不是所有存储设备都支持flush操作,所以不是所有设备都支持barrier I/O。

支持根据这个要求,需要在初始化磁盘设备的请求队列时,显式的表明该设备支持barrier I/O的类型并实现prepare flush 方法,参见”Linux Barrier I/O”。)第一次flush是把barrier I/O之前的所有数据刷新,当刷新成功,也就是这些数据被存储设备告知确实写入其介质后,提交Barrier I/O所在的请求。

然后执行第二次刷新,这次刷新的是Barrier I/O所携带的数据。当然,如果Barrier I/O没有携带任何数据,则第二次刷新可以省略。此外,如果存储设备支持FUA,则可以在提交Barrier I/O所携带的数据时,使用FUA命令。这样可以直接知道Barrier I/O所携带的数据是否写入成功,从而省略掉第二次刷新。

通过对Barrier I/O的处理过程,我们可以看到,其中最核心的是两次刷新操作和中间的Barrier I/O。为了表示这两次刷新操作以及该Barrier I/O,在Linux Barrier I/O的实现中,引入了3个辅助request: pre_flush_rq, bar_rq, post_flush_rq。

它们包含在磁盘设备的request_queue中。每当通用块层接收到上面发下来的Barrier I/O请求,就会把该请求拷贝到bar_rq,并把这3个请求依次加入请求队列,形成flush->barrier->flush请求序列。这样,在处理请求时,便能实现barrier I/O所要求的功能。

当然,并不是所有设备都必须使用以上序列中的所有操作,具体要使用那些操作,是有设备自身特点决定的。

全部

barrier linux,LinuxBarrierI/O的介绍有哪些呢? 爱问知识人相关推荐

  1. linux终端上网,ubuntu中上网-如何使用ubuntu下用命令行上网?ubuntu下用命令行上网, 爱问知识人...

    2013-08-01 09:07:16 用于基本接口与IP配置的ifconfig ifconfig工具(interface configurator,接口配置器)提供了一些非常基本但是非常重要的功能. ...

  2. cvs linux权限,Linux下CVS+ACL的权限控制是什么? 爱问知识人

    考试大Linux站整理:我的CVS服务器端是在linux下,我安装了cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz,利用CVS+ACL来做权限控制.但是现在遇到几个问题 ...

  3. 哈尔滨华夏计算机专业学院怎么样,哈尔滨华夏计算机职业技术学院怎么样啊.有没有在那里的介绍下. 爱问知识人...

    你好朋友. 我是华夏的在校生,现在也即将离开了校园.下面从几个方面简要介绍一下吧. 总体来说. 从分数来看. 200多分 来这学校绝对是个好选择. 1.学校设施方面. 校园不是很大. 但相对于同等的专 ...

  4. linux io函数,unix/Linux低级IO函数的用法有哪些? 爱问知识人

    内容包括: open() ,尤其是各种常见的参数,到底是什么意思, 比如常用创建一个空文件: fd = open("/tmp/xx.txt",O_RDWR | O_CREAT | ...

  5. 大学计算机专业个人介绍 英语翻译,哪位高手帮我翻译一下个人简历个人简介br/作为一名计算机专业 爱问知识人...

    完全人译,个别词句和结构作了一些修改,可以直接使用. Personal Resume As a computer science university graduates, I have the yo ...

  6. java 分班_大家给我介绍下马上学校就要分班了不知道去JAVA班,还是.NET 爱问知识人...

    Java是一个广泛使用的网络编程语言 ,它是一种新的计算概念. 首先 ,作为一种程序设计语言 ,它简单.面向对象.不依赖于机器的结构.具有可移植性.鲁棒性.安全性.并且提供了并发的机制.具有很高的性能 ...

  7. linux路由介绍,Linux的路由表详细介绍

    Linux的路由表详细介绍 一 在Linux下执行route命令[root@localhost backup]# route -nKernel IP routing tableDestination ...

  8. Linux及文件系统基本介绍

    Linux及文件系统基本介绍 1   互联网行业现状 在服务器端市场: 超级计算机 2014年11月的数据显示前500系统中的485个系统都在运行着 Linux 的发布系统,而仅仅只有一台运行着 Wi ...

  9. Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍

    1 解决ls查看文件爱呢颜色为白色 方法一: 1.修改~/.bashrc文件,添加如下内容 alias ls='ls --color=auto' 2.source一下,让修改配置生效 source ~ ...

最新文章

  1. python学习-25 函数递归
  2. LNMP平台搭建之一:nginx编译安装
  3. windows c语言能分配多少内存,Windows下C语言程序的内存布局(内存模型)
  4. php函数get和set,php中外部类调用_get函数和_set函数的方法
  5. How does SAP OData framework interpret $expand=Notes
  6. html5pc转微信小程序,微信电脑版终于支持小程序 新版PC版微信实测
  7. glassfish 初次使用 (介绍・目录结构・注意点・基本命令・控制台・eclipse插件安装)
  8. matlab常用插值函数
  9. VS的C++调试教程
  10. Vue中图片裁剪的实现
  11. 无线网ppp服务器失败怎么办,【妙招】不能上网怎么办,史上最全宽带故障简单处理办法!...
  12. 网络使用工具HttpWatch的使用方法
  13. 通过线性回归模型及优化实现AQI分析与预测
  14. 代码随想录44——动态规划:完全背包理论基础、518零钱兑换II、377组合总和IV
  15. 【去雾】|GMAN 去雾
  16. add p4 多个文件_在P4存储库中查找add/delete/checkout/checkin文件中的p4perl示例代码
  17. 高通Atheros所有WiFi芯片型号参数一览
  18. 给自己一个更安全的 mysql
  19. 微平均 宏平均 微平均(准确率、召回率、f1-score相等) 以及 TP、TN、FP、FN的理解
  20. vue学习笔记(一)

热门文章

  1. springmvc 配置和spring配置?
  2. cookies可以跨域了~单点登陆(a.com.cn与b.com.cn可以共享cookies)
  3. oninput,onpropertychange,onchange的用法和区别
  4. 谷歌、雅虎支持中文域名搜索 有助提升SEO
  5. 分布式数据库中间件Mycat百亿级数据存储(转)
  6. Goland提示Unresolved reference ***错误解决
  7. 反思赚钱:一定要动脑子 一定找发财点
  8. jq点击所有子元素_jQuery删除/清空指定元素下的所有子节点的方法
  9. shiro 字段不是username 和password_Shiro整合JWT
  10. php去掉内部空格_php中去掉头尾空格3种方法