Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
951d77fd
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
951d77fd
编写于
6月 18, 2016
作者:
J
James Bottomley
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'mkp-scsi/4.7/scsi-fixes' into fixes
上级
27ea13e6
8beb3300
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
12 addition
and
6 deletion
+12
-6
Documentation/scsi/scsi_eh.txt
Documentation/scsi/scsi_eh.txt
+6
-2
drivers/ata/libata-eh.c
drivers/ata/libata-eh.c
+1
-1
drivers/scsi/53c700.c
drivers/scsi/53c700.c
+2
-2
drivers/scsi/scsi_error.c
drivers/scsi/scsi_error.c
+3
-1
未找到文件。
Documentation/scsi/scsi_eh.txt
浏览文件 @
951d77fd
...
...
@@ -263,19 +263,23 @@ scmd->allowed.
3. scmd recovered
ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd
- shost->host_failed--
- clear scmd->eh_eflags
- scsi_setup_cmd_retry()
- move from local eh_work_q to local eh_done_q
LOCKING: none
CONCURRENCY: at most one thread per separate eh_work_q to
keep queue manipulation lockless
4. EH completes
ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper
layer of failure.
layer of failure. May be called concurrently but must have
a no more than one thread per separate eh_work_q to
manipulate the queue locklessly
- scmd is removed from eh_done_q and scmd->eh_entry is cleared
- if retry is necessary, scmd is requeued using
scsi_queue_insert()
- otherwise, scsi_finish_command() is invoked for scmd
- zero shost->host_failed
LOCKING: queue or finish function performs appropriate locking
...
...
drivers/ata/libata-eh.c
浏览文件 @
951d77fd
...
...
@@ -606,7 +606,7 @@ void ata_scsi_error(struct Scsi_Host *host)
ata_scsi_port_error_handler
(
host
,
ap
);
/* finish or retry handled scmd's and clean up */
WARN_ON
(
host
->
host_failed
||
!
list_empty
(
&
eh_work_q
));
WARN_ON
(
!
list_empty
(
&
eh_work_q
));
DPRINTK
(
"EXIT
\n
"
);
}
...
...
drivers/scsi/53c700.c
浏览文件 @
951d77fd
...
...
@@ -1122,7 +1122,7 @@ process_script_interrupt(__u32 dsps, __u32 dsp, struct scsi_cmnd *SCp,
}
else
{
struct
scsi_cmnd
*
SCp
;
SCp
=
scsi_host_find_tag
(
SDp
->
host
,
SCSI_NO_TAG
)
;
SCp
=
SDp
->
current_cmnd
;
if
(
unlikely
(
SCp
==
NULL
))
{
sdev_printk
(
KERN_ERR
,
SDp
,
"no saved request for untagged cmd
\n
"
);
...
...
@@ -1826,7 +1826,7 @@ NCR_700_queuecommand_lck(struct scsi_cmnd *SCp, void (*done)(struct scsi_cmnd *)
slot
->
tag
,
slot
);
}
else
{
slot
->
tag
=
SCSI_NO_TAG
;
/*
must populate current_cmnd for scsi_host_find_tag to work
*/
/*
save current command for reselection
*/
SCp
->
device
->
current_cmnd
=
SCp
;
}
/* sanity check: some of the commands generated by the mid-layer
...
...
drivers/scsi/scsi_error.c
浏览文件 @
951d77fd
...
...
@@ -1128,7 +1128,6 @@ static int scsi_eh_action(struct scsi_cmnd *scmd, int rtn)
*/
void
scsi_eh_finish_cmd
(
struct
scsi_cmnd
*
scmd
,
struct
list_head
*
done_q
)
{
scmd
->
device
->
host
->
host_failed
--
;
scmd
->
eh_eflags
=
0
;
list_move_tail
(
&
scmd
->
eh_entry
,
done_q
);
}
...
...
@@ -2227,6 +2226,9 @@ int scsi_error_handler(void *data)
else
scsi_unjam_host
(
shost
);
/* All scmds have been handled */
shost
->
host_failed
=
0
;
/*
* Note - if the above fails completely, the action is to take
* individual devices offline and flush the queue of any
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录