SCSI fixes on 20171220
Two simple fixes: one for sparse warnings that were introduced by the merge window conversion to blist_flags_t and the other to fix dropped I/O during reset in aacraid. Signed-off-by: James E.J. Bottomley <jejb@linux.vnet.ibm.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJaOvWtAAoJEAVr7HOZEZN4pNYQAISqS0tbDt7bgT+e6I/PGy7D 0vxv13ELf+MV9AV2uJKDvpf73nNtzrMgEC9N2rCsQyKeietF4yW1N3tk8n5Me32g vCD3YdwJFBwO3UaaNFkP+wpzh60RutMeBRUFAYeQu7LqBkEp4jOGx21N0fAb89wt SUkwfib20XUs518Tuqsyzy0keNsH3sRNJUenoxXVnqNMqIobKpigxZORFMIJaloZ 2VyQhYqrL75iqLRHTUUpWorQC4Db/FTyl58oG7rG8JdRN0Mww3Hp8Jv2E8cn5e2z Ze9J9Z/IUCxAV75muGR2GfXd9e5zgILOyLSwKcjxniElWWZbqTIYnEUlyElqBg5Z 4eWytQUmQTixeAqnNfnEYXpUiiJR3snKYCZpGhF/a7+Kzmid64GuOEhIQsroPy60 unO9LG50/WDsqWMFlSaJPoePnzOEDj4LrnZiedkroYQrAQq4I6QNAPcUE6ruYvka czzbkqhuHs/jHe0rbiYtG6YjlU6FdV4XqCdx10ijX2oUVFxZeIkUHu1uCwqhqg24 p6UE2bEzCwpKMEOwVeNlRsC6BQKpxugJNGJPHS6WeFiVeFl/tHNpYh7L7jnzVAQH C1L6RIGCK6jrzG49mn9mySNf6WmSfG7L3hqaHY5ngkz5sfdhR+6kjvnv8xFkyTK7 BJIyJBJBnDsaw/mDNRVt =IuyM -----END PGP SIGNATURE----- Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi Pull SCSI fixes from James Bottomley: "Two simple fixes: one for sparse warnings that were introduced by the merge window conversion to blist_flags_t and the other to fix dropped I/O during reset in aacraid" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: aacraid: Fix I/O drop during reset scsi: core: Use blist_flags_t consistently
This commit is contained in:
Коммит
d1ce8ceb8b
|
@ -1725,6 +1725,7 @@ struct aac_dev
|
|||
#define FIB_CONTEXT_FLAG_NATIVE_HBA (0x00000010)
|
||||
#define FIB_CONTEXT_FLAG_NATIVE_HBA_TMF (0x00000020)
|
||||
#define FIB_CONTEXT_FLAG_SCSI_CMD (0x00000040)
|
||||
#define FIB_CONTEXT_FLAG_EH_RESET (0x00000080)
|
||||
|
||||
/*
|
||||
* Define the command values
|
||||
|
|
|
@ -1037,7 +1037,7 @@ static int aac_eh_bus_reset(struct scsi_cmnd* cmd)
|
|||
info = &aac->hba_map[bus][cid];
|
||||
if (bus >= AAC_MAX_BUSES || cid >= AAC_MAX_TARGETS ||
|
||||
info->devtype != AAC_DEVTYPE_NATIVE_RAW) {
|
||||
fib->flags |= FIB_CONTEXT_FLAG_TIMED_OUT;
|
||||
fib->flags |= FIB_CONTEXT_FLAG_EH_RESET;
|
||||
cmd->SCp.phase = AAC_OWNER_ERROR_HANDLER;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -374,10 +374,8 @@ int scsi_dev_info_list_add_keyed(int compatible, char *vendor, char *model,
|
|||
model, compatible);
|
||||
|
||||
if (strflags)
|
||||
devinfo->flags = simple_strtoul(strflags, NULL, 0);
|
||||
else
|
||||
devinfo->flags = flags;
|
||||
|
||||
flags = (__force blist_flags_t)simple_strtoul(strflags, NULL, 0);
|
||||
devinfo->flags = flags;
|
||||
devinfo->compatible = compatible;
|
||||
|
||||
if (compatible)
|
||||
|
|
|
@ -770,7 +770,7 @@ static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result,
|
|||
* SCSI_SCAN_LUN_PRESENT: a new scsi_device was allocated and initialized
|
||||
**/
|
||||
static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
|
||||
int *bflags, int async)
|
||||
blist_flags_t *bflags, int async)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -1049,14 +1049,15 @@ static unsigned char *scsi_inq_str(unsigned char *buf, unsigned char *inq,
|
|||
* - SCSI_SCAN_LUN_PRESENT: a new scsi_device was allocated and initialized
|
||||
**/
|
||||
static int scsi_probe_and_add_lun(struct scsi_target *starget,
|
||||
u64 lun, int *bflagsp,
|
||||
u64 lun, blist_flags_t *bflagsp,
|
||||
struct scsi_device **sdevp,
|
||||
enum scsi_scan_mode rescan,
|
||||
void *hostdata)
|
||||
{
|
||||
struct scsi_device *sdev;
|
||||
unsigned char *result;
|
||||
int bflags, res = SCSI_SCAN_NO_RESPONSE, result_len = 256;
|
||||
blist_flags_t bflags;
|
||||
int res = SCSI_SCAN_NO_RESPONSE, result_len = 256;
|
||||
struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
|
||||
|
||||
/*
|
||||
|
@ -1201,7 +1202,7 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget,
|
|||
* Modifies sdevscan->lun.
|
||||
**/
|
||||
static void scsi_sequential_lun_scan(struct scsi_target *starget,
|
||||
int bflags, int scsi_level,
|
||||
blist_flags_t bflags, int scsi_level,
|
||||
enum scsi_scan_mode rescan)
|
||||
{
|
||||
uint max_dev_lun;
|
||||
|
@ -1292,7 +1293,7 @@ static void scsi_sequential_lun_scan(struct scsi_target *starget,
|
|||
* 0: scan completed (or no memory, so further scanning is futile)
|
||||
* 1: could not scan with REPORT LUN
|
||||
**/
|
||||
static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
|
||||
static int scsi_report_lun_scan(struct scsi_target *starget, blist_flags_t bflags,
|
||||
enum scsi_scan_mode rescan)
|
||||
{
|
||||
unsigned char scsi_cmd[MAX_COMMAND_SIZE];
|
||||
|
@ -1538,7 +1539,7 @@ static void __scsi_scan_target(struct device *parent, unsigned int channel,
|
|||
unsigned int id, u64 lun, enum scsi_scan_mode rescan)
|
||||
{
|
||||
struct Scsi_Host *shost = dev_to_shost(parent);
|
||||
int bflags = 0;
|
||||
blist_flags_t bflags = 0;
|
||||
int res;
|
||||
struct scsi_target *starget;
|
||||
|
||||
|
|
|
@ -967,7 +967,8 @@ sdev_show_wwid(struct device *dev, struct device_attribute *attr,
|
|||
}
|
||||
static DEVICE_ATTR(wwid, S_IRUGO, sdev_show_wwid, NULL);
|
||||
|
||||
#define BLIST_FLAG_NAME(name) [ilog2(BLIST_##name)] = #name
|
||||
#define BLIST_FLAG_NAME(name) \
|
||||
[ilog2((__force unsigned int)BLIST_##name)] = #name
|
||||
static const char *const sdev_bflags_name[] = {
|
||||
#include "scsi_devinfo_tbl.c"
|
||||
};
|
||||
|
@ -984,7 +985,7 @@ sdev_show_blacklist(struct device *dev, struct device_attribute *attr,
|
|||
for (i = 0; i < sizeof(sdev->sdev_bflags) * BITS_PER_BYTE; i++) {
|
||||
const char *name = NULL;
|
||||
|
||||
if (!(sdev->sdev_bflags & BIT(i)))
|
||||
if (!(sdev->sdev_bflags & (__force blist_flags_t)BIT(i)))
|
||||
continue;
|
||||
if (i < ARRAY_SIZE(sdev_bflags_name) && sdev_bflags_name[i])
|
||||
name = sdev_bflags_name[i];
|
||||
|
|
|
@ -50,14 +50,14 @@
|
|||
|
||||
/* Our blacklist flags */
|
||||
enum {
|
||||
SPI_BLIST_NOIUS = 0x1,
|
||||
SPI_BLIST_NOIUS = (__force blist_flags_t)0x1,
|
||||
};
|
||||
|
||||
/* blacklist table, modelled on scsi_devinfo.c */
|
||||
static struct {
|
||||
char *vendor;
|
||||
char *model;
|
||||
unsigned flags;
|
||||
blist_flags_t flags;
|
||||
} spi_static_device_list[] __initdata = {
|
||||
{"HP", "Ultrium 3-SCSI", SPI_BLIST_NOIUS },
|
||||
{"IBM", "ULTRIUM-TD3", SPI_BLIST_NOIUS },
|
||||
|
@ -221,9 +221,11 @@ static int spi_device_configure(struct transport_container *tc,
|
|||
{
|
||||
struct scsi_device *sdev = to_scsi_device(dev);
|
||||
struct scsi_target *starget = sdev->sdev_target;
|
||||
unsigned bflags = scsi_get_device_flags_keyed(sdev, &sdev->inquiry[8],
|
||||
&sdev->inquiry[16],
|
||||
SCSI_DEVINFO_SPI);
|
||||
blist_flags_t bflags;
|
||||
|
||||
bflags = scsi_get_device_flags_keyed(sdev, &sdev->inquiry[8],
|
||||
&sdev->inquiry[16],
|
||||
SCSI_DEVINFO_SPI);
|
||||
|
||||
/* Populate the target capability fields with the values
|
||||
* gleaned from the device inquiry */
|
||||
|
|
Загрузка…
Ссылка в новой задаче