mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
scsi: core: Improve type safety of scsi_rescan_device()
Most callers of scsi_rescan_device() have the scsi_device pointer readily available. Pass a struct scsi_device pointer to scsi_rescan_device() instead of a struct device pointer. This change prevents that a pointer to another struct device would be passed accidentally to scsi_rescan_device(). Remove the scsi_rescan_device() declaration from the scsi_priv.h header file since it duplicates the declaration in <scsi/scsi_host.h>. Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Reviewed-by: John Garry <john.g.garry@oracle.com> Cc: Mike Christie <michael.christie@oracle.com> Cc: Ming Lei <ming.lei@redhat.com> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Link: https://lore.kernel.org/r/20230822153043.4046244-1-bvanassche@acm.org Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
e1a87e29fb
commit
79519528a1
@ -4884,7 +4884,7 @@ void ata_scsi_dev_rescan(struct work_struct *work)
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(ap->lock, flags);
|
||||
scsi_rescan_device(&(sdev->sdev_gendev));
|
||||
scsi_rescan_device(sdev);
|
||||
scsi_device_put(sdev);
|
||||
spin_lock_irqsave(ap->lock, flags);
|
||||
}
|
||||
|
@ -1451,7 +1451,7 @@ retry_next:
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
scsi_rescan_device(&device->sdev_gendev);
|
||||
scsi_rescan_device(device);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -1500,7 +1500,7 @@ static void mvumi_rescan_devices(struct mvumi_hba *mhba, int id)
|
||||
|
||||
sdev = scsi_device_lookup(mhba->shost, 0, id, 0);
|
||||
if (sdev) {
|
||||
scsi_rescan_device(&sdev->sdev_gendev);
|
||||
scsi_rescan_device(sdev);
|
||||
scsi_device_put(sdev);
|
||||
}
|
||||
}
|
||||
|
@ -2458,7 +2458,7 @@ static void scsi_evt_emit(struct scsi_device *sdev, struct scsi_event *evt)
|
||||
envp[idx++] = "SDEV_MEDIA_CHANGE=1";
|
||||
break;
|
||||
case SDEV_EVT_INQUIRY_CHANGE_REPORTED:
|
||||
scsi_rescan_device(&sdev->sdev_gendev);
|
||||
scsi_rescan_device(sdev);
|
||||
envp[idx++] = "SDEV_UA=INQUIRY_DATA_HAS_CHANGED";
|
||||
break;
|
||||
case SDEV_EVT_CAPACITY_CHANGE_REPORTED:
|
||||
|
@ -137,7 +137,6 @@ extern int scsi_complete_async_scans(void);
|
||||
extern int scsi_scan_host_selected(struct Scsi_Host *, unsigned int,
|
||||
unsigned int, u64, enum scsi_scan_mode);
|
||||
extern void scsi_forget_host(struct Scsi_Host *);
|
||||
extern void scsi_rescan_device(struct device *);
|
||||
|
||||
/* scsi_sysctl.c */
|
||||
#ifdef CONFIG_SYSCTL
|
||||
|
@ -1619,9 +1619,9 @@ int scsi_add_device(struct Scsi_Host *host, uint channel,
|
||||
}
|
||||
EXPORT_SYMBOL(scsi_add_device);
|
||||
|
||||
void scsi_rescan_device(struct device *dev)
|
||||
void scsi_rescan_device(struct scsi_device *sdev)
|
||||
{
|
||||
struct scsi_device *sdev = to_scsi_device(dev);
|
||||
struct device *dev = &sdev->sdev_gendev;
|
||||
|
||||
device_lock(dev);
|
||||
|
||||
|
@ -747,7 +747,7 @@ static ssize_t
|
||||
store_rescan_field (struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
scsi_rescan_device(dev);
|
||||
scsi_rescan_device(to_scsi_device(dev));
|
||||
return count;
|
||||
}
|
||||
static DEVICE_ATTR(rescan, S_IWUSR, NULL, store_rescan_field);
|
||||
@ -840,7 +840,7 @@ store_state_field(struct device *dev, struct device_attribute *attr,
|
||||
* waiting for pending I/O to finish.
|
||||
*/
|
||||
blk_mq_run_hw_queues(sdev->request_queue, true);
|
||||
scsi_rescan_device(dev);
|
||||
scsi_rescan_device(sdev);
|
||||
}
|
||||
|
||||
return ret == 0 ? count : -EINVAL;
|
||||
|
@ -2257,7 +2257,7 @@ static void pqi_update_device_list(struct pqi_ctrl_info *ctrl_info,
|
||||
device->advertised_queue_depth = device->queue_depth;
|
||||
scsi_change_queue_depth(device->sdev, device->advertised_queue_depth);
|
||||
if (device->rescan) {
|
||||
scsi_rescan_device(&device->sdev->sdev_gendev);
|
||||
scsi_rescan_device(device->sdev);
|
||||
device->rescan = false;
|
||||
}
|
||||
}
|
||||
|
@ -470,7 +470,7 @@ static void storvsc_device_scan(struct work_struct *work)
|
||||
sdev = scsi_device_lookup(wrk->host, 0, wrk->tgt_id, wrk->lun);
|
||||
if (!sdev)
|
||||
goto done;
|
||||
scsi_rescan_device(&sdev->sdev_gendev);
|
||||
scsi_rescan_device(sdev);
|
||||
scsi_device_put(sdev);
|
||||
|
||||
done:
|
||||
|
@ -325,7 +325,7 @@ static void virtscsi_handle_param_change(struct virtio_scsi *vscsi,
|
||||
/* Handle "Parameters changed", "Mode parameters changed", and
|
||||
"Capacity data has changed". */
|
||||
if (asc == 0x2a && (ascq == 0x00 || ascq == 0x01 || ascq == 0x09))
|
||||
scsi_rescan_device(&sdev->sdev_gendev);
|
||||
scsi_rescan_device(sdev);
|
||||
|
||||
scsi_device_put(sdev);
|
||||
}
|
||||
|
@ -764,7 +764,7 @@ scsi_template_proc_dir(const struct scsi_host_template *sht);
|
||||
#define scsi_template_proc_dir(sht) NULL
|
||||
#endif
|
||||
extern void scsi_scan_host(struct Scsi_Host *);
|
||||
extern void scsi_rescan_device(struct device *);
|
||||
extern void scsi_rescan_device(struct scsi_device *);
|
||||
extern void scsi_remove_host(struct Scsi_Host *);
|
||||
extern struct Scsi_Host *scsi_host_get(struct Scsi_Host *);
|
||||
extern int scsi_host_busy(struct Scsi_Host *shost);
|
||||
|
Loading…
Reference in New Issue
Block a user