Commit a30e3441 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

scsi: remove the gendisk argument to scsi_ioctl



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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20211126121802.2090656-6-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent b84ba30b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);

	}
}
+15 −24
Original line number Diff line number Diff line
@@ -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 @@ static int sg_io(struct scsi_device *sdev, struct gendisk *disk,
/**
 * 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 @@ static int sg_io(struct scsi_device *sdev, struct gendisk *disk,
 *      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:
+1 −1
Original line number Diff line number Diff line
@@ -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)
+2 −2
Original line number Diff line number Diff line
@@ -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
+2 −3
Original line number Diff line number Diff line
@@ -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);
Loading