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*4882a593Smuzhiyunstatic 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*4882a593Smuzhiyunstatic 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