这篇文章主要介绍了cephfs linux kernel client针对ceph_inode_info相关工作队列处理函数的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联建站于2013年成立,先为全南等服务建站,全南等地企业,进行企业商务咨询服务。为全南企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
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相关工作队列处理函数的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!
当前名称:cephfslinuxkernelclient针对ceph_inode_info相关工作队列处理函数的示例分析
分享地址:http://scyingshan.cn/article/jpjjih.html