+ -
当前位置:首页 → 问答吧 → sb_read有没有进行磁盘IO

sb_read有没有进行磁盘IO

时间:2010-07-21

来源:互联网

跟踪了一下buffer_head.h中sb_read函数的源码
276sb_bread(struct super_block *sb, sector_t block)
277{
278        return __bread(sb->s_bdev, block, sb->s_blocksize);
279}

发现除了在bh不是update的时候会同步磁盘数据外,还没有发现其它的IO操作
有个疑问是如果请求的数据块在内存中,搜索page cache就可以了
如果没有在内存中,那么它有啥用处

哪位帮忙给指一下是在哪里发起IO操作的?
谢谢!

作者: openspace   发布时间: 2010-07-21

本帖最后由 kgn28 于 2010-07-21 11:55 编辑


QUOTE:
有个疑问是如果请求的数据块在内存中,搜索page cache就可以了
如果没有在内存中,那么它有啥用处

回复 openspace
如果是写操作,需要一个block作为该block的缓存(linux任何时候内核都是对cache操作,所以需要先有一块缓冲区做缓冲),那么就申请一个新的BH和页。

作者: kgn28   发布时间: 2010-07-21

回复 kgn28


    如果是读操作呢?
    看了一下代码,对于对应的cache块,如果没有,则返回NULL;并不会去磁盘读取
    不知道理解的对不对?

作者: openspace   发布时间: 2010-07-21

热门下载

更多