91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

發布時間:2021-12-17 09:57:31 來源:億速云 閱讀:246 作者:小新 欄目:云計算

這篇文章主要為大家展示了“cephfs linux kernel client針對fscache的操作代碼”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“cephfs linux kernel client針對fscache的操作代碼”這篇文章吧。

針對inode在fscache中操作主要集中在數據結構struct fscache_cookie_def中,具體的數據結構及其操作如下:

static const struct fscache_cookie_def ceph_fscache_inode_object_def = {

        .name           = "CEPH.inode",

        .type           = FSCACHE_COOKIE_TYPE_DATAFILE,

        .get_key        = ceph_fscache_inode_get_key,

        .get_attr       = ceph_fscache_inode_get_attr,

        .get_aux        = ceph_fscache_inode_get_aux,

        .check_aux      = ceph_fscache_inode_check_aux,

        .now_uncached   = ceph_fscache_inode_now_uncached,

};

ceph_fscache_inode_get_key(void *cookie_netfs_data, void *buffer, uint16_t maxbuf)    讀取struct ceph_inode_info中的i_vino信息到buffer

|__從參數cookie_netfs_data的到struct ceph_inode_info數據結構

|__調用memcpy()將struct ceph_inode_info中的i_vino內容復制到buffer中

ceph_fscache_inode_get_attr(void *cookie_netfs_data, uint64_t *size)    讀取struct ceph_inode_info中vfs_inode的大小

|__從參數cookie_netfs_data的到struct ceph_inode_info數據結構

|__調用i_size_read()函數讀取struct ceph_inode_info中vfs_inode的大小且保存到size中

ceph_fscache_inode_get_aux(void *cookie_netfs_data, void *buffer, uint16_t bufmax)

|__從參數cookie_netfs_data的到struct ceph_inode_info數據結構

|__初始化struct ceph_aux_inode信息

|__從struct ceph_inode_info結構中初始化struct ceph_aux_inode信息

|__將struct ceph_aux_inode信息復制到buffer中

ceph_fscache_inode_check_aux(void *cookie_netfs_data, void *data, uint16_t dlen)

|__從參數cookie_netfs_data的到struct ceph_inode_info數據結構

|__從struct ceph_inode_info結構中初始化struct ceph_aux_inode信息

|__比較參數中的data和初始化后的struct ceph_aux_inode信息

ceph_fscache_inode_now_uncached(void *cookie_netfs_data)

|__從參數cookie_netfs_data的到struct ceph_inode_info數據結構

|__調用pagevec_init()函數初始化pvec

|__調用pagevec_lookup()函數查找struct ceph_inode_info里vfs_inode.i_mapping里所有映射的物理內存頁

|__調用ClearPageFsCache()函數清除物理內存頁的fscache

|__調用pagevec_release()函數釋放pvec

ceph_fscache_register_inode_cookie(struct inode *inode)

|__從參數inode中得到struct ceph_inode_info以及struct ceph_fs_client信息

|__調用fscache_acquire_cookie()函數得到訪問ceph fscache的cookie值且將該cookie值保存到struct ceph_inode_info的fscache中

ceph_fscache_unregister_inode_cookie(struct ceph_inode_info *ci)

|__調用fscache_uncache_all_inode_pages()函數從cache中刪除所有inode占用的物理內存頁

|__調用fscache_relinquish_cookie()函數刪除cookie

ceph_fscache_can_enable(void *data)

|__從參數data中得到struct inode數據結構

|__調用inode_is_open_for_write(inode)函數且返回該函數返回值的非

ceph_fscache_file_set_cookie(struct inode *inode, struct file *filp)

|__從參數inode得到struct ceph_inode_info數據結構

|__調用fscache_cookie_valid()函數檢查struct ceph_inode_info中的fscache是否有效,若無效則直接返回

|__調用inode_is_open_for_write()函數檢查inode是打開并可寫

    |__調用fscache_disable_cookie()函數禁用cookie

    |__調用fscache_uncache_all_inode_pages()函數刪除掉cache中inode的所有物理內存頁

|__調用inode_is_open_for_write()函數檢查inode是未打開且不可寫

    |__調用fscache_enable_cookie()函數啟用cookie

ceph_fscache_register()

|__調用fscache_register_netfs()函數注冊ceph的fscache

ceph_fscache_unregister()

|__調用fscache_unregister_netfs()函數注銷ceph的fscache

ceph_fscache_register_fs(struct ceph_fs_client *fs)

|__調用fscache_acquire_cookie()函數得到訪問ceph fscache的cookie值且將該cookie值保存到struct ceph_fs_client的fscache中

ceph_fscache_unregister_fs(struct ceph_fs_client *fsc)

|__調用fscache_relinquish_cookie()函數釋放fsc->fscache數據結構

ceph_fscache_session_get_key(void *cookie_netfs_data, void *buffer, uint16_t maxbuf)

|__從參數cookie_netfs_data的到struct ceph_fs_client數據結構

|__調用memcpy()函數將struct ceph_fs_client數據結構中的client->fsid值復制到buffer中

ceph_readpage_from_fscache(struct inode *inode, struct page *page)

|__從參數inode得到struct ceph_inode_info數據結構

|__調用fscache_read_or_alloc_page()函數從fscache中讀取inode的內容并寫到page中

ceph_readpages_from_fscache(struct inode *inode, struct address_space *mapping, struct list_head *pages, unsigned *nr_pages)

|__從參數inode得到struct ceph_inode_info數據結構

|__調用fscache_read_or_alloc_pages()函數從fscahe中讀取mapping中的數據并寫入到pages中

ceph_readpage_to_fscache(struct inode *inode, struct page *page)

|__從參數inode得到struct ceph_inode_info數據結構

|__調用fscache_write_page()函數將物理內存頁page中的數據同步到fscache中

ceph_invalidate_fscache_page(struct inode *inode, struct page *page)

|__從參數inode得到struct ceph_inode_info數據結構

|__調用fscache_wait_on_page_write()函數等待page寫入完成

|__調用fscache_uncache_page()函數將page中的內容從struct ceph_inode_info中的fscache中刪除

ceph_fscache_revalidate_cookie(struct ceph_inode_info *ci)

|__調用cache_valid()函數檢查ci指定的fscache是否有效,若無效

    |__調用fscache_check_consistency()函數校驗ci->fscache的一致性,若不一致

        |__調用fscache_invalidate()函數設置ci->fscache無效

    |__設置ci->i_fscache_gen=ci->i_rdcache_gen

以上是“cephfs linux kernel client針對fscache的操作代碼”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

乐山市| 新丰县| 陆丰市| 沈丘县| 武功县| 虹口区| 启东市| 滕州市| 大埔区| 屏东县| 泰兴市| 驻马店市| 张家界市| 平舆县| 广平县| 延寿县| 湟源县| 马山县| 黑龙江省| 子洲县| 南昌县| 富川| 湘潭县| 台州市| 利川市| 大方县| 托克逊县| 昌邑市| 麻栗坡县| 枣强县| 湘乡市| 清远市| 甘洛县| 泽普县| 富平县| 西贡区| 芒康县| 遂溪县| 广德县| 襄垣县| 镇安县|