mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
SCSI fixes on 20240701
A couple of error leg problems, one affecting scsi_debug and the other affecting pure SAS (i.e. not SATA) SCSI expanders. Signed-off-by: James E.J. Bottomley <James.Bottomley@HansenPartnership.com> -----BEGIN PGP SIGNATURE----- iJwEABMIAEQWIQTnYEDbdso9F2cI+arnQslM7pishQUCZoMgiiYcamFtZXMuYm90 dG9tbGV5QGhhbnNlbnBhcnRuZXJzaGlwLmNvbQAKCRDnQslM7pishYTGAP9/+7vP DR1Y6KucMx4XjvwkPL5DNxOyobq6poSktn8hqQD/ReaafXaC4H4l7bn2JEpeBO9P vYog76vSs2jELmEEeHc= =/weJ -----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: "A couple of error leg problems, one affecting scsi_debug and the other affecting pure SAS (i.e. not SATA) SCSI expanders" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: libsas: Fix exp-attached device scan after probe failure scanned in again after probe failed scsi: scsi_debug: Fix create target debugfs failure
This commit is contained in:
commit
1dfe225e9a
@ -145,6 +145,20 @@ static inline void sas_fail_probe(struct domain_device *dev, const char *func, i
|
||||
func, dev->parent ? "exp-attached" :
|
||||
"direct-attached",
|
||||
SAS_ADDR(dev->sas_addr), err);
|
||||
|
||||
/*
|
||||
* If the device probe failed, the expander phy attached address
|
||||
* needs to be reset so that the phy will not be treated as flutter
|
||||
* in the next revalidation
|
||||
*/
|
||||
if (dev->parent && !dev_is_expander(dev->dev_type)) {
|
||||
struct sas_phy *phy = dev->phy;
|
||||
struct domain_device *parent = dev->parent;
|
||||
struct ex_phy *ex_phy = &parent->ex_dev.ex_phy[phy->number];
|
||||
|
||||
memset(ex_phy->attached_sas_addr, 0, SAS_ADDR_SIZE);
|
||||
}
|
||||
|
||||
sas_unregister_dev(dev->port, dev);
|
||||
}
|
||||
|
||||
|
@ -926,6 +926,7 @@ static const int device_qfull_result =
|
||||
static const int condition_met_result = SAM_STAT_CONDITION_MET;
|
||||
|
||||
static struct dentry *sdebug_debugfs_root;
|
||||
static ASYNC_DOMAIN_EXCLUSIVE(sdebug_async_domain);
|
||||
|
||||
static void sdebug_err_free(struct rcu_head *head)
|
||||
{
|
||||
@ -1148,6 +1149,8 @@ static int sdebug_target_alloc(struct scsi_target *starget)
|
||||
if (!targetip)
|
||||
return -ENOMEM;
|
||||
|
||||
async_synchronize_full_domain(&sdebug_async_domain);
|
||||
|
||||
targetip->debugfs_entry = debugfs_create_dir(dev_name(&starget->dev),
|
||||
sdebug_debugfs_root);
|
||||
|
||||
@ -1174,7 +1177,8 @@ static void sdebug_target_destroy(struct scsi_target *starget)
|
||||
targetip = (struct sdebug_target_info *)starget->hostdata;
|
||||
if (targetip) {
|
||||
starget->hostdata = NULL;
|
||||
async_schedule(sdebug_tartget_cleanup_async, targetip);
|
||||
async_schedule_domain(sdebug_tartget_cleanup_async, targetip,
|
||||
&sdebug_async_domain);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user