mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-02 08:11:32 -04:00
scsi: sd: Convert to SCSI bus methods
The SCSI subsystem has implemented dedicated callbacks for probe, remove and shutdown. Make use of them. This fixes a runtime warning about the driver needing to be converted to the bus probe method. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Link: https://patch.msgid.link/8ad5a00c2ad2a64b81350ae3fab02fbe430f306d.1766133330.git.u.kleine-koenig@baylibre.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
committed by
Martin K. Petersen
parent
fba333569c
commit
63b541f054
@@ -108,7 +108,7 @@ static void sd_config_write_same(struct scsi_disk *sdkp,
|
||||
struct queue_limits *lim);
|
||||
static void sd_revalidate_disk(struct gendisk *);
|
||||
static void sd_unlock_native_capacity(struct gendisk *disk);
|
||||
static void sd_shutdown(struct device *);
|
||||
static void sd_shutdown(struct scsi_device *);
|
||||
static void scsi_disk_release(struct device *cdev);
|
||||
|
||||
static DEFINE_IDA(sd_index_ida);
|
||||
@@ -3935,7 +3935,7 @@ static int sd_format_disk_name(char *prefix, int index, char *buf, int buflen)
|
||||
* sd_probe - called during driver initialization and whenever a
|
||||
* new scsi device is attached to the system. It is called once
|
||||
* for each scsi device (not just disks) present.
|
||||
* @dev: pointer to device object
|
||||
* @sdp: pointer to device object
|
||||
*
|
||||
* Returns 0 if successful (or not interested in this scsi device
|
||||
* (e.g. scanner)); 1 when there is an error.
|
||||
@@ -3949,9 +3949,9 @@ static int sd_format_disk_name(char *prefix, int index, char *buf, int buflen)
|
||||
* Assume sd_probe is not re-entrant (for time being)
|
||||
* Also think about sd_probe() and sd_remove() running coincidentally.
|
||||
**/
|
||||
static int sd_probe(struct device *dev)
|
||||
static int sd_probe(struct scsi_device *sdp)
|
||||
{
|
||||
struct scsi_device *sdp = to_scsi_device(dev);
|
||||
struct device *dev = &sdp->sdev_gendev;
|
||||
struct scsi_disk *sdkp;
|
||||
struct gendisk *gd;
|
||||
int index;
|
||||
@@ -4091,15 +4091,16 @@ static int sd_probe(struct device *dev)
|
||||
* sd_remove - called whenever a scsi disk (previously recognized by
|
||||
* sd_probe) is detached from the system. It is called (potentially
|
||||
* multiple times) during sd module unload.
|
||||
* @dev: pointer to device object
|
||||
* @sdp: pointer to device object
|
||||
*
|
||||
* Note: this function is invoked from the scsi mid-level.
|
||||
* This function potentially frees up a device name (e.g. /dev/sdc)
|
||||
* that could be re-used by a subsequent sd_probe().
|
||||
* This function is not called when the built-in sd driver is "exit-ed".
|
||||
**/
|
||||
static int sd_remove(struct device *dev)
|
||||
static void sd_remove(struct scsi_device *sdp)
|
||||
{
|
||||
struct device *dev = &sdp->sdev_gendev;
|
||||
struct scsi_disk *sdkp = dev_get_drvdata(dev);
|
||||
|
||||
scsi_autopm_get_device(sdkp->device);
|
||||
@@ -4107,10 +4108,9 @@ static int sd_remove(struct device *dev)
|
||||
device_del(&sdkp->disk_dev);
|
||||
del_gendisk(sdkp->disk);
|
||||
if (!sdkp->suspended)
|
||||
sd_shutdown(dev);
|
||||
sd_shutdown(sdp);
|
||||
|
||||
put_disk(sdkp->disk);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void scsi_disk_release(struct device *dev)
|
||||
@@ -4197,8 +4197,9 @@ static int sd_start_stop_device(struct scsi_disk *sdkp, int start)
|
||||
* the normal SCSI command structure. Wait for the command to
|
||||
* complete.
|
||||
*/
|
||||
static void sd_shutdown(struct device *dev)
|
||||
static void sd_shutdown(struct scsi_device *sdp)
|
||||
{
|
||||
struct device *dev = &sdp->sdev_gendev;
|
||||
struct scsi_disk *sdkp = dev_get_drvdata(dev);
|
||||
|
||||
if (!sdkp)
|
||||
@@ -4368,12 +4369,12 @@ static const struct dev_pm_ops sd_pm_ops = {
|
||||
};
|
||||
|
||||
static struct scsi_driver sd_template = {
|
||||
.probe = sd_probe,
|
||||
.remove = sd_remove,
|
||||
.shutdown = sd_shutdown,
|
||||
.gendrv = {
|
||||
.name = "sd",
|
||||
.probe = sd_probe,
|
||||
.probe_type = PROBE_PREFER_ASYNCHRONOUS,
|
||||
.remove = sd_remove,
|
||||
.shutdown = sd_shutdown,
|
||||
.pm = &sd_pm_ops,
|
||||
},
|
||||
.rescan = sd_rescan,
|
||||
|
||||
Reference in New Issue
Block a user