新聞中心
這篇文章主要為大家展示了“cephfs linux kernel client針對(duì)fscache的操作代碼”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“cephfs linux kernel client針對(duì)fscache的操作代碼”這篇文章吧。
姑蘇網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,姑蘇網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為姑蘇上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的姑蘇做網(wǎng)站的公司定做!
針對(duì)inode在fscache中操作主要集中在數(shù)據(jù)結(jié)構(gòu)struct fscache_cookie_def中,具體的數(shù)據(jù)結(jié)構(gòu)及其操作如下:
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
|__從參數(shù)cookie_netfs_data的到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用memcpy()將struct ceph_inode_info中的i_vino內(nèi)容復(fù)制到buffer中
ceph_fscache_inode_get_attr(void *cookie_netfs_data, uint64_t *size) 讀取struct ceph_inode_info中vfs_inode的大小
|__從參數(shù)cookie_netfs_data的到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用i_size_read()函數(shù)讀取struct ceph_inode_info中vfs_inode的大小且保存到size中
ceph_fscache_inode_get_aux(void *cookie_netfs_data, void *buffer, uint16_t bufmax)
|__從參數(shù)cookie_netfs_data的到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__初始化struct ceph_aux_inode信息
|__從struct ceph_inode_info結(jié)構(gòu)中初始化struct ceph_aux_inode信息
|__將struct ceph_aux_inode信息復(fù)制到buffer中
ceph_fscache_inode_check_aux(void *cookie_netfs_data, void *data, uint16_t dlen)
|__從參數(shù)cookie_netfs_data的到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__從struct ceph_inode_info結(jié)構(gòu)中初始化struct ceph_aux_inode信息
|__比較參數(shù)中的data和初始化后的struct ceph_aux_inode信息
ceph_fscache_inode_now_uncached(void *cookie_netfs_data)
|__從參數(shù)cookie_netfs_data的到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用pagevec_init()函數(shù)初始化pvec
|__調(diào)用pagevec_lookup()函數(shù)查找struct ceph_inode_info里vfs_inode.i_mapping里所有映射的物理內(nèi)存頁(yè)
|__調(diào)用ClearPageFsCache()函數(shù)清除物理內(nèi)存頁(yè)的fscache
|__調(diào)用pagevec_release()函數(shù)釋放pvec
ceph_fscache_register_inode_cookie(struct inode *inode)
|__從參數(shù)inode中得到struct ceph_inode_info以及struct ceph_fs_client信息
|__調(diào)用fscache_acquire_cookie()函數(shù)得到訪問ceph fscache的cookie值且將該cookie值保存到struct ceph_inode_info的fscache中
ceph_fscache_unregister_inode_cookie(struct ceph_inode_info *ci)
|__調(diào)用fscache_uncache_all_inode_pages()函數(shù)從cache中刪除所有inode占用的物理內(nèi)存頁(yè)
|__調(diào)用fscache_relinquish_cookie()函數(shù)刪除cookie
ceph_fscache_can_enable(void *data)
|__從參數(shù)data中得到struct inode數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用inode_is_open_for_write(inode)函數(shù)且返回該函數(shù)返回值的非
ceph_fscache_file_set_cookie(struct inode *inode, struct file *filp)
|__從參數(shù)inode得到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用fscache_cookie_valid()函數(shù)檢查struct ceph_inode_info中的fscache是否有效,若無效則直接返回
|__調(diào)用inode_is_open_for_write()函數(shù)檢查inode是打開并可寫
|__調(diào)用fscache_disable_cookie()函數(shù)禁用cookie
|__調(diào)用fscache_uncache_all_inode_pages()函數(shù)刪除掉cache中inode的所有物理內(nèi)存頁(yè)
|__調(diào)用inode_is_open_for_write()函數(shù)檢查inode是未打開且不可寫
|__調(diào)用fscache_enable_cookie()函數(shù)啟用cookie
ceph_fscache_register()
|__調(diào)用fscache_register_netfs()函數(shù)注冊(cè)ceph的fscache
ceph_fscache_unregister()
|__調(diào)用fscache_unregister_netfs()函數(shù)注銷ceph的fscache
ceph_fscache_register_fs(struct ceph_fs_client *fs)
|__調(diào)用fscache_acquire_cookie()函數(shù)得到訪問ceph fscache的cookie值且將該cookie值保存到struct ceph_fs_client的fscache中
ceph_fscache_unregister_fs(struct ceph_fs_client *fsc)
|__調(diào)用fscache_relinquish_cookie()函數(shù)釋放fsc->fscache數(shù)據(jù)結(jié)構(gòu)
ceph_fscache_session_get_key(void *cookie_netfs_data, void *buffer, uint16_t maxbuf)
|__從參數(shù)cookie_netfs_data的到struct ceph_fs_client數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用memcpy()函數(shù)將struct ceph_fs_client數(shù)據(jù)結(jié)構(gòu)中的client->fsid值復(fù)制到buffer中
ceph_readpage_from_fscache(struct inode *inode, struct page *page)
|__從參數(shù)inode得到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用fscache_read_or_alloc_page()函數(shù)從fscache中讀取inode的內(nèi)容并寫到page中
ceph_readpages_from_fscache(struct inode *inode, struct address_space *mapping, struct list_head *pages, unsigned *nr_pages)
|__從參數(shù)inode得到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用fscache_read_or_alloc_pages()函數(shù)從fscahe中讀取mapping中的數(shù)據(jù)并寫入到pages中
ceph_readpage_to_fscache(struct inode *inode, struct page *page)
|__從參數(shù)inode得到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用fscache_write_page()函數(shù)將物理內(nèi)存頁(yè)page中的數(shù)據(jù)同步到fscache中
ceph_invalidate_fscache_page(struct inode *inode, struct page *page)
|__從參數(shù)inode得到struct ceph_inode_info數(shù)據(jù)結(jié)構(gòu)
|__調(diào)用fscache_wait_on_page_write()函數(shù)等待page寫入完成
|__調(diào)用fscache_uncache_page()函數(shù)將page中的內(nèi)容從struct ceph_inode_info中的fscache中刪除
ceph_fscache_revalidate_cookie(struct ceph_inode_info *ci)
|__調(diào)用cache_valid()函數(shù)檢查ci指定的fscache是否有效,若無效
|__調(diào)用fscache_check_consistency()函數(shù)校驗(yàn)ci->fscache的一致性,若不一致
|__調(diào)用fscache_invalidate()函數(shù)設(shè)置ci->fscache無效
|__設(shè)置ci->i_fscache_gen=ci->i_rdcache_gen
以上是“cephfs linux kernel client針對(duì)fscache的操作代碼”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞標(biāo)題:cephfslinuxkernelclient針對(duì)fscache的操作代碼
網(wǎng)頁(yè)鏈接:http://www.ef60e0e.cn/article/pgpjgd.html