scsi: remove the gendisk argument to scsi_ioctl
authorChristoph Hellwig <hch@lst.de>
Fri, 26 Nov 2021 12:18:02 +0000 (13:18 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 29 Nov 2021 13:41:29 +0000 (06:41 -0700)
Now that blk_execute_rq does not take a gendisk argument there is no need
to pass it through the scsi_ioctl callchain either.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20211126121802.2090656-6-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/scsi/ch.c
drivers/scsi/scsi_ioctl.c
drivers/scsi/sd.c
drivers/scsi/sg.c
drivers/scsi/sr.c
drivers/scsi/st.c
include/scsi/scsi_ioctl.h

index 2701290..6fa300d 100644 (file)
@@ -877,7 +877,7 @@ static long ch_ioctl(struct file *file,
        }
 
        default:
-               return scsi_ioctl(ch->device, NULL, file->f_mode, cmd, argp);
+               return scsi_ioctl(ch->device, file->f_mode, cmd, argp);
 
        }
 }
index 340ba0a..e13fd38 100644 (file)
@@ -408,8 +408,7 @@ static int scsi_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
        return ret;
 }
 
-static int sg_io(struct scsi_device *sdev, struct gendisk *disk,
-               struct sg_io_hdr *hdr, fmode_t mode)
+static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode)
 {
        unsigned long start_time;
        ssize_t ret = 0;
@@ -499,19 +498,12 @@ out_put_request:
 /**
  * sg_scsi_ioctl  --  handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl
  * @q:         request queue to send scsi commands down
- * @disk:      gendisk to operate on (option)
  * @mode:      mode used to open the file through which the ioctl has been
  *             submitted
  * @sic:       userspace structure describing the command to perform
  *
  * Send down the scsi command described by @sic to the device below
- * the request queue @q.  If @file is non-NULL it's used to perform
- * fine-grained permission checks that allow users to send down
- * non-destructive SCSI commands.  If the caller has a struct gendisk
- * available it should be passed in as @disk to allow the low level
- * driver to use the information contained in it.  A non-NULL @disk
- * is only allowed if the caller knows that the low level driver doesn't
- * need it (e.g. in the scsi subsystem).
+ * the request queue @q.
  *
  * Notes:
  *   -  This interface is deprecated - users should use the SG_IO
@@ -530,8 +522,8 @@ out_put_request:
  *      Positive numbers returned are the compacted SCSI error codes (4
  *      bytes in one int) where the lowest byte is the SCSI status.
  */
-static int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk,
-               fmode_t mode, struct scsi_ioctl_command __user *sic)
+static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
+               struct scsi_ioctl_command __user *sic)
 {
        enum { OMAX_SB_LEN = 16 };      /* For backward compatibility */
        struct request *rq;
@@ -806,8 +798,8 @@ static int scsi_put_cdrom_generic_arg(const struct cdrom_generic_command *cgc,
        return 0;
 }
 
-static int scsi_cdrom_send_packet(struct scsi_device *sdev, struct gendisk *disk,
-               fmode_t mode, void __user *arg)
+static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode,
+               void __user *arg)
 {
        struct cdrom_generic_command cgc;
        struct sg_io_hdr hdr;
@@ -847,7 +839,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, struct gendisk *disk
        hdr.cmdp = ((struct cdrom_generic_command __user *) arg)->cmd;
        hdr.cmd_len = sizeof(cgc.cmd);
 
-       err = sg_io(sdev, disk, &hdr, mode);
+       err = sg_io(sdev, &hdr, mode);
        if (err == -EFAULT)
                return -EFAULT;
 
@@ -862,8 +854,8 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, struct gendisk *disk
        return err;
 }
 
-static int scsi_ioctl_sg_io(struct scsi_device *sdev, struct gendisk *disk,
-               fmode_t mode, void __user *argp)
+static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode,
+               void __user *argp)
 {
        struct sg_io_hdr hdr;
        int error;
@@ -871,7 +863,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, struct gendisk *disk,
        error = get_sg_io_hdr(&hdr, argp);
        if (error)
                return error;
-       error = sg_io(sdev, disk, &hdr, mode);
+       error = sg_io(sdev, &hdr, mode);
        if (error == -EFAULT)
                return error;
        if (put_sg_io_hdr(&hdr, argp))
@@ -882,7 +874,6 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, struct gendisk *disk,
 /**
  * scsi_ioctl - Dispatch ioctl to scsi device
  * @sdev: scsi device receiving ioctl
- * @disk: disk receiving the ioctl
  * @mode: mode the block/char device is opened with
  * @cmd: which ioctl is it
  * @arg: data associated with ioctl
@@ -891,8 +882,8 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, struct gendisk *disk,
  * does not take a major/minor number as the dev field.  Rather, it takes
  * a pointer to a &struct scsi_device.
  */
-int scsi_ioctl(struct scsi_device *sdev, struct gendisk *disk, fmode_t mode,
-               int cmd, void __user *arg)
+int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+               void __user *arg)
 {
        struct request_queue *q = sdev->request_queue;
        struct scsi_sense_hdr sense_hdr;
@@ -927,11 +918,11 @@ int scsi_ioctl(struct scsi_device *sdev, struct gendisk *disk, fmode_t mode,
        case SG_EMULATED_HOST:
                return sg_emulated_host(q, arg);
        case SG_IO:
-               return scsi_ioctl_sg_io(sdev, disk, mode, arg);
+               return scsi_ioctl_sg_io(sdev, mode, arg);
        case SCSI_IOCTL_SEND_COMMAND:
-               return sg_scsi_ioctl(q, disk, mode, arg);
+               return sg_scsi_ioctl(q, mode, arg);
        case CDROM_SEND_PACKET:
-               return scsi_cdrom_send_packet(sdev, disk, mode, arg);
+               return scsi_cdrom_send_packet(sdev, mode, arg);
        case CDROMCLOSETRAY:
                return scsi_send_start_stop(sdev, 3);
        case CDROMEJECT:
index 8181857..5ddb8e0 100644 (file)
@@ -1574,7 +1574,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
 
        if (is_sed_ioctl(cmd))
                return sed_ioctl(sdkp->opal_dev, cmd, p);
-       return scsi_ioctl(sdp, disk, mode, cmd, p);
+       return scsi_ioctl(sdp, mode, cmd, p);
 }
 
 static void set_media_not_present(struct scsi_disk *sdkp)
index 6c8ffad..ad12b32 100644 (file)
@@ -1109,7 +1109,7 @@ sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp,
        case SCSI_IOCTL_SEND_COMMAND:
                if (atomic_read(&sdp->detaching))
                        return -ENODEV;
-               return scsi_ioctl(sdp->device, NULL, filp->f_mode, cmd_in, p);
+               return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
        case SG_SET_DEBUG:
                result = get_user(val, ip);
                if (result)
@@ -1165,7 +1165,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
        ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p);
        if (ret != -ENOIOCTLCMD)
                return ret;
-       return scsi_ioctl(sdp->device, NULL, filp->f_mode, cmd_in, p);
+       return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p);
 }
 
 static __poll_t
index c295898..14c1228 100644 (file)
@@ -561,8 +561,7 @@ static void sr_block_release(struct gendisk *disk, fmode_t mode)
 static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
                          unsigned long arg)
 {
-       struct gendisk *disk = bdev->bd_disk;
-       struct scsi_cd *cd = scsi_cd(disk);
+       struct scsi_cd *cd = scsi_cd(bdev->bd_disk);
        struct scsi_device *sdev = cd->device;
        void __user *argp = (void __user *)arg;
        int ret;
@@ -584,7 +583,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
                if (ret != -ENOSYS)
                        goto put;
        }
-       ret = scsi_ioctl(sdev, disk, mode, cmd, argp);
+       ret = scsi_ioctl(sdev, mode, cmd, argp);
 
 put:
        scsi_autopm_put_device(sdev);
index 06acc7d..e869e90 100644 (file)
@@ -3829,7 +3829,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg)
                break;
        }
 
-       retval = scsi_ioctl(STp->device, NULL, file->f_mode, cmd_in, p);
+       retval = scsi_ioctl(STp->device, file->f_mode, cmd_in, p);
        if (!retval && cmd_in == SCSI_IOCTL_STOP_UNIT) {
                /* unload */
                STp->rew_at_close = 0;
index d2cb9ae..beac64e 100644 (file)
@@ -45,8 +45,8 @@ typedef struct scsi_fctargaddress {
 
 int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev,
                int cmd, bool ndelay);
-int scsi_ioctl(struct scsi_device *sdev, struct gendisk *disk, fmode_t mode,
-               int cmd, void __user *arg);
+int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd,
+               void __user *arg);
 int get_sg_io_hdr(struct sg_io_hdr *hdr, const void __user *argp);
 int put_sg_io_hdr(const struct sg_io_hdr *hdr, void __user *argp);
 bool scsi_cmd_allowed(unsigned char *cmd, fmode_t mode);