在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

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

113次阅读
没有评论

共计 2593 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章主要介绍 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 的操作代码”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2593字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 两个人看的www高清观看 | 黄色片视频在线观看 | 亚洲一卡2卡三卡4卡无卡下载 | 亚洲一区在线视频观看 | 熟睡中被义子侵犯在线播放 | 精品一区二区久久久久久久网站 | 久久久精品久久日韩一区综合 | 国产一线天精品视频 | 亚洲熟妇无码av不卡在线播放 | 综合久久久久6亚洲综合 | 日韩免费无码一区二区视频 | 加勒比中文无码久久综合色 | 国产成人影院 | 欧美黑人巨大videos精品 | 9丨精品国产高清自在线看 a 'v片欧美日韩在线 | 久久久亚洲欧洲国产 | 天天做人人爱夜夜爽2020毛片 | 国产区图片区小说区亚洲区 | 亚洲天堂va | 国内久久 | 亚洲视频99 | 国产亚洲精品久久久性色情软件 | 九九草| 四虎在线播放免费永久视频 | 一级毛片在线免费播放 | 欧美成妇人吹潮在线播放 | 国产农村户外妇性视频 | 尤物在线精品视频 | 亚洲成人网页 | 精品在线不卡 | 亚洲乱码国产乱码精华 | 亚洲色吧| 国产精品久久久久久久久久妇女 | 一级特黄录像免费播放肥 | 天天综合网网欲色 | 久久久久综合国产 | 国产精品一区二区久久精品 | 久久综合久久自在自线精品自 | 成人99国产精品一级毛片 | 欧美日本韩国国产 | 久久精品国内一区二区三区 |