]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: sd: Convert to SCSI bus methods
authorUwe Kleine-König <u.kleine-koenig@baylibre.com>
Fri, 19 Dec 2025 09:25:33 +0000 (10:25 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Mon, 12 Jan 2026 02:31:58 +0000 (21:31 -0500)
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>
drivers/scsi/sd.c

index 6ea6ee2830a4606e7ef887c51c52fceef5bb4cfa..dc7eac6211bc2999035c23eedfd514795a053b00 100644 (file)
@@ -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,