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