SCSI fixes on 20190222
Four small fixes: three in drivers and one in the core. The core fix is also minor in scope since the bug it fixes is only known to affect systems using SCSI reservations. Of the driver bugs, the libsas one is the most major because it can lead to multiple disks on the same expander not being exposed. Signed-off-by: James E.J. Bottomley <jejb@linux.ibm.com> -----BEGIN PGP SIGNATURE----- iJwEABMIAEQWIQTnYEDbdso9F2cI+arnQslM7pishQUCXHC4uSYcamFtZXMuYm90 dG9tbGV5QGhhbnNlbnBhcnRuZXJzaGlwLmNvbQAKCRDnQslM7pishfYwAP9zX676 svxUeEQLLyMLXmGyDZ5um8ne8VDAzXDIrkS06gEAhKju7hb7jYvt0pf3jj+utS+v KXtT8CpMuj+cffeVXng= =OkZL -----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: "Four small fixes: three in drivers and one in the core. The core fix is also minor in scope since the bug it fixes is only known to affect systems using SCSI reservations. Of the driver bugs, the libsas one is the most major because it can lead to multiple disks on the same expander not being exposed" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: core: reset host byte in DID_NEXUS_FAILURE case scsi: libsas: Fix rphy phy_identifier for PHYs with end devices attached scsi: sd_zbc: Fix sd_zbc_report_zones() buffer allocation scsi: libiscsi: Fix race between iscsi_xmit_task and iscsi_complete_task
This commit is contained in:
commit
6089a91fc0
|
@ -1459,7 +1459,13 @@ static int iscsi_xmit_task(struct iscsi_conn *conn)
|
|||
if (test_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx))
|
||||
return -ENODATA;
|
||||
|
||||
spin_lock_bh(&conn->session->back_lock);
|
||||
if (conn->task == NULL) {
|
||||
spin_unlock_bh(&conn->session->back_lock);
|
||||
return -ENODATA;
|
||||
}
|
||||
__iscsi_get_task(task);
|
||||
spin_unlock_bh(&conn->session->back_lock);
|
||||
spin_unlock_bh(&conn->session->frwd_lock);
|
||||
rc = conn->session->tt->xmit_task(task);
|
||||
spin_lock_bh(&conn->session->frwd_lock);
|
||||
|
|
|
@ -828,6 +828,7 @@ static struct domain_device *sas_ex_discover_end_dev(
|
|||
rphy = sas_end_device_alloc(phy->port);
|
||||
if (!rphy)
|
||||
goto out_free;
|
||||
rphy->identify.phy_identifier = phy_id;
|
||||
|
||||
child->rphy = rphy;
|
||||
get_device(&rphy->dev);
|
||||
|
@ -854,6 +855,7 @@ static struct domain_device *sas_ex_discover_end_dev(
|
|||
|
||||
child->rphy = rphy;
|
||||
get_device(&rphy->dev);
|
||||
rphy->identify.phy_identifier = phy_id;
|
||||
sas_fill_in_rphy(child, rphy);
|
||||
|
||||
list_add_tail(&child->disco_list_node, &parent->port->disco_list);
|
||||
|
|
|
@ -655,6 +655,7 @@ static blk_status_t scsi_result_to_blk_status(struct scsi_cmnd *cmd, int result)
|
|||
set_host_byte(cmd, DID_OK);
|
||||
return BLK_STS_TARGET;
|
||||
case DID_NEXUS_FAILURE:
|
||||
set_host_byte(cmd, DID_OK);
|
||||
return BLK_STS_NEXUS;
|
||||
case DID_ALLOC_FAILURE:
|
||||
set_host_byte(cmd, DID_OK);
|
||||
|
|
|
@ -142,10 +142,12 @@ int sd_zbc_report_zones(struct gendisk *disk, sector_t sector,
|
|||
return -EOPNOTSUPP;
|
||||
|
||||
/*
|
||||
* Get a reply buffer for the number of requested zones plus a header.
|
||||
* For ATA, buffers must be aligned to 512B.
|
||||
* Get a reply buffer for the number of requested zones plus a header,
|
||||
* without exceeding the device maximum command size. For ATA disks,
|
||||
* buffers must be aligned to 512B.
|
||||
*/
|
||||
buflen = roundup((nrz + 1) * 64, 512);
|
||||
buflen = min(queue_max_hw_sectors(disk->queue) << 9,
|
||||
roundup((nrz + 1) * 64, 512));
|
||||
buf = kmalloc(buflen, gfp_mask);
|
||||
if (!buf)
|
||||
return -ENOMEM;
|
||||
|
|
Loading…
Reference in New Issue