在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 ...
随机推荐
- P1330 封锁阳光大学 DFS+染色
题目链接:https://www.luogu.org/problemnew/show/P1330 这个题有意思,如果能想到染色,就会很简单,但若想不到就很麻烦 要想把一条边封锁,就必须且只能占据这条边 ...
- ABAP术语-Connection Type
Connection Type 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/17/1042479.html A connection ty ...
- (Linux 日常命令)[20171225]
目的:记录Linux日常所用命令 [20171222]Linux环境下查看硬件组件型号 cat /proc/cpuinfo及lspci 查看CPU [root@t-redhat- ~]# cat /p ...
- webpack和sass功能简介
1.webpack webpack 是一个打包工具,为什么需要打包?因为有的人的脚本开发语言可能是 CoffeeScript 或者是 TypeScript,样式开发工具可能是 Less 或者 Sass ...
- Xshell4 出现Linux中中文字符乱码问题
Xshell5竟然收费了... 没办法只能用回Xshell4 但是不知道是版本不对还是在咋的 发现中文乱码,导致操作非常不方便 解决方案 LANG=zh_CN.big5 执行在终端执行上面的命令就可以 ...
- 23.3.3 Web存储机制【JavaScript高级程序设计第三版】
Web Storage 最早是在Web 超文本应用技术工作组(WHAT-WG)的Web 应用1.0 规范中描述的. 这个规范的最初的工作最终成为了HTML5 的一部分.Web Storage 的目的是 ...
- Python入门学习笔记4:他人的博客及他人的学习思路
看其他人的学习笔记,可以保证自己不走弯路.并且一举两得,即学知识又学方法! 廖雪峰:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958 ...
- Teen Readers【青少年读者】
Teen Readers Teens and younger children are reading a lot less for fun, according to a Common Sense ...
- 004---基于TCP的套接字
基于TCP的套接字 tcp是基于链接的,必须先启动服务端,然后再启动客户端去连接服务端. 之前实现的简单套接字就是基于TCP的,但是只能实现收发消息一次.服务器与客户端都断开了.不够过瘾. 通信循环版 ...
- 用filter()筛选出素数
'use strict'; function get_primes(arr) { return arr.filter(function isPrime(number) { if (typeof num ...