欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

cephfskernelclient針對(duì)dir的file_operations操作代碼

這篇文章給大家分享的是有關(guān)cephfs kernel client針對(duì)dir的file_operations操作代碼的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

疏附網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)

cephfs kernel client針對(duì)dir的file_operations操作

const struct file_operations ceph_dir_fops = {

        .read = ceph_read_dir,

        .iterate = ceph_readdir,

        .llseek = ceph_dir_llseek,

        .open = ceph_open,

        .release = ceph_release,

        .unlocked_ioctl = ceph_ioctl,

        .fsync = ceph_fsync,

};

ceph_read_dir(struct file *file, char __user *buf, size_t size, loff_t *ppos)    只有在mount時(shí)帶有參數(shù)-o dirstat時(shí)該函數(shù)才有效

|__調(diào)用ceph_test_mount_opt()函數(shù)檢查mount options中是否包含DIRSTAT,若不包含則直接返回

|__若struct ceph_file_info中的dir_info為空

    |__調(diào)用kmalloc()函數(shù)為dir_info分配空間

    |__使用snprintf()函數(shù)向dir_info的內(nèi)存空間進(jìn)行格式化輸出

|__調(diào)用copy_to_user()函數(shù)將dir_info中的內(nèi)容復(fù)制到用戶態(tài)空間buf中

ceph_readdir(struct file *file, struct dir_context *ctx)

|__調(diào)用dir_emit()函數(shù)向外發(fā)布”.”和”..”信息

|__若mount options中包含DCACHE則說明應(yīng)該盡可能的從dcache中讀取dir的信息

    |__調(diào)用__dcache_readdir()函數(shù)從dcache中讀取dir

    |__返回值不等于EAGAIN

        |__直接返回

|__調(diào)用need_send_readdir()函數(shù)檢查是否應(yīng)該從集群中讀取dir的內(nèi)容

    |__得到操作碼op=CEPH_MDS_OP_LSSNAP或者CEPH_MDS_OP_READDIR

    |__調(diào)用ceph_mdsc_create_request()函數(shù)創(chuàng)建mds請(qǐng)求

    |__調(diào)用ceph_alloc_readdir_reply_buffer()函數(shù)為從集群中讀取到的dir內(nèi)容分配內(nèi)存空間

    |__調(diào)用ceph_mdsc_do_request()函數(shù)將請(qǐng)求同步發(fā)送給mds進(jìn)程

|__遍歷struct ceph_file_info->last_readdir->r_reply_info->dir_nr

    |__調(diào)用dir_emit()函數(shù)向外發(fā)布dir信息

ceph_dir_llseek(struct file *file, loff_t offset, int whence)

|__根據(jù)whence的不同值更新offset的值

|__若offset>=0

    |__調(diào)用need_reset_readdir()函數(shù)檢查是否需要reset readdir

        |__調(diào)用reset_readdir()函數(shù)

    |__調(diào)整file->f_pos值為offset值

ceph_open(struct inode *inode, struct file *file)    該函數(shù)在打開文件時(shí)被調(diào)用

|__調(diào)用prepare_open_request()函數(shù)來創(chuàng)建ceph_mds_request請(qǐng)求

|__調(diào)用ceph_mdsc_do_request()函數(shù)將ceph_mds_request請(qǐng)求同步的發(fā)送給mds進(jìn)程

|__調(diào)用ceph_init_file()函數(shù)創(chuàng)建ceph_file_info數(shù)據(jù)結(jié)構(gòu)且將該數(shù)據(jù)結(jié)構(gòu)放入到file->private_data中

ceph_release(struct inode *inode, struct file *file)    該函數(shù)在關(guān)閉文件時(shí)被調(diào)用

|__調(diào)用ceph_put_fmode()函數(shù)減少打開文件的引用次數(shù),若引用次數(shù)為0,則從本地cache中刪除該文件

ceph_ioctl(struct file *file, unsigned int cmd, unsigned long arg)

|__根據(jù)cmd的值做不同的處理

    |__cmd==CEPH_IOC_GET_LAYOUT

        |__ceph_ioctl_get_layout()

            |__ceph_do_getattr(CEPH_STAT_CAP_LAYOUT)從mds集群中讀取file對(duì)應(yīng)的inode的layout信息到ceph_inode_info的i_layout中

            |__將i_layout信息寫入到struct ceph_ioctl_layout數(shù)據(jù)結(jié)構(gòu)中且通過copy_to_user()函數(shù)將數(shù)據(jù)返回給用戶態(tài)

    |__cmd==CEPH_IOC_SET_LAYOUT

        |__ceph_ioctl_set_layout()

            |__調(diào)用copy_from_user()函數(shù)將新的layout信息從用戶態(tài)復(fù)制到內(nèi)核態(tài)

            |__調(diào)用ceph_do_getattr()函數(shù)從mds集群中讀取當(dāng)前的layout信息

            |__調(diào)用__validate_layout()函數(shù)檢查新設(shè)置的layout是否有效

            |__調(diào)用ceph_mdsc_create_request()函數(shù)創(chuàng)建request請(qǐng)求

            |__調(diào)用ceph_mdsc_do_request()函數(shù)同步的發(fā)送request請(qǐng)求到mds集群

    |__cmd==CEPH_IOC_SET_LAYOUT_POLICY

        |__ceph_ioctl_set_layout_policy()

            |__調(diào)用copy_from_user()函數(shù)將新的layout信息從用戶態(tài)復(fù)制到內(nèi)核態(tài)

            |__調(diào)用__validate_layout()函數(shù)檢查新設(shè)置的layout是否有效

            |__調(diào)用ceph_mdsc_create_request()函數(shù)創(chuàng)建request請(qǐng)求

            |__調(diào)用ceph_mdsc_do_request()函數(shù)同步的發(fā)送request請(qǐng)求到mds集群

    |__cmd==CEPH_IOC_GET_DATALOC                計(jì)算data所在的ceph集群中的位置信息

        |__ceph_ioctl_get_dataloc()

            |__調(diào)用copy_from_user()函數(shù)將ceph_ioctl_dataloc信息復(fù)制到內(nèi)核態(tài)

            |__調(diào)用ceph_calc_file_object_mapping()函數(shù)計(jì)算ceph_ioctl_dataloc信息中指定文件所在的oid等信息

            |__調(diào)用ceph_object_locator_to_pg()函數(shù)計(jì)算出oid所在的pg信息

            |__調(diào)用ceph_pg_to_acting_primary()函數(shù)計(jì)算出pg所在的主osd信息

            |__調(diào)用copy_to_user()函數(shù)將計(jì)算出來的信息發(fā)送回給用戶態(tài)

    |__cmd==CEPH_IOC_LAZYIO                        設(shè)置LAZYIO標(biāo)識(shí)

        |__ceph_ioctl_lazyio()

            |__ 判斷struct ceph_file_info中的fmode是否未設(shè)置CEPH_FILE_MODE_LAZY

                |__設(shè)置struct ceph_file_info中的fmode擁有CEPH_FILE_MODE_LAZY標(biāo)識(shí)

                |__更新ceph_inode_info中的i_nr_by_mode數(shù)組

                |__調(diào)用ceph_check_caps()函數(shù)更新caps

    |__cmd==CEPH_IOC_SYNCIO

        |__ceph_ioctl_syncio()

            |__設(shè)置struct ceph_file_info結(jié)構(gòu)中的flags的CEPH_F_SYNC位

ceph_fsync(struct file *file, loff_t start , loff_t end, int datasync)

|__調(diào)用ceph_sync_write_wait()函數(shù)等待inode上所有未完成的osd請(qǐng)求執(zhí)行完畢

|__調(diào)用try_flush_caps()函數(shù)將所有dirty的caps刷回到mds

|__調(diào)用unsafe_request_wait()函數(shù)等待inode上所有針對(duì)mds請(qǐng)求執(zhí)行完畢

感謝各位的閱讀!關(guān)于“cephfs kernel client針對(duì)dir的file_operations操作代碼”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)站欄目:cephfskernelclient針對(duì)dir的file_operations操作代碼
標(biāo)題來源:http://aaarwkj.com/article12/ijppgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、建站公司自適應(yīng)網(wǎng)站、網(wǎng)站排名云服務(wù)器、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
亚洲精品国产中文字幕| 欧美一区二区三区十区| 九九久久亚洲av成人乱片| 蜜桃网站视频免费观看| 亚洲精品中文字幕码专区| 日本少妇激情后入嗯啊| 99久热在线精品视频| 国产精品一区二区高潮| 偷窥偷拍视频一区二区| 黄色成人av在线网站| 久草免费福利视频资源站| 天堂av在线网址观看| 国产黄片大秀在线观看| 中文字幕日产乱码一二三区| 亚洲精品自拍一二三四区| 91精品婷婷国产综合| 精品国产无遮挡污污网站| 亚洲人色中文字幕天堂| 天天操天天干蜜桃av| 成人午夜激情福利动态| 开心五月婷婷丁香综合| 亚洲av正片一区二区三区| 国产欧美日韩精品av| 亚洲激情久热中文字幕| 香蕉视频网站欧美一区| 日韩亚洲国产激情一区二区| 日本在线精品在线观看| 麻豆国产传媒69国产| 欧美日韩一区二区高清在线| 日本黄色一区二区三区四区| 欧美日韩中文字幕精品视频| 亚洲国产成人一区二区精品区| 亚洲一区二区三区 日韩精品| 欧美一级黄色免费电影| 日本丝袜福利在线观看| 国产一区二区三区性色| 国产精品女同久久久久久| 欧美激情欧美狂野欧美精品| 黄色片在线观看中文字幕| 91精品夜夜夜一区二区| 欧美精品福利一区二区|