Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
8fa728a2
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
8fa728a2
编写于
19年前
作者:
J
Jeff Garzik
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[SCSI] allow sleeping in ->eh_abort_handler()
Signed-off-by:
N
James Bottomley
<
James.Bottomley@SteelEye.com
>
上级
3471c288
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
122 addition
and
49 deletion
+122
-49
Documentation/scsi/scsi_mid_low_api.txt
Documentation/scsi/scsi_mid_low_api.txt
+1
-2
drivers/message/fusion/mptscsih.c
drivers/message/fusion/mptscsih.c
+0
-5
drivers/s390/scsi/zfcp_scsi.c
drivers/s390/scsi/zfcp_scsi.c
+12
-1
drivers/scsi/aic7xxx/aic79xx_osm.c
drivers/scsi/aic7xxx/aic79xx_osm.c
+4
-4
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
+4
-0
drivers/scsi/aic7xxx_old.c
drivers/scsi/aic7xxx_old.c
+14
-1
drivers/scsi/ibmmca.c
drivers/scsi/ibmmca.c
+13
-1
drivers/scsi/ibmvscsi/ibmvscsi.c
drivers/scsi/ibmvscsi/ibmvscsi.c
+0
-2
drivers/scsi/in2000.c
drivers/scsi/in2000.c
+11
-1
drivers/scsi/ipr.c
drivers/scsi/ipr.c
+12
-12
drivers/scsi/ips.c
drivers/scsi/ips.c
+7
-0
drivers/scsi/lpfc/lpfc_scsi.c
drivers/scsi/lpfc/lpfc_scsi.c
+11
-1
drivers/scsi/megaraid/megaraid_mbox.c
drivers/scsi/megaraid/megaraid_mbox.c
+16
-1
drivers/scsi/qla1280.c
drivers/scsi/qla1280.c
+7
-1
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/qla2xxx/qla_os.c
+0
-2
drivers/scsi/scsi_error.c
drivers/scsi/scsi_error.c
+2
-11
drivers/scsi/sym53c8xx_2/sym_glue.c
drivers/scsi/sym53c8xx_2/sym_glue.c
+7
-1
drivers/scsi/ultrastor.c
drivers/scsi/ultrastor.c
+1
-1
drivers/usb/storage/scsiglue.c
drivers/usb/storage/scsiglue.c
+0
-2
未找到文件。
Documentation/scsi/scsi_mid_low_api.txt
浏览文件 @
8fa728a2
...
...
@@ -936,8 +936,7 @@ Details:
*
* Returns SUCCESS if command aborted else FAILED
*
* Locks: struct Scsi_Host::host_lock held (with irqsave) on entry
* and assumed to be held on return.
* Locks: None held
*
* Calling context: kernel thread
*
...
...
This diff is collapsed.
Click to expand it.
drivers/message/fusion/mptscsih.c
浏览文件 @
8fa728a2
...
...
@@ -1707,7 +1707,6 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
MPT_FRAME_HDR
*
mf
;
u32
ctx2abort
;
int
scpnt_idx
;
spinlock_t
*
host_lock
=
SCpnt
->
device
->
host
->
host_lock
;
/* If we can't locate our host adapter structure, return FAILED status.
*/
...
...
@@ -1755,7 +1754,6 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
hd
->
abortSCpnt
=
SCpnt
;
spin_unlock_irq
(
host_lock
);
if
(
mptscsih_TMHandler
(
hd
,
MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK
,
SCpnt
->
device
->
channel
,
SCpnt
->
device
->
id
,
SCpnt
->
device
->
lun
,
ctx2abort
,
2
/* 2 second timeout */
)
...
...
@@ -1772,8 +1770,6 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
hd
->
tmPending
=
0
;
hd
->
tmState
=
TM_STATE_NONE
;
spin_lock_irq
(
host_lock
);
/* Unmap the DMA buffers, if any. */
if
(
SCpnt
->
use_sg
)
{
pci_unmap_sg
(
ioc
->
pcidev
,
(
struct
scatterlist
*
)
SCpnt
->
request_buffer
,
...
...
@@ -1789,7 +1785,6 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
mpt_free_msg_frame
(
ioc
,
mf
);
return
FAILED
;
}
spin_lock_irq
(
host_lock
);
return
SUCCESS
;
}
...
...
This diff is collapsed.
Click to expand it.
drivers/s390/scsi/zfcp_scsi.c
浏览文件 @
8fa728a2
...
...
@@ -433,7 +433,7 @@ zfcp_port_lookup(struct zfcp_adapter *adapter, int channel, scsi_id_t id)
* FAILED - otherwise
*/
int
zfcp_scsi_eh_abort_handler
(
struct
scsi_cmnd
*
scpnt
)
__
zfcp_scsi_eh_abort_handler
(
struct
scsi_cmnd
*
scpnt
)
{
int
retval
=
SUCCESS
;
struct
zfcp_fsf_req
*
new_fsf_req
,
*
old_fsf_req
;
...
...
@@ -611,6 +611,17 @@ zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
return
retval
;
}
int
zfcp_scsi_eh_abort_handler
(
struct
scsi_cmnd
*
scpnt
)
{
int
rc
;
struct
Scsi_Host
*
scsi_host
=
scpnt
->
device
->
host
;
spin_lock_irq
(
scsi_host
->
host_lock
);
rc
=
__zfcp_scsi_eh_abort_handler
(
scpnt
);
spin_unlock_irq
(
scsi_host
->
host_lock
);
return
rc
;
}
/*
* function: zfcp_scsi_eh_device_reset_handler
*
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/aic7xxx/aic79xx_osm.c
浏览文件 @
8fa728a2
...
...
@@ -941,7 +941,7 @@ ahd_linux_queue(Scsi_Cmnd * cmd, void (*scsi_done) (Scsi_Cmnd *))
*/
cmd
->
scsi_done
=
scsi_done
;
ahd_
midlayer_entrypoint_
lock
(
ahd
,
&
flags
);
ahd_lock
(
ahd
,
&
flags
);
/*
* Close the race of a command that was in the process of
...
...
@@ -955,7 +955,7 @@ ahd_linux_queue(Scsi_Cmnd * cmd, void (*scsi_done) (Scsi_Cmnd *))
ahd_cmd_set_transaction_status
(
cmd
,
CAM_REQUEUE_REQ
);
ahd_linux_queue_cmd_complete
(
ahd
,
cmd
);
ahd_schedule_completeq
(
ahd
);
ahd_
midlayer_entrypoint_
unlock
(
ahd
,
&
flags
);
ahd_unlock
(
ahd
,
&
flags
);
return
(
0
);
}
dev
=
ahd_linux_get_device
(
ahd
,
cmd
->
device
->
channel
,
...
...
@@ -965,7 +965,7 @@ ahd_linux_queue(Scsi_Cmnd * cmd, void (*scsi_done) (Scsi_Cmnd *))
ahd_cmd_set_transaction_status
(
cmd
,
CAM_RESRC_UNAVAIL
);
ahd_linux_queue_cmd_complete
(
ahd
,
cmd
);
ahd_schedule_completeq
(
ahd
);
ahd_
midlayer_entrypoint_
unlock
(
ahd
,
&
flags
);
ahd_unlock
(
ahd
,
&
flags
);
printf
(
"%s: aic79xx_linux_queue - Unable to allocate device!
\n
"
,
ahd_name
(
ahd
));
return
(
0
);
...
...
@@ -979,7 +979,7 @@ ahd_linux_queue(Scsi_Cmnd * cmd, void (*scsi_done) (Scsi_Cmnd *))
dev
->
flags
|=
AHD_DEV_ON_RUN_LIST
;
ahd_linux_run_device_queues
(
ahd
);
}
ahd_
midlayer_entrypoint_
unlock
(
ahd
,
&
flags
);
ahd_unlock
(
ahd
,
&
flags
);
return
(
0
);
}
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/aic7xxx/aic7xxx_osm.c
浏览文件 @
8fa728a2
...
...
@@ -2249,6 +2249,8 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
printf
(
" 0x%x"
,
cmd
->
cmnd
[
cdb_byte
]);
printf
(
"
\n
"
);
spin_lock_irq
(
&
ahc
->
platform_data
->
spin_lock
);
/*
* First determine if we currently own this command.
* Start by searching the device queue. If not found
...
...
@@ -2503,6 +2505,8 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
}
spin_lock_irq
(
&
ahc
->
platform_data
->
spin_lock
);
}
spin_unlock_irq
(
&
ahc
->
platform_data
->
spin_lock
);
return
(
retval
);
}
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/aic7xxx_old.c
浏览文件 @
8fa728a2
...
...
@@ -10585,7 +10585,7 @@ aic7xxx_panic_abort(struct aic7xxx_host *p, Scsi_Cmnd *cmd)
* Abort the current SCSI command(s).
*-F*************************************************************************/
static
int
aic7xxx_abort
(
Scsi_Cmnd
*
cmd
)
__
aic7xxx_abort
(
Scsi_Cmnd
*
cmd
)
{
struct
aic7xxx_scb
*
scb
=
NULL
;
struct
aic7xxx_host
*
p
;
...
...
@@ -10802,6 +10802,19 @@ aic7xxx_abort(Scsi_Cmnd *cmd)
return
SUCCESS
;
}
static
int
aic7xxx_abort
(
Scsi_Cmnd
*
cmd
)
{
int
rc
;
spin_lock_irq
(
cmd
->
device
->
host
->
host_lock
);
rc
=
__aic7xxx_abort
(
cmd
);
spin_unlock_irq
(
cmd
->
device
->
host
->
host_lock
);
return
rc
;
}
/*+F*************************************************************************
* Function:
* aic7xxx_reset
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/ibmmca.c
浏览文件 @
8fa728a2
...
...
@@ -2118,7 +2118,7 @@ static int ibmmca_queuecommand(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *))
return
0
;
}
static
int
ibmmca_abort
(
Scsi_Cmnd
*
cmd
)
static
int
__
ibmmca_abort
(
Scsi_Cmnd
*
cmd
)
{
/* Abort does not work, as the adapter never generates an interrupt on
* whatever situation is simulated, even when really pending commands
...
...
@@ -2225,6 +2225,18 @@ static int ibmmca_abort(Scsi_Cmnd * cmd)
}
}
static
int
ibmmca_abort
(
Scsi_Cmnd
*
cmd
)
{
struct
Scsi_Host
*
shpnt
=
cmd
->
device
->
host
;
int
rc
;
spin_lock_irq
(
shpnt
->
host_lock
);
rc
=
__ibmmca_abort
(
cmd
);
spin_unlock_irq
(
shpnt
->
host_lock
);
return
rc
;
}
static
int
ibmmca_host_reset
(
Scsi_Cmnd
*
cmd
)
{
struct
Scsi_Host
*
shpnt
;
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/ibmvscsi/ibmvscsi.c
浏览文件 @
8fa728a2
...
...
@@ -874,9 +874,7 @@ static int ibmvscsi_eh_abort_handler(struct scsi_cmnd *cmd)
return
FAILED
;
}
spin_unlock_irq
(
hostdata
->
host
->
host_lock
);
wait_for_completion
(
&
evt
->
comp
);
spin_lock_irq
(
hostdata
->
host
->
host_lock
);
/* make sure we got a good response */
if
(
unlikely
(
srp_rsp
.
srp
.
generic
.
type
!=
SRP_RSP_TYPE
))
{
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/in2000.c
浏览文件 @
8fa728a2
...
...
@@ -1671,7 +1671,7 @@ static int in2000_bus_reset(Scsi_Cmnd * cmd)
return
SUCCESS
;
}
static
int
in2000_abort
(
Scsi_Cmnd
*
cmd
)
static
int
__
in2000_abort
(
Scsi_Cmnd
*
cmd
)
{
struct
Scsi_Host
*
instance
;
struct
IN2000_hostdata
*
hostdata
;
...
...
@@ -1792,6 +1792,16 @@ static int in2000_abort(Scsi_Cmnd * cmd)
return
SUCCESS
;
}
static
int
in2000_abort
(
Scsi_Cmnd
*
cmd
)
{
int
rc
;
spin_lock_irq
(
cmd
->
device
->
host
->
host_lock
);
rc
=
__in2000_abort
(
cmd
);
spin_unlock_irq
(
cmd
->
device
->
host
->
host_lock
);
return
rc
;
}
#define MAX_IN2000_HOSTS 3
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/ipr.c
浏览文件 @
8fa728a2
...
...
@@ -3068,6 +3068,12 @@ static int ipr_cancel_op(struct scsi_cmnd * scsi_cmd)
ioa_cfg
=
(
struct
ipr_ioa_cfg
*
)
scsi_cmd
->
device
->
host
->
hostdata
;
res
=
scsi_cmd
->
device
->
hostdata
;
/* If we are currently going through reset/reload, return failed.
* This will force the mid-layer to call ipr_eh_host_reset,
* which will then go to sleep and wait for the reset to complete
*/
if
(
ioa_cfg
->
in_reset_reload
||
ioa_cfg
->
ioa_is_dead
)
return
FAILED
;
if
(
!
res
||
(
!
ipr_is_gscsi
(
res
)
&&
!
ipr_is_vset_device
(
res
)))
return
FAILED
;
...
...
@@ -3118,23 +3124,17 @@ static int ipr_cancel_op(struct scsi_cmnd * scsi_cmd)
**/
static
int
ipr_eh_abort
(
struct
scsi_cmnd
*
scsi_cmd
)
{
struct
ipr_ioa_cfg
*
ioa_cfg
;
unsigned
long
flags
;
int
rc
;
ENTER
;
ioa_cfg
=
(
struct
ipr_ioa_cfg
*
)
scsi_cmd
->
device
->
host
->
hostdata
;
/* If we are currently going through reset/reload, return failed. This will force the
mid-layer to call ipr_eh_host_reset, which will then go to sleep and wait for the
reset to complete */
if
(
ioa_cfg
->
in_reset_reload
)
return
FAILED
;
if
(
ioa_cfg
->
ioa_is_dead
)
return
FAILED
;
if
(
!
scsi_cmd
->
device
->
hostdata
)
return
FAILED
;
spin_lock_irqsave
(
scsi_cmd
->
device
->
host
->
host_lock
,
flags
);
rc
=
ipr_cancel_op
(
scsi_cmd
);
spin_unlock_irqrestore
(
scsi_cmd
->
device
->
host
->
host_lock
,
flags
);
LEAVE
;
return
ipr_cancel_op
(
scsi_cmd
)
;
return
rc
;
}
/**
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/ips.c
浏览文件 @
8fa728a2
...
...
@@ -819,12 +819,15 @@ ips_eh_abort(Scsi_Cmnd * SC)
ips_ha_t
*
ha
;
ips_copp_wait_item_t
*
item
;
int
ret
;
unsigned
long
cpu_flags
;
struct
Scsi_Host
*
host
;
METHOD_TRACE
(
"ips_eh_abort"
,
1
);
if
(
!
SC
)
return
(
FAILED
);
host
=
SC
->
device
->
host
;
ha
=
(
ips_ha_t
*
)
SC
->
device
->
host
->
hostdata
;
if
(
!
ha
)
...
...
@@ -833,6 +836,8 @@ ips_eh_abort(Scsi_Cmnd * SC)
if
(
!
ha
->
active
)
return
(
FAILED
);
IPS_LOCK_SAVE
(
host
->
host_lock
,
cpu_flags
);
/* See if the command is on the copp queue */
item
=
ha
->
copp_waitlist
.
head
;
while
((
item
)
&&
(
item
->
scsi_cmd
!=
SC
))
...
...
@@ -851,6 +856,8 @@ ips_eh_abort(Scsi_Cmnd * SC)
/* command must have already been sent */
ret
=
(
FAILED
);
}
IPS_UNLOCK_RESTORE
(
host
->
host_lock
,
cpu_flags
);
return
ret
;
}
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/lpfc/lpfc_scsi.c
浏览文件 @
8fa728a2
...
...
@@ -798,7 +798,7 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
}
static
int
lpfc_abort_handler
(
struct
scsi_cmnd
*
cmnd
)
__
lpfc_abort_handler
(
struct
scsi_cmnd
*
cmnd
)
{
struct
lpfc_hba
*
phba
=
(
struct
lpfc_hba
*
)
cmnd
->
device
->
host
->
hostdata
[
0
];
...
...
@@ -917,6 +917,16 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
return
ret
==
IOCB_SUCCESS
?
SUCCESS
:
FAILED
;
}
static
int
lpfc_abort_handler
(
struct
scsi_cmnd
*
cmnd
)
{
int
rc
;
spin_lock_irq
(
cmnd
->
device
->
host
->
host_lock
);
rc
=
__lpfc_abort_handler
(
cmnd
);
spin_unlock_irq
(
cmnd
->
device
->
host
->
host_lock
);
return
rc
;
}
static
int
lpfc_reset_lun_handler
(
struct
scsi_cmnd
*
cmnd
)
{
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/megaraid/megaraid_mbox.c
浏览文件 @
8fa728a2
...
...
@@ -2566,7 +2566,7 @@ megaraid_mbox_dpc(unsigned long devp)
* aborted. All the commands issued to the F/W must complete.
**/
static
int
megaraid_abort_handler
(
struct
scsi_cmnd
*
scp
)
__
megaraid_abort_handler
(
struct
scsi_cmnd
*
scp
)
{
adapter_t
*
adapter
;
mraid_device_t
*
raid_dev
;
...
...
@@ -2699,6 +2699,21 @@ megaraid_abort_handler(struct scsi_cmnd *scp)
return
FAILED
;
}
static
int
megaraid_abort_handler
(
struct
scsi_cmnd
*
scp
)
{
adapter_t
*
adapter
;
int
rc
;
adapter
=
SCP2ADAPTER
(
scp
);
spin_lock_irq
(
adapter
->
host_lock
);
rc
=
__megaraid_abort_handler
(
scp
);
spin_unlock_irq
(
adapter
->
host_lock
);
return
rc
;
}
/**
* megaraid_reset_handler - device reset hadler for mailbox based driver
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/qla1280.c
浏览文件 @
8fa728a2
...
...
@@ -1098,7 +1098,13 @@ qla1280_error_action(struct scsi_cmnd *cmd, enum action action)
static
int
qla1280_eh_abort
(
struct
scsi_cmnd
*
cmd
)
{
return
qla1280_error_action
(
cmd
,
ABORT_COMMAND
);
int
rc
;
spin_lock_irq
(
cmd
->
device
->
host
->
host_lock
);
rc
=
qla1280_error_action
(
cmd
,
ABORT_COMMAND
);
spin_unlock_irq
(
cmd
->
device
->
host
->
host_lock
);
return
rc
;
}
/**************************************************************************
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/qla2xxx/qla_os.c
浏览文件 @
8fa728a2
...
...
@@ -476,7 +476,6 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
serial
=
cmd
->
serial_number
;
/* Check active list for command command. */
spin_unlock_irq
(
ha
->
host
->
host_lock
);
spin_lock
(
&
ha
->
hardware_lock
);
for
(
i
=
1
;
i
<
MAX_OUTSTANDING_COMMANDS
;
i
++
)
{
sp
=
ha
->
outstanding_cmds
[
i
];
...
...
@@ -516,7 +515,6 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
}
spin_lock
(
&
ha
->
hardware_lock
);
}
spin_lock_irq
(
ha
->
host
->
host_lock
);
qla_printk
(
KERN_INFO
,
ha
,
"scsi(%ld:%d:%d): Abort command issued -- %lx %x.
\n
"
,
ha
->
host_no
,
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/scsi_error.c
浏览文件 @
8fa728a2
...
...
@@ -526,10 +526,8 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, int timeout)
* abort a timed out command or not. not sure how
* we should treat them differently anyways.
*/
spin_lock_irqsave
(
shost
->
host_lock
,
flags
);
if
(
shost
->
hostt
->
eh_abort_handler
)
shost
->
hostt
->
eh_abort_handler
(
scmd
);
spin_unlock_irqrestore
(
shost
->
host_lock
,
flags
);
scmd
->
request
->
rq_status
=
RQ_SCSI_DONE
;
scmd
->
owner
=
SCSI_OWNER_ERROR_HANDLER
;
...
...
@@ -735,11 +733,8 @@ static int scsi_eh_get_sense(struct list_head *work_q,
**/
static
int
scsi_try_to_abort_cmd
(
struct
scsi_cmnd
*
scmd
)
{
unsigned
long
flags
;
int
rtn
=
FAILED
;
if
(
!
scmd
->
device
->
host
->
hostt
->
eh_abort_handler
)
return
rtn
;
return
FAILED
;
/*
* scsi_done was called just after the command timed out and before
...
...
@@ -750,11 +745,7 @@ static int scsi_try_to_abort_cmd(struct scsi_cmnd *scmd)
scmd
->
owner
=
SCSI_OWNER_LOWLEVEL
;
spin_lock_irqsave
(
scmd
->
device
->
host
->
host_lock
,
flags
);
rtn
=
scmd
->
device
->
host
->
hostt
->
eh_abort_handler
(
scmd
);
spin_unlock_irqrestore
(
scmd
->
device
->
host
->
host_lock
,
flags
);
return
rtn
;
return
scmd
->
device
->
host
->
hostt
->
eh_abort_handler
(
scmd
);
}
/**
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/sym53c8xx_2/sym_glue.c
浏览文件 @
8fa728a2
...
...
@@ -856,7 +856,13 @@ static int sym_eh_handler(int op, char *opname, struct scsi_cmnd *cmd)
*/
static
int
sym53c8xx_eh_abort_handler
(
struct
scsi_cmnd
*
cmd
)
{
return
sym_eh_handler
(
SYM_EH_ABORT
,
"ABORT"
,
cmd
);
int
rc
;
spin_lock_irq
(
cmd
->
device
->
host
->
host_lock
);
rc
=
sym_eh_handler
(
SYM_EH_ABORT
,
"ABORT"
,
cmd
);
spin_unlock_irq
(
cmd
->
device
->
host
->
host_lock
);
return
rc
;
}
static
int
sym53c8xx_eh_device_reset_handler
(
struct
scsi_cmnd
*
cmd
)
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/ultrastor.c
浏览文件 @
8fa728a2
...
...
@@ -879,7 +879,7 @@ static int ultrastor_abort(Scsi_Cmnd *SCpnt)
ogm_addr
=
(
unsigned
int
)
isa_bus_to_virt
(
inl
(
port0
+
23
));
icm_status
=
inb
(
port0
+
27
);
icm_addr
=
(
unsigned
int
)
isa_bus_to_virt
(
inl
(
port0
+
28
));
spin_
lock_irqsav
e
(
host
->
host_lock
,
flags
);
spin_
unlock_irqrestor
e
(
host
->
host_lock
,
flags
);
}
/* First check to see if an interrupt is pending. I suspect the SiS
...
...
This diff is collapsed.
Click to expand it.
drivers/usb/storage/scsiglue.c
浏览文件 @
8fa728a2
...
...
@@ -233,13 +233,11 @@ static int command_abort(struct scsi_cmnd *srb)
set_bit
(
US_FLIDX_ABORTING
,
&
us
->
flags
);
usb_stor_stop_transport
(
us
);
}
scsi_unlock
(
us_to_host
(
us
));
/* Wait for the aborted command to finish */
wait_for_completion
(
&
us
->
notify
);
/* Reacquire the lock and allow USB transfers to resume */
scsi_lock
(
us_to_host
(
us
));
clear_bit
(
US_FLIDX_ABORTING
,
&
us
->
flags
);
clear_bit
(
US_FLIDX_TIMED_OUT
,
&
us
->
flags
);
return
SUCCESS
;
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
新手
引导
客服
返回
顶部