千家信息网

linux中blk函数的用法

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"linux中blk函数的用法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!linux
千家信息网最后更新 2026年11月01日linux中blk函数的用法

本篇内容介绍了"linux中blk函数的用法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

linux 块层学习

1. blk-map.c代码中的函数

blk_rq_append_bio

int blk_rq_append_bio(struct request *rq, struct bio *bio){        if (!rq->bio) { //yyf: rq中无bio时                blk_rq_bio_prep(rq->q, rq, bio);        } else {                if (!ll_back_merge_fn(rq->q, rq, bio))                        return -EINVAL;                rq->biotail->bi_next = bio;                rq->biotail = bio;                rq->__data_len += bio->bi_iter.bi_size;        }        return 0;}EXPORT_SYMBOL(blk_rq_append_bio);

blk_rq_append_bio的功能是挂个bio到rq,如果rq中已经存在bio了,则直接更新rq->biotail指向的最后一个bio的bi_next指针,并更新biotail指针和__data_len长度。

当rq中无bio时,执行blk_rq_bio_prep函数:

void blk_rq_bio_prep(struct request_queue *q, struct request *rq,                     struct bio *bio){        if (bio_has_data(bio)) //yyf: 如果有数据的话,则赋值rq的nr_phys_segments                rq->nr_phys_segments = bio_phys_segments(q, bio);        rq->__data_len = bio->bi_iter.bi_size;        rq->bio = rq->biotail = bio; //yyf: bio挂入rq链表        if (bio->bi_bdev)                rq->rq_disk = bio->bi_bdev->bd_disk;}

bio_has_data判断bio是否携带数据,在头文件中inline定义:

/* * Check whether this bio carries any data or not. A NULL bio is allowed. */static inline bool bio_has_data(struct bio *bio){        if (bio &&            bio->bi_iter.bi_size &&            bio_op(bio) != REQ_OP_DISCARD &&            bio_op(bio) != REQ_OP_SECURE_ERASE &&            bio_op(bio) != REQ_OP_WRITE_ZEROES)                return true;        return false;}

bio_has_data函数很简单,就是判断bio是否存在,是否有bi_size,是否满足一定的操作命令。

"linux中blk函数的用法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

函数 内容 指针 数据 更多 知识 学习 更新 实用 学有所成 接下来 代码 功能 命令 困境 实际 就是 情况 指向 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 瑰夏咖啡 山东特亿宝互联网科技有限公司 互联网科技未来 金融科技 互联网金融 奇酷互联网科技公司 郑州华宇互联网科技 互联网科技公司做什么 互联网科技股午盘股票涨跌 互联网对科技的发展 哈尔滨屹滨互联网科技有限公司 互联网金融科技名词解释 互联网公司高科技产品 中天科技中国工业互联网 从那以后互联网科技有限公司 长沙渺峰互联网科技有限公司 福仕德教育科技互联网 科技信息时代互联网发展 悟空问答互联网科技 互联网科技和医药行业 互联网科技创新方面的资料 瑰夏咖啡 广东万易互联网科技有限公司惠州分公司 上海睿民互联网科技有限公司 互联网科技类展会 深圳互联网科技怎么样 互联网公司会议桌创意科技软装饰 互联网科技公司的市场部门 深圳国际航运科技和互联网 互联网与数字科技关系 张家口科技产业互联网平台
0