中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cephfs linux kernel client針對export的操作代碼

發布時間:2021-12-17 10:01:30 來源:億速云 閱讀:251 作者:小新 欄目:云計算

這篇文章主要介紹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的操作代碼”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

固原市| 泸西县| 依安县| 边坝县| 衡阳市| 永德县| 黄龙县| 茌平县| 阿尔山市| 原平市| 万荣县| 靖远县| 鄂托克旗| 永川市| 彰化市| 壤塘县| 鄂托克前旗| 固镇县| 宕昌县| 大城县| 资溪县| 弥渡县| 苗栗县| 辽阳市| 邵武市| 遂溪县| 廉江市| 桐柏县| 泰来县| 阿巴嘎旗| 资讯| 钦州市| 广德县| 新巴尔虎右旗| 邹城市| 泌阳县| 东辽县| 垣曲县| 宾阳县| 扎鲁特旗| 华宁县|