xref: /OK3568_Linux_fs/kernel/include/scsi/scsi_request.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef _SCSI_SCSI_REQUEST_H
3*4882a593Smuzhiyun #define _SCSI_SCSI_REQUEST_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <linux/blk-mq.h>
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #define BLK_MAX_CDB	16
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun struct scsi_request {
10*4882a593Smuzhiyun 	unsigned char	__cmd[BLK_MAX_CDB];
11*4882a593Smuzhiyun 	unsigned char	*cmd;
12*4882a593Smuzhiyun 	unsigned short	cmd_len;
13*4882a593Smuzhiyun 	int		result;
14*4882a593Smuzhiyun 	unsigned int	sense_len;
15*4882a593Smuzhiyun 	unsigned int	resid_len;	/* residual count */
16*4882a593Smuzhiyun 	int		retries;
17*4882a593Smuzhiyun 	void		*sense;
18*4882a593Smuzhiyun };
19*4882a593Smuzhiyun 
scsi_req(struct request * rq)20*4882a593Smuzhiyun static inline struct scsi_request *scsi_req(struct request *rq)
21*4882a593Smuzhiyun {
22*4882a593Smuzhiyun 	return blk_mq_rq_to_pdu(rq);
23*4882a593Smuzhiyun }
24*4882a593Smuzhiyun 
scsi_req_free_cmd(struct scsi_request * req)25*4882a593Smuzhiyun static inline void scsi_req_free_cmd(struct scsi_request *req)
26*4882a593Smuzhiyun {
27*4882a593Smuzhiyun 	if (req->cmd != req->__cmd)
28*4882a593Smuzhiyun 		kfree(req->cmd);
29*4882a593Smuzhiyun }
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun void scsi_req_init(struct scsi_request *req);
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun #endif /* _SCSI_SCSI_REQUEST_H */
34