write_back 浅浅分析
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 浅浅分析的更多相关文章
- SpringBoot的浅浅配置和小整合
SpringBoot的浅浅配置和小整合 本文如题,就是浅浅记录一下学习的过程中一些过程,比较简单,并没有多少深度.谢谢! SpringBoot创建 从IDEA中新建项目或者模块.注意jdk版本,一般不 ...
- 浅谈分析表格布局与Div+CSS布局的区别
(1)表格布局 表格布局容易掌握,布局方便.但表格布局需要通过表格的间距或者使用透明的gif图片来填充布局板块间的间距,这样布局的网页中表格会生成大量难以阅读和维护的代码:而且表格布局的网页要等整个表 ...
- BASE64编码乱码问题的浅层分析与解释
本文由作者朱臻授权网易云社区发布. 1问题案例 曾在开发过程中,我们遇到了BASE64编码乱码的问题,该问题的场景如下: 当web前端,将带有中文字符的字符串base64编码后,传到后端.当后端将数据 ...
- 浅入分析Linux
Linux 操作系统必须完成的两个主要目的 与硬件部分交互, 为包含在硬件平台上的所有底层可编程部件提供服务 为运行在计算机系统上的应用程序(即所谓的用户空间)提供执行环境 一些操作系统运行所有的用户 ...
- 浅入分析和Linux内核相关的文件夹/proc和/sys .
近来文章被踩的厉害,我只想把自己从马哥学的知识自己总结下发到博客里,但是没想到昨天一篇文章刚发一上午被踩了9次...如果您真的觉得我的文章很烂,请告诉我原因,不胜感激. 这星期,马哥讲了关于Linux ...
- GoF 设计模式:浅浅印象
23种设计模式,常常多个模式结合使用,主要是为了解决中大型软件项目"类和对象"膨胀的问题,进而有效组织类的结构而提出的.可划分为3类:创建型(关于类的创建),结构型(多个类的组织) ...
- Flex Cairngrom框架浅浅印象
VO ↓ Model ← Delegate ← Command ↓ ↑ ↓ ...
- 浅浅地谈一下随机算法【poj2454】【poj3318】
随机算法我也只是稍微接触了一下,就是想写篇博客自己稍微总结一下 其实随机算法也算是一个玄学吧,运气不好还是会wa.但是我们知道,计算机可以在短时间内计算大量的数据,所以碰到正确答案的概率还是挺大的. ...
- 浅尝Go语言GC
大家好,我是小栈君,因为个人和工作的缘故,所以拖更了一点时间,但是关于拖更的内容小栈君会在后续的时间中补回来,还希望大家继续支持和关注小栈君.当然,在国内疫情稍微减缓的情况下,小栈君在这里也多说两句, ...
随机推荐
- ABAP程序中退出操作(CHECK, EXIT, RETURN, LEAVE PROGRAM)
这里总结一下几个常用的退出操作: CHECK.(SAP官方推荐只在循环中使用) 1)CHECK 后面要跟一个表达式,当表达式值为假(false)时,CHECK发生作用,退出循环(LOOP)或处理程序 ...
- Upgrading or Redeploying SharePoint 2010 Workflows
While creating several State Machine SharePoint 2010 workflows using visual studio for a client I ha ...
- 转:Web App开发入门
WebApp与Native App有何区别呢? Native App: 1.开发成本非常大.一般使用的开发语言为JAVA.C++.Objective-C. 2.更新体验较差.同时也比较麻烦.每一次发布 ...
- virtualbox虚拟机迁移出现"connot find device eth0"错误
我在自己的机器上面配置virtualbox虚拟机完毕以后,移植到另外一台机器上面,登陆页面总是在检查network,并且最后网络加载失败,不论我是用桥接还是NAT方式连接.登陆系统以后,我尝试连接网络 ...
- Java使用正则表达式获取文本的章节名称
获取文本的章节,首先要确定章节的开始标准,一般中文的章节都是以“第”开头,第一章.第二章等.所以使用“^”字符来确定首位,但是很多时候章节前面会有空白字符,所有以“第”作为章节的开始,进行以下的匹配 ...
- 关于https的Error:Error Domain=NSURLErrorDomain Code=-1012
昨天闲着没事就随便搞点demo,随便找了一个https的接口,运行之后,一直发现Error Domain=NSURLErrorDomain Code=-1012.好奇怪,请求https的配置我基本都配 ...
- Android bitmap高效显示和优化
第一部分:Bitmap高效显示 应用场景:有时候我们想在界面上显示一个网络图片或者显示一张本地的图片,但是图片本身是很大的有几兆,但是显示的位置很小或者说我们可以用更小的图片来满足这样的需求,如果把整 ...
- git不常用命令
1.删除远程分支 git remote origin :分支名 [解释:意思是提交一个空分支到远程分支] ===持续更新
- IOS之UI--小实例项目--综合使用
前言: 本博文是基于前一个小实例项目:IOS之UI--小实例项目--添加商品和商品名 进行继续综合学习积累的. 内容大纲 01-综合使用01-plist的使用 02-综合使用02-模型取代字典的好处分 ...
- Stronger (What Doesn't Kill You)
今天听一个歌曲,挺不错的.以前一直不知道意思.这次把歌词摘抄下来. 试听音乐: 原版MV: You know the bed feels warmer 你知道被窝里的温暖 Sleeping here ...