在submit_bio处使用stapn
想着在submit_bio的地方,发现在guru模式下,stap是经常性地把内核整挂呀,不得已,也没有发现stap什么比较好的调试方法,所以索性直接使用stap的语法了,但是发现有问题呢,有的时候bv->bv_page->mapping->host, 我发现有的时候,这个地方得到的inode,然后我去解引用一下,竟然会导致失败,是因为bv->bv_page->mapping->host这条路山更有哪里是不合法的吗?有哪里是不合法的吗?
0:cron inode_add(0xffff8800a65fcbb0) ino(0) sector(436275808 +4096)
0:sh inode_add(0xffff8800a65fcbb0) ino(0) sector(176232464 +4096)
抓到了这样两条log,这两条log是说我我这个inode的inode->i_ino竟然是0
只要page在inode就在,inode在dentry就在!有这个结论么?
fs/inode.c函数中:prune_icache_sb
invalidate_mapping_pages,当有lock的page,writeback的page在的时候,读的时候,在submit_bio的地方page是lock的,写的时候这里是writeback的这个inode是不会被清理的,所以在submit_bio处读到的page,可以放心大胆地使用page->mapping->inode,这里有个问题,mapping一定是存在的吗?
这个address_space也是存放在函数
address_space应该是直接嵌入到inode里的一个结构,甚至都不是一个指针,看一下page_cache_get_page函数就可以了,拿一个最简单的f2fs_grab_cache_page来说,当往address_space里加东西的时候,是如何mapping是怎么得到的?
struct address_space *mapping = inode->i_mapping;
这个mappinp就是我们就是inode中嵌入的那个mapping的结构体
在inode初始化的时候:inode->i_mapping = mapping;mapping是怎么赋值的?struct address_space *const mapping = &inode->i_data;
所以只要inode在,那么我们通过page->address_space->host就一定能得到这个文件的inode,但是这个inode对应的dentry是一定会在的吗?文件名从两个地方去读,一个是目录的数据块,一个是dentry。但是dentry一定会在吗?
fs/dcache.c: prune_dcache_sb
在这个函数中,当这个dentry仍然在使用的时候就不会被shrink掉!dentry->d_lockref.count,这个值是啥时候+1呢
看下page后面的文件系统是啥 page->inode->i_sb->s_type->name
怎么通过inode得到文件名咧?
hard_link是啥呀?hark_link是一个inode上面挂了4个dentry,所以从inode,
在submit_bio处使用stapn的更多相关文章
- CSS预处器的对比——Sass、Less和Stylus
预处器的对比--Sass.LESS和Stylus 转载: 英文原文:http://net.tutsplus.com/tutorials/html-css-techniques/sass-vs-less ...
- 数据库(SQL Server)管理数据库表~新奇之处
说到“数据库”,我总有一种莫名的感觉,在刚刚接触到的数据库中就让我似懂非懂渡过着,于是思考着.于是在冷静的时空中让我回想到了很多的知识,不知你们是怎样过来的,真心希望我的这篇数据库总结能够让我们都有一 ...
- Autocad 2012 win7(64位)启动时一直卡在acmgd.dll处的解决方案
安装Autocad 2012后,激活成功后,无法正常启动,一直卡在加载acmgd.dll 通过Procmon监控后发现加载C:\Windows\fonts\AdobeFnt11.lst处出错, 通过命 ...
- this的安身之处
在JavaScript的大千世界中,this对象就像一个行踪不定.居无定所的浪子一般,它的生活仿佛可以随处而安,而内心却又似有着笃定的坚守,它就是这么有趣! 初学JavaScript时的我们,多多少少 ...
- OO方式下,ALV TREE和ALV GRID的不同之处
作为大部分报表程序的基础,ALV GRID差不多是每个ABAP开发者必须了解和掌握的内容,因此网上也不乏相关资料,而ALV TREE的应用相对较少,中文资料也就比较少见了.实际上,ALV TREE和A ...
- Windows 64位下装Oracle 11g,PLSQL Developer的配置问题,数据库处显示为空白的解决方案
安装pl sql 后,若下图的数据库处为空.则需要安装32位的客户端,说明pl sql不支持64位客户端连接. 解决办法: 1.下载32位Oracle客户端,并安装 2.设置PLSQL Develo ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
- kindeditor在光标处插入编辑器外的数据
页面 <div class="form-group clearfix"> <label class="control-label col-sm-3 co ...
- selenium定位元素(本内容从https://my.oschina.net/flashsword/blog/147334处转载)
注明:本内容从https://my.oschina.net/flashsword/blog/147334处转载. 在使用selenium webdriver进行元素定位时,通常使用findElemen ...
随机推荐
- MySql Connector/c++8中JSON处理Demo
#include <iostream> #include <vector> #include <mysqlx/xdevapi.h> using std::cout; ...
- 解决WordPress设置错误的url网站不能访问的问题
通过WordPress后台首选项更改了网站url地址之后,网站就会出现访问不了的情况,一般来说,网站后台也登陆不上去了,我从网上寻找到了四种方法,这四种方法前三种都是需要登陆到后台的,但实际上出错后, ...
- Ubuntu16.04采用FastCGI方式部署Flask web框架
1 部署nginx 1.1 安装nginx服务 root@desktop:~# apt-get install nginx -y 1.2 验证nginx服务是否启动 root@des ...
- layUI 下拉框遮挡
原项目中把layui内置的富文本编辑器替换成了百度的ueditor,但是出现了一点问题,下拉框被遮挡了! 在网上查询了一些方法,发现最简单的方法就是在当前页面的<head>标签中加入 &l ...
- python 中的UDP和TCP(1)
一.TCP: TCP是Transmission Control Protocol的简称,中文名传输控制协议.是一种面向连接的.可靠的.基于字节流的传输层通信协议.TCP通信需要经过创建连接.数据传输. ...
- Nodejs 使用 addons 调用c++ 初体验(一)
纠结很久,决定写一点遇到的“坑”. 基础环境:win7-64bit node(v7.5.0) 这些安装实在是太方便了,自行准备吧. 1. 安装 python(2.7.x ),用npm安装 nod ...
- SAN---第二网的概念
网络技术的优缺点:优点:连接能力,超强路由,管理能力,远距离缺点:低速以及高负载,强烈的软件需求,错误检测能力 SAN:storage area network(存储区域网络)--是一种基于光网的特殊 ...
- Oozie 配合 sqoop hive 实现数据分析输出到 mysql
文件/RDBMS -> flume/sqoop -> HDFS -> Hive -> HDFS -> Sqoop -> RDBMS 其中,本文实现了 使用 sqoo ...
- 详解mysql体系结构和存储引擎
概述 之前整理的一些mysql方面内容,适合做备忘,因为我基本不会去记这些概念性的东西,大家做个了解就可以了. 一.定义数据库和实例 1.数据库: 物理操作系统文件或其他形式文件类型的集合. 在MyS ...
- 0301001_Lesson1&2
Lesson 1 Excuse me! 对不起! Listen to the tape then answer this question.Whose handbag is it?听录音,然后回答问题 ...