当前位置: 首页 > news >正文

余姚网站推广策划案wordpress交易系统

余姚网站推广策划案,wordpress交易系统,开发一款app得多少钱,hao123从上网官网文章目录 概述scsi_cmd:SCSI命令result字段proto_op字段proto_type字段 SCSI命令下发scsi_request_fnscsi_dev_queue_readyscsi_host_queue_ready SCSI命令响应命令请求完成的软中断处理 相关参考 概述 SCSI子系统向上与块层对接,由块层提交的对块设备的…

文章目录

    • 概述
    • scsi_cmd:SCSI命令
      • result字段
      • proto_op字段
      • proto_type字段
    • SCSI命令下发
      • scsi_request_fn
        • scsi_dev_queue_ready
        • scsi_host_queue_ready
    • SCSI命令响应
      • 命令请求完成的软中断处理
    • 相关参考

概述

SCSI子系统向上与块层对接,由块层提交的对块设备的IO请求,会由SCSI子系统转换成SCSI协议的标准命令,然后调用Scsi_Host结构的queuecommand回调下发到低层驱动执行;低层驱动会将SCSI命令和数据发送给真实的设备,并在请求完成后,调用scsi_cmd结构中的scsi_done回调,将请求响应信息返回给SCSI中层,SCSI中层完成请求响应的解析后,将结果返回给块层。

scsi_cmd:SCSI命令

struct scsi_cmnd {struct scsi_request req;struct scsi_device *device;struct list_head list;     // 用于链入到关联SCSI设备的SCSI命令链表中struct list_head eh_entry;     // 用于链入到SCSI Host的错误恢复链表中struct delayed_work abort_work;struct rcu_head rcu;int eh_eflags;unsigned long serial_number;unsigned long jiffies_at_alloc;int retries;   // SCSI命令已重试的次数int allowed;   // SCSI命令允许重试的次数unsigned char prot_op;     // DIF操作类型unsigned char prot_type;   // DIF保护类型unsigned char prot_flags;unsigned short cmd_len;enum dma_data_direction sc_data_direction;unsigned char *cmnd;struct scsi_data_buffer sdb;  // SCSI命令的数据缓冲区struct scsi_data_buffer *prot_sdb;     // SCSI命令的保护数据缓冲区unsigned underflow;	unsigned transfersize;struct request *request;unsigned char *sense_buffer;   // 存放sense信息的缓冲区void (*scsi_done) (struct scsi_cmnd *);    // 底层驱动完成IO请求后,调用scsi_done将结果返回给SCSIunsigned char *host_scribble;	int result;    // 存放低层驱动返回的IO状态信息int flags;
};

result字段

result携带了驱动或SCSI中层在完成SCSI命令处理后返回的一些结果信息,一共包含4个字段。
在这里插入图片描述

  • driver_byte:由SCSI中层进行设置;
  • host_byte:存放底层驱动返回的状态信息;
  • msg_byte:存放主机适配自身的一些信息;
  • status_byte:存放目标设备返回的状态信息,由SCSI协议定义。

proto_op字段

proto_op字段描述了SCSI命令的DIF操作类型,由scsi_prot_operations枚举类型定义:

enum scsi_prot_operations {SCSI_PROT_NORMAL = 0,SCSI_PROT_READ_INSERT,SCSI_PROT_WRITE_STRIP,SCSI_PROT_READ_STRIP,SCSI_PROT_WRITE_INSERT,SCSI_PROT_READ_PASS,SCSI_PROT_WRITE_PASS,
}

proto_type字段

proto_type字段描述了SCSI命令支持的DIF保护类型,由t10_dif_type枚举类型定义:

enum t10_dif_type {T10_PI_TYPE0_PROTECTION = 0x0,T10_PI_TYPE1_PROTECTION = 0x1,T10_PI_TYPE2_PROTECTION = 0x2,T10_PI_TYPE3_PROTECTION = 0x3,
}

SCSI命令下发

scsi_request_fn

在这里插入图片描述

scsi_dev_queue_ready

scsi_dev_queue_ready检查SCSI设备运行IO情况,确认是否允许下发新的IO。函数检查的维度有两个:

  • 检查SCSI设备的IO请求队列是否已满。若满,则不允许下发新的IO;
  • 检查SCSI设备是否设置了device_blocked。若设置,则需要等待device_blocked计数减为0时,才允许下发IO。

在这里插入图片描述

scsi_host_queue_ready

scsi_host_queue_ready检查主机适配器能否下发新的IO,检查逻辑与scsi_dev_queue_ready类似。
在这里插入图片描述

SCSI命令响应

SCSI中层在将SCSI命令请求下发给驱动时,会设置scsi_cmnd结构中的done回调函数,驱动在完成IO请求时,通过调用done回调,将IO响应信息返回给中层。
在这里插入图片描述

命令请求完成的软中断处理

IO请求完成的处理流程前半部分在硬中断上下文处理,后半部分的工作回切换到软中断进行处理,SCSI提供的软中断处理入口是scsi_softirq_done函数。scsi_softirq_done的工作如下:

  1. 调用scsi_decide_disposition解析scsi_cmd的返回信息,包括驱动返回状态、sense数据等,确定如何进一步处理scsi_cmd;
  2. 根据scsi_decide_disposition返回的动作,处理scsi_cmnd,分为几种情况:
    • SUCCESS:IO成功完成,将结果返回上层;
    • NEEDS_RETRY/ADD_TO_MLQUEUE:IO重试。把scsi_cmnd重新加入到块设备请求队列处理;
    • 默认情况:IO错误处理。调用scsi_en_scmd_add把scsi_cmnd加入到错误处理队列中,等待错误恢复。

scsi_softirq_done流程示意如下:
在这里插入图片描述

相关参考

  • 《存储技术原理分析:基于Linux 2.6内核源代码分析》
http://www.sczhlp.com/news/111098/

相关文章:

  • 十大网站开发公司简洁wordpress
  • 自定义表单网站开发公司工程部奖励规定
  • 网站建设如何站内搜索南昌建筑工程公司
  • 流量网站网站导航栏 字体
  • 网站网页设计优秀案例怎么做网站的签约编辑
  • 怎么制作一个网站的二维码儿童产品网站建设
  • 广州网站建设公司网络安全优化有孩子做的网站
  • 网站seo重庆广州网站设计流程
  • 0511城市建设网站棚户区改造北京中天人建设工程有限公司网站
  • 做视频网站需要什么证书优化网站加载速度
  • 编译Unity4.3.1f1
  • 全国工程建设信息网站我为什么不建议年轻人做销售
  • 网站建设有什么形式北京展柜设计制作公司
  • 谷歌网站优化工具wordpress空间服务器
  • 郑州网站外包公司简介ui培训班哪里比较好
  • 推荐网站制作公司金乡县住房和城乡建设局网站
  • 织梦系统seo网站模板中国东盟建设集团有限公司网站
  • 摄影网站设计说明书厦门网站建设解决方案
  • 上海手机网站开发广州人看不起番禺
  • 济南做网站互联网公司有哪些免费ppt模板下载有哪些
  • 利用网络媒体营销来做电商网站论文个人主页免费网站
  • asp大型网站开发如何做销售直播网站
  • 上海做网站找哪个公司好学计算机出来能干什么
  • 中国建设领域专业人员网站网站模版免费下载
  • 海安公司网站建设第三方网站开发优缺点
  • 【R课堂-电机专栏】为什么提高电机的电压时,转速会随之上升?
  • 网站建设的整个流程东莞seo网站关键词优优化
  • 长沙哪家公司做网站好app开发价格参考
  • 做股东变更要上哪个网站可以自己设计logo的软件
  • 中小企业建站服务wordpress哪一年开始