Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: 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>

authored by

Christoph Hellwig and committed by
Jens Axboe
a30e3441 b84ba30b

+24 -34
+1 -1
drivers/scsi/ch.c
··· 877 877 } 878 878 879 879 default: 880 - return scsi_ioctl(ch->device, NULL, file->f_mode, cmd, argp); 880 + return scsi_ioctl(ch->device, file->f_mode, cmd, argp); 881 881 882 882 } 883 883 }
+15 -24
drivers/scsi/scsi_ioctl.c
··· 408 408 return ret; 409 409 } 410 410 411 - static int sg_io(struct scsi_device *sdev, struct gendisk *disk, 412 - struct sg_io_hdr *hdr, fmode_t mode) 411 + static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode) 413 412 { 414 413 unsigned long start_time; 415 414 ssize_t ret = 0; ··· 498 499 /** 499 500 * sg_scsi_ioctl -- handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl 500 501 * @q: request queue to send scsi commands down 501 - * @disk: gendisk to operate on (option) 502 502 * @mode: mode used to open the file through which the ioctl has been 503 503 * submitted 504 504 * @sic: userspace structure describing the command to perform 505 505 * 506 506 * Send down the scsi command described by @sic to the device below 507 - * the request queue @q. If @file is non-NULL it's used to perform 508 - * fine-grained permission checks that allow users to send down 509 - * non-destructive SCSI commands. If the caller has a struct gendisk 510 - * available it should be passed in as @disk to allow the low level 511 - * driver to use the information contained in it. A non-NULL @disk 512 - * is only allowed if the caller knows that the low level driver doesn't 513 - * need it (e.g. in the scsi subsystem). 507 + * the request queue @q. 514 508 * 515 509 * Notes: 516 510 * - This interface is deprecated - users should use the SG_IO ··· 522 530 * Positive numbers returned are the compacted SCSI error codes (4 523 531 * bytes in one int) where the lowest byte is the SCSI status. 524 532 */ 525 - static int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, 526 - fmode_t mode, struct scsi_ioctl_command __user *sic) 533 + static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode, 534 + struct scsi_ioctl_command __user *sic) 527 535 { 528 536 enum { OMAX_SB_LEN = 16 }; /* For backward compatibility */ 529 537 struct request *rq; ··· 798 806 return 0; 799 807 } 800 808 801 - static int scsi_cdrom_send_packet(struct scsi_device *sdev, struct gendisk *disk, 802 - fmode_t mode, void __user *arg) 809 + static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode, 810 + void __user *arg) 803 811 { 804 812 struct cdrom_generic_command cgc; 805 813 struct sg_io_hdr hdr; ··· 839 847 hdr.cmdp = ((struct cdrom_generic_command __user *) arg)->cmd; 840 848 hdr.cmd_len = sizeof(cgc.cmd); 841 849 842 - err = sg_io(sdev, disk, &hdr, mode); 850 + err = sg_io(sdev, &hdr, mode); 843 851 if (err == -EFAULT) 844 852 return -EFAULT; 845 853 ··· 854 862 return err; 855 863 } 856 864 857 - static int scsi_ioctl_sg_io(struct scsi_device *sdev, struct gendisk *disk, 858 - fmode_t mode, void __user *argp) 865 + static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode, 866 + void __user *argp) 859 867 { 860 868 struct sg_io_hdr hdr; 861 869 int error; ··· 863 871 error = get_sg_io_hdr(&hdr, argp); 864 872 if (error) 865 873 return error; 866 - error = sg_io(sdev, disk, &hdr, mode); 874 + error = sg_io(sdev, &hdr, mode); 867 875 if (error == -EFAULT) 868 876 return error; 869 877 if (put_sg_io_hdr(&hdr, argp)) ··· 874 882 /** 875 883 * scsi_ioctl - Dispatch ioctl to scsi device 876 884 * @sdev: scsi device receiving ioctl 877 - * @disk: disk receiving the ioctl 878 885 * @mode: mode the block/char device is opened with 879 886 * @cmd: which ioctl is it 880 887 * @arg: data associated with ioctl ··· 882 891 * does not take a major/minor number as the dev field. Rather, it takes 883 892 * a pointer to a &struct scsi_device. 884 893 */ 885 - int scsi_ioctl(struct scsi_device *sdev, struct gendisk *disk, fmode_t mode, 886 - int cmd, void __user *arg) 894 + int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd, 895 + void __user *arg) 887 896 { 888 897 struct request_queue *q = sdev->request_queue; 889 898 struct scsi_sense_hdr sense_hdr; ··· 918 927 case SG_EMULATED_HOST: 919 928 return sg_emulated_host(q, arg); 920 929 case SG_IO: 921 - return scsi_ioctl_sg_io(sdev, disk, mode, arg); 930 + return scsi_ioctl_sg_io(sdev, mode, arg); 922 931 case SCSI_IOCTL_SEND_COMMAND: 923 - return sg_scsi_ioctl(q, disk, mode, arg); 932 + return sg_scsi_ioctl(q, mode, arg); 924 933 case CDROM_SEND_PACKET: 925 - return scsi_cdrom_send_packet(sdev, disk, mode, arg); 934 + return scsi_cdrom_send_packet(sdev, mode, arg); 926 935 case CDROMCLOSETRAY: 927 936 return scsi_send_start_stop(sdev, 3); 928 937 case CDROMEJECT:
+1 -1
drivers/scsi/sd.c
··· 1574 1574 1575 1575 if (is_sed_ioctl(cmd)) 1576 1576 return sed_ioctl(sdkp->opal_dev, cmd, p); 1577 - return scsi_ioctl(sdp, disk, mode, cmd, p); 1577 + return scsi_ioctl(sdp, mode, cmd, p); 1578 1578 } 1579 1579 1580 1580 static void set_media_not_present(struct scsi_disk *sdkp)
+2 -2
drivers/scsi/sg.c
··· 1109 1109 case SCSI_IOCTL_SEND_COMMAND: 1110 1110 if (atomic_read(&sdp->detaching)) 1111 1111 return -ENODEV; 1112 - return scsi_ioctl(sdp->device, NULL, filp->f_mode, cmd_in, p); 1112 + return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p); 1113 1113 case SG_SET_DEBUG: 1114 1114 result = get_user(val, ip); 1115 1115 if (result) ··· 1165 1165 ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p); 1166 1166 if (ret != -ENOIOCTLCMD) 1167 1167 return ret; 1168 - return scsi_ioctl(sdp->device, NULL, filp->f_mode, cmd_in, p); 1168 + return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p); 1169 1169 } 1170 1170 1171 1171 static __poll_t
+2 -3
drivers/scsi/sr.c
··· 561 561 static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, 562 562 unsigned long arg) 563 563 { 564 - struct gendisk *disk = bdev->bd_disk; 565 - struct scsi_cd *cd = scsi_cd(disk); 564 + struct scsi_cd *cd = scsi_cd(bdev->bd_disk); 566 565 struct scsi_device *sdev = cd->device; 567 566 void __user *argp = (void __user *)arg; 568 567 int ret; ··· 583 584 if (ret != -ENOSYS) 584 585 goto put; 585 586 } 586 - ret = scsi_ioctl(sdev, disk, mode, cmd, argp); 587 + ret = scsi_ioctl(sdev, mode, cmd, argp); 587 588 588 589 put: 589 590 scsi_autopm_put_device(sdev);
+1 -1
drivers/scsi/st.c
··· 3829 3829 break; 3830 3830 } 3831 3831 3832 - retval = scsi_ioctl(STp->device, NULL, file->f_mode, cmd_in, p); 3832 + retval = scsi_ioctl(STp->device, file->f_mode, cmd_in, p); 3833 3833 if (!retval && cmd_in == SCSI_IOCTL_STOP_UNIT) { 3834 3834 /* unload */ 3835 3835 STp->rew_at_close = 0;
+2 -2
include/scsi/scsi_ioctl.h
··· 45 45 46 46 int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev, 47 47 int cmd, bool ndelay); 48 - int scsi_ioctl(struct scsi_device *sdev, struct gendisk *disk, fmode_t mode, 49 - int cmd, void __user *arg); 48 + int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd, 49 + void __user *arg); 50 50 int get_sg_io_hdr(struct sg_io_hdr *hdr, const void __user *argp); 51 51 int put_sg_io_hdr(const struct sg_io_hdr *hdr, void __user *argp); 52 52 bool scsi_cmd_allowed(unsigned char *cmd, fmode_t mode);