cephfs linux kernel client针对ceph_inode_info相关工作队列处理函数的示例分析

发布时间:2021-12-17 09:59:54 作者:小新
来源:亿速云 阅读:161

这篇文章主要介绍了cephfs linux kernel client针对ceph_inode_info相关工作队列处理函数的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

struct ceph_inode_info {

    ......

    struct work_struct i_wb_work;                //writeback work

    struct work_struct i_pg_inv_work;        //page invaliate work

    struct work_struct i_vmtruncate_work;

    ......

};

struct ceph_inode_info->i_wb_work工作队列处理函数

ceph_writeback_work(struct work_struct *work)

|__从work得到struct ceph_inode_info结构

|__从struct ceph_inode_info结构得到struct inode结构

|__调用filemap_fdatawrite(&inode->i_data)函数将inode->i_data指定的struct address_space中的dirty数据回写到ceph集群中

    |__调用__filemap_fdatawrite()函数

        |__调用__filemap_fdatawrite_range()函数

            |__创建struct writeback_control结构且初始化

            |__调用wbc_attach_fdatawrite_inode()函数将struct writeback_control结构添加到struct inode中

            |__调用do_writepages()函数将struct address_space中的dirty数据回写到ceph集群

                |__调用ceph_writepages_start()函数进行数据回写操作

struct ceph_inode_info->i_pg_inv_work工作队列处理函数

ceph_invalidate_work(struct work_struct *work)

|__从work得到struct ceph_inode_info结构

|__从struct ceph_inode_info结构得到struct inode结构

|__从struct inode结构得到struct ceph_fs_client结构

|__调用invalidate_inode_page2()函数清除掉inode->i_mapping指定的struct address_space中的所有pages

struct ceph_inode_info->i_vmtruncate_work工作队列处理函数

ceph_vmtruncate_work(struct work_strcut *work)

|__从work得到struct ceph_inode_info结构

|__从struct ceph_inode_info结构得到struct inode结构

|__调用__ceph_do_pending_vmtruncate()函数truncate struct inode结构中的struct address_space对应的所有pages

    |__调用truncate_pagecache()函数解除映射并且删除已经truncated的pagecache

    |__调用wake_up_all(&ci->i_cap_wq)函数唤醒struct ceph_inode_info->i_cap_wq上的等待进程

感谢你能够认真阅读完这篇文章,希望小编分享的“cephfs linux kernel client针对ceph_inode_info相关工作队列处理函数的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

推荐阅读:
  1. CephFs的操作方法
  2. Cephfs+Samba构建基于Ceph的文件共享服务

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

cephfs linux kernel

上一篇:怎么附加Spark的源代码

下一篇:python匿名函数怎么创建

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》