千家信息网

cephfs linux kernel client针对export的操作代码

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍cephfs linux kernel client针对export的操作代码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!const struct expor
千家信息网最后更新 2026年11月03日cephfs linux kernel client针对export的操作代码

这篇文章主要介绍cephfs linux kernel client针对export的操作代码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

const struct export_operations ceph_export_ops = {

.encode_fh = ceph_encode_fh,

.fh_to_dentry = ceph_fh_to_dentry,

.fh_to_parent = ceph_fh_to_parent,

.get_parent = ceph_get_parent,

.get_name = ceph_get_name,

};

ceph_encode_fh(struct inode *inode, u32 *rawfh, int *max_len, struct inode *parent_inode)

|__调用ceph_snap(inode)函数检查inode是否包含snap信息,若包含snap则直接返回

|__输入参数校验

|__若parent_inode不为空且max_len小于sizeof(struct ceph_nfs_confh)/4

|__设置max_len=sizeof(struct ceph_nfs_confh)/4

|__直接返回

|__若parent_inode为空且max_len小于sizeof(struct ceph_nfs_fh)/4

|__设置max_len=sizeof(struct ceph_nfs_fh)/4

|__直接返回

|__若parent_inode不为空

|__设置struct ceph_nfs_confh的ino为inode的ino

|__设置struct ceph_nfs_confh的parent_ino为parent_inode的ino

|__设置max_len为sizeof(struct ceph_nfs_confh)/4

|__返回FILEID_INO32_GEN_PARENT

|__若parent_inode为空

|__设置struct ceph_nfs_fh的ino为inode的ino

|__设置max_len为sizeof(struct ceph_nfs_fh)/4

|__返回FILEID_INO32_GEN

ceph_fs_to_dentry(struct super_block *sb, struct fid *fid, int fh_len, int fh_type)

|__通过fid得到struct ceph_nfs_fh对象

|__检查fh_type是否是FILEID_INO32_GEN或FILEID_INO32_GEN_PARENT,若不是则直接返回

|__调用__fh_to_dentry(sb, fh->ino)函数找到fh->ino对应的dentry结构

__fh_to_dentry(struct super_block *sb, u64 ino)

|__通过sb得到struct ceph_mds_client结构

|__调用ceph_find_inode()函数得到ino指定的struct inode结构

|__若struct inode结构为空

|__调用ceph_mdsc_create_request(CEPH_MDS_OP_LOOKUPINO)函数创建查找指定inode的请求

|__调用ceph_mdsc_do_reqeust()函数将请求发送给mds集群得到指定inode number对应的inode结构

|__调用d_obtain_alias(inode)函数得到inode对应的dentry信息

|__调用ceph_init_dentry()函数来初始化dentry数据结构

ceph_fh_to_parent(struct super_block *sb, struct fid *fid, int fh_len, int fh_type)

|__通过sb得到struct ceph_mds_client结构

|__调用__get_parent()函数获取cfh->ino对应的parent的dentry结构

|__若获取parent的dentry结构失败

|__调用__fh_to_dentry(sb, cfh->parent_ino)函数获取parent_ino对应的dentry结构

__get_parent(struct super_block *sb, struct dentry *child, u64 ino)

|__通过sb得到struct ceph_mds_client结构

|__调用ceph_mdsc_create_request(CEPH_MDS_OP_LOOKUPPARENT)函数创建查找parent inode的请求

|__调用ceph_mdsc_do_request()函数将请求发送给mds集群

|__从请求的r_target_inode字段得到parent inode信息

|__调用d_obtain_alias(inode)函数得到inode对应的dentry

|__调用ceph_init_dentry(dentry)函数初始化dentry数据结构

ceph_get_parent(struct dentry *child)

|__调用ceph_snap()函数检查child是否包含snap,若包含snap则直接返回

|__调用__get_parent()函数获取child对应parent的dentry结构

ceph_get_name(struct dentry *parent, char *name, struct dentry *child)

|__从child得到struct ceph_mds_client数据结构

|__调用ceph_mdsc_create_request(CEPH_MDS_OP_LOOKUPNAME)函数创建查找inode name的请求

|__调用ceph_mdsc_do_request()函数将请求同步发送给mds集群

|__调用memcpy()函数将请求的返回信息中的dname复制到name中

以上是"cephfs linux kernel client针对export的操作代码"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

函数 结构 信息 数据 数据结构 集群 检查 代码 内容 篇文章 价值 兴趣 参数 字段 对象 小伙 小伙伴 更多 知识 行业 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中智农互联网科技 百单网互联网科技有限公司怎么样 云之行互联网科技 北京互联网科技公司 百单互联网科技有限公司 互联网科技创新企业排名 中盈科技互联网信息有限公司 欧洲十大科技互联网公司 昭通互联网科技选哪家 青海科技产业互联网发展 中和天地互联网科技有限公司 广州千川互联网科技有限公司 广州富喜互联网络科技 启辰互联网科技 中天科技中国工业互联网 上海互联网科技公司ppt 艺电能源互联网科技有限公司招聘 北京品多多互联网科技有限公司 承德科技产业互联网平台 瑞安市蟠桃会互联网科技有限公司 江苏根荣互联网科技 有木互联网科技 互联网对科技的发展 武汉健翔互联网络科技有限公司 互联网金融科技展 富国互联网金融科技混合基金 信承诺互联网科技有限公司 广州梦谷互联网科技有限公司领导 中国科技和美国互联网 福仕德教育科技互联网
0