hon@hon:~/f2fs$ grep -i "clearpagedirty" . -nr
./mm/shmem.c:1240: ClearPageDirty(page);
./mm/memory-failure.c:717: ClearPageDirty(p);
./mm/vmscan.c:562: ClearPageDirty(page);
./mm/page-writeback.c:2612: if (TestClearPageDirty(page))
./mm/page-writeback.c:2618: ClearPageDirty(page);
./mm/page-writeback.c:2687: if (TestClearPageDirty(page)) {
./mm/page-writeback.c:2697: return TestClearPageDirty(page);
./fs/ext4/inline.c:746: ClearPageDirty(page);
./fs/nilfs2/page.c:496: return TestClearPageDirty(page);
./fs/btrfs/tests/extent-io-tests.c:229: ClearPageDirty(page);
./fs/hugetlbfs/inode.c:298: ClearPageDirty(page);
./fs/gfs2/ops_fstype.c:239: ClearPageDirty(page);

clear_page_dirty_for_io 在实际文件系统中大量存在,但是都是为了支持这些文件系统的一些特殊的特性,比如f2fs的垃圾回收.

mm/page-writeback.c 2228行左右,发现在调用实际文件系统的writeback写回之前,会将文件的脏位取消掉,所以到真正的的write_back之前,

其实page的dirty位已经没有了!

同时,write_one_page函数中,在调用珍重的writeback函数之前也会把页的脏位去掉!

Call trace:
[<ffffffc00008960c>] dump_backtrace+0x0/0x12c
[<ffffffc000089748>] show_stack+0x10/0x1c
[<ffffffc00034d97c>] do_write_data_page+0xa8/0x77c
[<ffffffc00034e44c>] f2fs_write_data_page+0x3fc/0x5dc
[<ffffffc00034761c>] __f2fs_writepage+0x18/0x60
[<ffffffc000180d70>] write_cache_pages+0x1f0/0x5b4 会在该函数中将page的 dirty 标志 PG_dirty 清除. 然后进入write back 过程, 在写入之前设置write back标志,并在bio结束之后, 在bio的回调函数中将writeback标志位清除.

[<ffffffc000348cbc>] f2fs_write_data_pages+0xf8/0x370
[<ffffffc000181bd4>] do_writepages+0x20/0x44
[<ffffffc000204e20>] __writeback_single_inode+0xac/0xbb0
[<ffffffc000205ba4>] writeback_sb_inodes+0x280/0x518
[<ffffffc000205ed4>] __writeback_inodes_wb+0x98/0xe0
[<ffffffc0002061d0>] wb_writeback+0x2b4/0x73c
[<ffffffc0002076c4>] wb_workfn+0x3d8/0x98c
[<ffffffc0000b505c>] process_one_work+0x218/0x7ec
[<ffffffc0000b5764>] worker_thread+0x134/0x458
[<ffffffc0000bc010>] kthread+0xd4/0xec

write_back 浅浅分析的更多相关文章

  1. SpringBoot的浅浅配置和小整合

    SpringBoot的浅浅配置和小整合 本文如题,就是浅浅记录一下学习的过程中一些过程,比较简单,并没有多少深度.谢谢! SpringBoot创建 从IDEA中新建项目或者模块.注意jdk版本,一般不 ...

  2. 浅谈分析表格布局与Div+CSS布局的区别

    (1)表格布局 表格布局容易掌握,布局方便.但表格布局需要通过表格的间距或者使用透明的gif图片来填充布局板块间的间距,这样布局的网页中表格会生成大量难以阅读和维护的代码:而且表格布局的网页要等整个表 ...

  3. BASE64编码乱码问题的浅层分析与解释

    本文由作者朱臻授权网易云社区发布. 1问题案例 曾在开发过程中,我们遇到了BASE64编码乱码的问题,该问题的场景如下: 当web前端,将带有中文字符的字符串base64编码后,传到后端.当后端将数据 ...

  4. 浅入分析Linux

    Linux 操作系统必须完成的两个主要目的 与硬件部分交互, 为包含在硬件平台上的所有底层可编程部件提供服务 为运行在计算机系统上的应用程序(即所谓的用户空间)提供执行环境 一些操作系统运行所有的用户 ...

  5. 浅入分析和Linux内核相关的文件夹/proc和/sys .

    近来文章被踩的厉害,我只想把自己从马哥学的知识自己总结下发到博客里,但是没想到昨天一篇文章刚发一上午被踩了9次...如果您真的觉得我的文章很烂,请告诉我原因,不胜感激. 这星期,马哥讲了关于Linux ...

  6. GoF 设计模式:浅浅印象

    23种设计模式,常常多个模式结合使用,主要是为了解决中大型软件项目"类和对象"膨胀的问题,进而有效组织类的结构而提出的.可划分为3类:创建型(关于类的创建),结构型(多个类的组织) ...

  7. Flex Cairngrom框架浅浅印象

    VO ↓ Model   ←  Delegate ← Command   ↓                                    ↑   ↓                      ...

  8. 浅浅地谈一下随机算法【poj2454】【poj3318】

    随机算法我也只是稍微接触了一下,就是想写篇博客自己稍微总结一下 其实随机算法也算是一个玄学吧,运气不好还是会wa.但是我们知道,计算机可以在短时间内计算大量的数据,所以碰到正确答案的概率还是挺大的. ...

  9. 浅尝Go语言GC

    大家好,我是小栈君,因为个人和工作的缘故,所以拖更了一点时间,但是关于拖更的内容小栈君会在后续的时间中补回来,还希望大家继续支持和关注小栈君.当然,在国内疫情稍微减缓的情况下,小栈君在这里也多说两句, ...

随机推荐

  1. 屏幕字段结构SCREEN的字段含义

    在SAP屏幕中,一个字段就像.NET中的一个控件,这个字段对应一个SCREEN结构,就像控件的多个属性. SE11可以查看SCREEN结构中的字段,只是没有备注. 名称 长度 说明 NAME 屏幕字段 ...

  2. ALV要特别小心的一些地方

    1.在ALV报表里面如果你做了一个字段可编辑而且这个字段是带有小数的数量或者金额,这时候当你输入一个数字保存或者去操作的时候发现他的值会变掉,这个要在设置列属性的时候给他对应的参考表和字段L_FIEL ...

  3. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q40-Q44)

    Question 40You need to send a single value from a consumer Web Part to a provider Web Part.Which int ...

  4. Windows环境下利用github快速配置git环境

    在windows环境下利用github客户端我们可以直接拥有可视化的界面来管理工程,当然你也可以选择你喜欢的命令行工具来做.今天我分享一个比较快速的方式来配置git环境. 先去下载github的win ...

  5. 第一节 SOA的基本概念和设计思想

    WCF一直很火,一直也没有时间来静下心来学习新的技术.不知不觉已经做程序八年了,其中的时间基本都费了,刚入门时很火热,后来慢慢热情被琐事取代.现在开始学习JAVA和WCF,学JAVA的原因就是想做手机 ...

  6. C++类模板

    在上篇文章(C++函数模板)中,主要介绍了C++中函数模板,与函数相似,类也可以被一种或多种类型参数化.容器类就是一个具有这种特性的典型的例子, 本文地址:http://www.cnblogs.com ...

  7. windows phone(成语典籍游戏开发)

  8. Android中ListView 控件与 Adapter 适配器如何使用?

    一个android应用的成功与否,其界面设计至关重要.为了更好的进行android ui设计,我们常常需要借助一些控件和适配器.今天小编在android培训网站上搜罗了一些有关ListView 控件与 ...

  9. linux路由表命令

    转自此大神http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html 留在好查阅 linux 路由表维护 查看 Linux 内核路由表 使用 ...

  10. 大写金额字符串生成 C#实现

    思路: 中文对金额的描述以四位为一组, 只考虑一万亿以内的数字则每组内以千.百.十和[亿\万\元]区分各位 连续的零按一个处理,组内最低位的零可略去 无角无分说整,有角无分只说角,无角有分说零X分,有 ...