SCSI fixes on 20160906
This is really three fixes, but the SES one comes in a bundle of three (making the replacement API available properly, using it and removing the non-working one). The SES problem causes an oops on hpsa devices because they attach virtual disks to the host which aren't SAS attached (the replacement API ignores them). The other two fixes are fairly minor: the sense key one means we actually resolve a newly added sense key and the RDAC device blacklisting is needed to prevent us annoying the universal XPORT lun of various RDAC arrays. Signed-off-by: James Bottomley <jejb@linux.vnet.ibm.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJXztXJAAoJEAVr7HOZEZN4Ix4QAKEfme48bS9+5qsDodwzK1tR FZqC7/itkmQ295yzppw0Gp4Tbod+LflBd3o321JCQiAZ5YF3PeDINYDj3X0JkgLW 2dMd9dcDogigGCkosmr4V8WtCdWj6UXXvbzqLu8PSX9Ji0Fhi4S4mSuQkBWwq2nb 232i/fV+RP/5l/XjJtEjV/bCbbsfLA76SmcKx6Q8j+OmF+Nap/KhtP4JYtbErS0C gE4WRidoCRjCurLTHn5srqYHmqG5kewxgtAyJEYUi5YxP0LHD0h5NhDd/n8ZB1oY 6f+MfIkIbMmMs/ILnjpVFtLD8iRma1X8APcF4x2m+w+BH839fqefzXjpcMoE3laf h6BHys7mDgVTcHStML61OzC4vPbwRsJX+YTLcC0fO1pftl3q/qCqTBy0hlohfX9Q iHCjY4qaQz/ufYtQjAG+z6JWKswlKiHUzRt69TWc5tYQM3vvhUZ9+bd0oU+q0UUv OJlht505QA41lMssMo49QgjZIXO9HIFKsg99J9zBtYUwbanwkIhLNc+6xZIb09BG 0JYNXbSoUHlW8nniXHIPQzK/5qs11IV7vued+SoqNU9z9koSBuf5Im1L2tZDzbgz he0w+paGfskAIXIQD2LzP8YmIWOb28Nq/DgeQ4/iJRXrhvw20XxbbGZQgzQdPyN7 oFjaMEDIbve0XbNEQXwr =HBmE -----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: "This is really three fixes, but the SES one comes in a bundle of three (making the replacement API available properly, using it and removing the non-working one). The SES problem causes an oops on hpsa devices because they attach virtual disks to the host which aren't SAS attached (the replacement API ignores them). The other two fixes are fairly minor: the sense key one means we actually resolve a newly added sense key and the RDAC device blacklisting is needed to prevent us annoying the universal XPORT lun of various RDAC arrays" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: sas: remove is_sas_attached() scsi: ses: use scsi_is_sas_rphy instead of is_sas_attached scsi: sas: provide stub implementation for scsi_is_sas_rphy scsi: blacklist all RDAC devices for BLIST_NO_ULD_ATTACH scsi: fix upper bounds check of sense key in scsi_sense_key_string()
This commit is contained in:
commit
6296c41259
5 changed files with 10 additions and 22 deletions
|
@ -361,8 +361,9 @@ static const char * const snstext[] = {
|
|||
|
||||
/* Get sense key string or NULL if not available */
|
||||
const char *
|
||||
scsi_sense_key_string(unsigned char key) {
|
||||
if (key <= 0xE)
|
||||
scsi_sense_key_string(unsigned char key)
|
||||
{
|
||||
if (key < ARRAY_SIZE(snstext))
|
||||
return snstext[key];
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -246,6 +246,10 @@ static struct {
|
|||
{"IBM", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
|
||||
{"SUN", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
|
||||
{"DELL", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
|
||||
{"STK", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
|
||||
{"NETAPP", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
|
||||
{"LSI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
|
||||
{"ENGENIO", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
|
||||
{"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36},
|
||||
{"SONY", "CD-ROM CDU-8001", NULL, BLIST_BORKEN},
|
||||
{"SONY", "TSL", NULL, BLIST_FORCELUN}, /* DDS3 & DDS4 autoloaders */
|
||||
|
|
|
@ -340,22 +340,6 @@ static int do_sas_phy_delete(struct device *dev, void *data)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* is_sas_attached - check if device is SAS attached
|
||||
* @sdev: scsi device to check
|
||||
*
|
||||
* returns true if the device is SAS attached
|
||||
*/
|
||||
int is_sas_attached(struct scsi_device *sdev)
|
||||
{
|
||||
struct Scsi_Host *shost = sdev->host;
|
||||
|
||||
return shost->transportt->host_attrs.ac.class ==
|
||||
&sas_host_class.class;
|
||||
}
|
||||
EXPORT_SYMBOL(is_sas_attached);
|
||||
|
||||
|
||||
/**
|
||||
* sas_remove_children - tear down a devices SAS data structures
|
||||
* @dev: device belonging to the sas object
|
||||
|
|
|
@ -587,7 +587,7 @@ static void ses_match_to_enclosure(struct enclosure_device *edev,
|
|||
|
||||
ses_enclosure_data_process(edev, to_scsi_device(edev->edev.parent), 0);
|
||||
|
||||
if (is_sas_attached(sdev))
|
||||
if (scsi_is_sas_rphy(&sdev->sdev_gendev))
|
||||
efd.addr = sas_get_address(sdev);
|
||||
|
||||
if (efd.addr) {
|
||||
|
|
|
@ -11,12 +11,12 @@ struct sas_rphy;
|
|||
struct request;
|
||||
|
||||
#if !IS_ENABLED(CONFIG_SCSI_SAS_ATTRS)
|
||||
static inline int is_sas_attached(struct scsi_device *sdev)
|
||||
static inline int scsi_is_sas_rphy(const struct device *sdev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
extern int is_sas_attached(struct scsi_device *sdev);
|
||||
extern int scsi_is_sas_rphy(const struct device *);
|
||||
#endif
|
||||
|
||||
static inline int sas_protocol_ata(enum sas_protocol proto)
|
||||
|
@ -202,7 +202,6 @@ extern int sas_rphy_add(struct sas_rphy *);
|
|||
extern void sas_rphy_remove(struct sas_rphy *);
|
||||
extern void sas_rphy_delete(struct sas_rphy *);
|
||||
extern void sas_rphy_unlink(struct sas_rphy *);
|
||||
extern int scsi_is_sas_rphy(const struct device *);
|
||||
|
||||
struct sas_port *sas_port_alloc(struct device *, int);
|
||||
struct sas_port *sas_port_alloc_num(struct device *);
|
||||
|
|
Loading…
Reference in a new issue