Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
0e1bfea9
Commit
0e1bfea9
authored
Apr 12, 2017
by
James Bottomley
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'mkp-scsi/4.11/scsi-fixes' into fixes
parents
0917ac4f
785a4704
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
49 additions
and
12 deletions
+49
-12
drivers/scsi/aacraid/aacraid.h
drivers/scsi/aacraid/aacraid.h
+8
-3
drivers/scsi/aacraid/commsup.c
drivers/scsi/aacraid/commsup.c
+2
-1
drivers/scsi/ipr.c
drivers/scsi/ipr.c
+6
-1
drivers/scsi/qedf/qedf_fip.c
drivers/scsi/qedf/qedf_fip.c
+2
-1
drivers/scsi/qedf/qedf_main.c
drivers/scsi/qedf/qedf_main.c
+1
-0
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/qla2xxx/qla_os.c
+6
-1
drivers/scsi/sd.c
drivers/scsi/sd.c
+20
-3
drivers/scsi/sr.c
drivers/scsi/sr.c
+4
-2
No files found.
drivers/scsi/aacraid/aacraid.h
View file @
0e1bfea9
...
...
@@ -1690,9 +1690,6 @@ struct aac_dev
#define aac_adapter_sync_cmd(dev, command, p1, p2, p3, p4, p5, p6, status, r1, r2, r3, r4) \
(dev)->a_ops.adapter_sync_cmd(dev, command, p1, p2, p3, p4, p5, p6, status, r1, r2, r3, r4)
#define aac_adapter_check_health(dev) \
(dev)->a_ops.adapter_check_health(dev)
#define aac_adapter_restart(dev, bled, reset_type) \
((dev)->a_ops.adapter_restart(dev, bled, reset_type))
...
...
@@ -2615,6 +2612,14 @@ static inline unsigned int cap_to_cyls(sector_t capacity, unsigned divisor)
return
capacity
;
}
static
inline
int
aac_adapter_check_health
(
struct
aac_dev
*
dev
)
{
if
(
unlikely
(
pci_channel_offline
(
dev
->
pdev
)))
return
-
1
;
return
(
dev
)
->
a_ops
.
adapter_check_health
(
dev
);
}
/* SCp.phase values */
#define AAC_OWNER_MIDLEVEL 0x101
#define AAC_OWNER_LOWLEVEL 0x102
...
...
drivers/scsi/aacraid/commsup.c
View file @
0e1bfea9
...
...
@@ -1873,7 +1873,8 @@ int aac_check_health(struct aac_dev * aac)
spin_unlock_irqrestore
(
&
aac
->
fib_lock
,
flagv
);
if
(
BlinkLED
<
0
)
{
printk
(
KERN_ERR
"%s: Host adapter dead %d
\n
"
,
aac
->
name
,
BlinkLED
);
printk
(
KERN_ERR
"%s: Host adapter is dead (or got a PCI error) %d
\n
"
,
aac
->
name
,
BlinkLED
);
goto
out
;
}
...
...
drivers/scsi/ipr.c
View file @
0e1bfea9
...
...
@@ -6293,7 +6293,12 @@ static void ipr_erp_start(struct ipr_ioa_cfg *ioa_cfg,
break
;
case
IPR_IOASC_MED_DO_NOT_REALLOC
:
/* prevent retries */
case
IPR_IOASA_IR_DUAL_IOA_DISABLED
:
scsi_cmd
->
result
|=
(
DID_PASSTHROUGH
<<
16
);
/*
* exception: do not set DID_PASSTHROUGH on CHECK CONDITION
* so SCSI mid-layer and upper layers handle it accordingly.
*/
if
(
scsi_cmd
->
result
!=
SAM_STAT_CHECK_CONDITION
)
scsi_cmd
->
result
|=
(
DID_PASSTHROUGH
<<
16
);
break
;
case
IPR_IOASC_BUS_WAS_RESET
:
case
IPR_IOASC_BUS_WAS_RESET_BY_OTHER
:
...
...
drivers/scsi/qedf/qedf_fip.c
View file @
0e1bfea9
...
...
@@ -99,7 +99,8 @@ static void qedf_fcoe_process_vlan_resp(struct qedf_ctx *qedf,
qedf_set_vlan_id
(
qedf
,
vid
);
/* Inform waiter that it's ok to call fcoe_ctlr_link up() */
complete
(
&
qedf
->
fipvlan_compl
);
if
(
!
completion_done
(
&
qedf
->
fipvlan_compl
))
complete
(
&
qedf
->
fipvlan_compl
);
}
}
...
...
drivers/scsi/qedf/qedf_main.c
View file @
0e1bfea9
...
...
@@ -2803,6 +2803,7 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)
atomic_set
(
&
qedf
->
num_offloads
,
0
);
qedf
->
stop_io_on_error
=
false
;
pci_set_drvdata
(
pdev
,
qedf
);
init_completion
(
&
qedf
->
fipvlan_compl
);
QEDF_INFO
(
&
(
qedf
->
dbg_ctx
),
QEDF_LOG_INFO
,
"QLogic FastLinQ FCoE Module qedf %s, "
...
...
drivers/scsi/qla2xxx/qla_os.c
View file @
0e1bfea9
...
...
@@ -1160,8 +1160,13 @@ static inline
uint32_t
qla2x00_isp_reg_stat
(
struct
qla_hw_data
*
ha
)
{
struct
device_reg_24xx
__iomem
*
reg
=
&
ha
->
iobase
->
isp24
;
struct
device_reg_82xx
__iomem
*
reg82
=
&
ha
->
iobase
->
isp82
;
return
((
RD_REG_DWORD
(
&
reg
->
host_status
))
==
ISP_REG_DISCONNECT
);
if
(
IS_P3P_TYPE
(
ha
))
return
((
RD_REG_DWORD
(
&
reg82
->
host_int
))
==
ISP_REG_DISCONNECT
);
else
return
((
RD_REG_DWORD
(
&
reg
->
host_status
))
==
ISP_REG_DISCONNECT
);
}
/**************************************************************************
...
...
drivers/scsi/sd.c
View file @
0e1bfea9
...
...
@@ -2102,6 +2102,22 @@ static void read_capacity_error(struct scsi_disk *sdkp, struct scsi_device *sdp,
#define READ_CAPACITY_RETRIES_ON_RESET 10
/*
* Ensure that we don't overflow sector_t when CONFIG_LBDAF is not set
* and the reported logical block size is bigger than 512 bytes. Note
* that last_sector is a u64 and therefore logical_to_sectors() is not
* applicable.
*/
static
bool
sd_addressable_capacity
(
u64
lba
,
unsigned
int
sector_size
)
{
u64
last_sector
=
(
lba
+
1ULL
)
<<
(
ilog2
(
sector_size
)
-
9
);
if
(
sizeof
(
sector_t
)
==
4
&&
last_sector
>
U32_MAX
)
return
false
;
return
true
;
}
static
int
read_capacity_16
(
struct
scsi_disk
*
sdkp
,
struct
scsi_device
*
sdp
,
unsigned
char
*
buffer
)
{
...
...
@@ -2167,7 +2183,7 @@ static int read_capacity_16(struct scsi_disk *sdkp, struct scsi_device *sdp,
return
-
ENODEV
;
}
if
(
(
sizeof
(
sdkp
->
capacity
)
==
4
)
&&
(
lba
>=
0xffffffffULL
))
{
if
(
!
sd_addressable_capacity
(
lba
,
sector_size
))
{
sd_printk
(
KERN_ERR
,
sdkp
,
"Too big for this kernel. Use a "
"kernel compiled with support for large block "
"devices.
\n
"
);
...
...
@@ -2256,7 +2272,7 @@ static int read_capacity_10(struct scsi_disk *sdkp, struct scsi_device *sdp,
return
sector_size
;
}
if
(
(
sizeof
(
sdkp
->
capacity
)
==
4
)
&&
(
lba
==
0xffffffff
))
{
if
(
!
sd_addressable_capacity
(
lba
,
sector_size
))
{
sd_printk
(
KERN_ERR
,
sdkp
,
"Too big for this kernel. Use a "
"kernel compiled with support for large block "
"devices.
\n
"
);
...
...
@@ -2956,7 +2972,8 @@ static int sd_revalidate_disk(struct gendisk *disk)
q
->
limits
.
io_opt
=
logical_to_bytes
(
sdp
,
sdkp
->
opt_xfer_blocks
);
rw_max
=
logical_to_sectors
(
sdp
,
sdkp
->
opt_xfer_blocks
);
}
else
rw_max
=
BLK_DEF_MAX_SECTORS
;
rw_max
=
min_not_zero
(
logical_to_sectors
(
sdp
,
dev_max
),
(
sector_t
)
BLK_DEF_MAX_SECTORS
);
/* Combine with controller limits */
q
->
limits
.
max_sectors
=
min
(
rw_max
,
queue_max_hw_sectors
(
q
));
...
...
drivers/scsi/sr.c
View file @
0e1bfea9
...
...
@@ -836,6 +836,7 @@ static void get_capabilities(struct scsi_cd *cd)
unsigned
char
*
buffer
;
struct
scsi_mode_data
data
;
struct
scsi_sense_hdr
sshdr
;
unsigned
int
ms_len
=
128
;
int
rc
,
n
;
static
const
char
*
loadmech
[]
=
...
...
@@ -862,10 +863,11 @@ static void get_capabilities(struct scsi_cd *cd)
scsi_test_unit_ready
(
cd
->
device
,
SR_TIMEOUT
,
MAX_RETRIES
,
&
sshdr
);
/* ask for mode page 0x2a */
rc
=
scsi_mode_sense
(
cd
->
device
,
0
,
0x2a
,
buffer
,
128
,
rc
=
scsi_mode_sense
(
cd
->
device
,
0
,
0x2a
,
buffer
,
ms_len
,
SR_TIMEOUT
,
3
,
&
data
,
NULL
);
if
(
!
scsi_status_is_good
(
rc
))
{
if
(
!
scsi_status_is_good
(
rc
)
||
data
.
length
>
ms_len
||
data
.
header_length
+
data
.
block_descriptor_length
>
data
.
length
)
{
/* failed, drive doesn't have capabilities mode page */
cd
->
cdi
.
speed
=
1
;
cd
->
cdi
.
mask
|=
(
CDC_CD_R
|
CDC_CD_RW
|
CDC_DVD_R
|
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment