aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/scsi/scsi_ioctl.h
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2014-10-11 16:25:31 +0200
committerChristoph Hellwig <hch@lst.de>2014-11-12 11:16:11 +0100
commit906d15fbd23c1267addab361063c1c8119992215 (patch)
tree419ba148925c3651fe9337af24a932097e2c3d8a /include/scsi/scsi_ioctl.h
parentscsi: refactor scsi_reset_provider handling (diff)
downloadwireguard-linux-906d15fbd23c1267addab361063c1c8119992215.tar.xz
wireguard-linux-906d15fbd23c1267addab361063c1c8119992215.zip
scsi: split scsi_nonblockable_ioctl
The calling conventions for this function are bad as it could return -ENODEV both for a device not currently online and a not recognized ioctl. Add a new scsi_ioctl_block_when_processing_errors function that wraps scsi_block_when_processing_errors with the a special case for the SG_SCSI_RESET ioctl command, and handle the SG_SCSI_RESET case itself in scsi_ioctl. All callers of scsi_ioctl now must call the above helper to check for the EH state, so that the ioctl handler itself doesn't have to. Reported-by: Robert Elliott <Elliott@hp.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Hannes Reinecke <hare@suse.de>
Diffstat (limited to 'include/scsi/scsi_ioctl.h')
-rw-r--r--include/scsi/scsi_ioctl.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/scsi/scsi_ioctl.h b/include/scsi/scsi_ioctl.h
index b9006848b813..8d19d1d233c3 100644
--- a/include/scsi/scsi_ioctl.h
+++ b/include/scsi/scsi_ioctl.h
@@ -40,9 +40,9 @@ typedef struct scsi_fctargaddress {
unsigned char host_wwn[8]; // include NULL term.
} Scsi_FCTargAddress;
+int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev,
+ int cmd, bool ndelay);
extern int scsi_ioctl(struct scsi_device *, int, void __user *);
-extern int scsi_nonblockable_ioctl(struct scsi_device *sdev, int cmd,
- void __user *arg, int ndelay);
#endif /* __KERNEL__ */
#endif /* _SCSI_IOCTL_H */