您好,登錄后才能下訂單哦!
這篇文章主要介紹了cephfs kernel client針對dentry的操作代碼,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
cephfs kernel client針對dentry的操作
const struct dentry_operations ceph_dentry_ops = {
.d_revalidate = ceph_d_revalidate,
.d_release = ceph_d_release,
.d_prune = ceph_d_prune,
};
ceph_d_revalidate(struct dentry *dentry, unsigned int flags) 用于檢查cache中的dentry是否有效
|__調用dget_parent()函數得到dentry對應的parent dentry
|__調用d_inode()函數得到parent dentry對應的struct inode數據
|__調用dentry_lease_is_valid()函數檢查dentry lease是否有效
|__若無效
|__得到操作碼op=CEPH_MDS_OP_LOOKUPSNAP或者CEPH_MDS_OP_LOOKUP
|__調用ceph_mdsc_create_request()函數創建mds請求
|__調用ceph_mdsc_do_request()函數將請求同步發送給mds進程
|__調用ceph_dentry_lru_touch()函數將dentry添加到lru中
ceph_d_release(struct dentry *dentry) 釋放dentry時被調用
|__調用ceph_dentry()函數得到struct ceph_dentry_info數據結構
|__調用ceph_dentry_lru_del()函數將dentry從lru中刪除
|__設置dentry->d_fsdata=NULL
|__調用ceph_put_mds_session()函數釋放lease session
|__調用kmem_cache_free()函數從cache中釋放struct ceph_dentry_info數據結構
ceph_d_prune(struct dentry *dentry) 當vfs從cache中刪除dentry時調用該函數
|__調用IS_ROOT()函數檢查dentry是否包含有效的parent,若dentry是root則直接返回
|__調用d_unhashed()函數檢查dentry是否不是hashed,若是則直接返回(未hashed dentry不受影響)
|__調用ceph_dir_clear_complete()函數減少dentry->parent的struct inode中的中的i_release_count的引用計數值
感謝你能夠認真閱讀完這篇文章,希望小編分享的“cephfs kernel client針對dentry的操作代碼”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。