深入浅出SCSI子系统(八)SCSI错误恢复

本文详细介绍了SCSI错误恢复的过程,包括命令进入错误恢复、错误恢复线程执行、错误恢复系列、错误恢复完成和恢复正常操作等步骤。重点讨论了SCSI命令如何通过scsi_cmnd结构管理,错误恢复线程如何处理故障命令,以及错误恢复策略如命令取消、设备重置等。此外,还涉及了错误恢复线程如何决定命令的最终状态,如成功完成、重试或进入错误处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

SCSI错误恢复

1 命令进入错误恢复

2 错误恢复线程执行

1.检查感测数据

2.放弃故障命令

3.错误恢复系列

4.错误恢复完成

5.恢复正常操作

3 发送错误恢复命令


SCSI错误恢复

每个SCSI命令都用scsi_cmnd表示。每个SCSI命令有两个连接件将自身链到不同的链表中,分别为list域和eh_entry域。其中前者用来链到空闲链表或者SCSI设备的命令链表。后者用于完成和错误恢复链表。

struct scsi_cmnd {
    struct scsi_device *device;
    struct list_head list;  /* scsi_cmnd participates in queue lists */
    struct list_head eh_entry; /* entry for the host eh_cmd_q */
    struct request *request;    /* The command we are working on */
    int result;     /* Status code from lower level driver *
    /* Low-level done function - can be used by low-level driver to point
     *        to completion function.  Not used by mid/upper level code. */
    void (*scsi_done) (struc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux技术芯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值