Hi Bean, > > + > > +static inline void ufshpb_put_pre_req(struct ufshpb_lu *hpb, > > + struct ufshpb_req *pre_req) > > +{ > > + pre_req->req = NULL; > > + pre_req->bio = NULL; > > + list_add_tail(&pre_req->list_req, &hpb->lh_pre_req_free); > > + hpb->num_inflight_pre_req--; > > +} > > + > > +static void ufshpb_pre_req_compl_fn(struct request *req, > > blk_status_t error) > > +{ > > + struct ufshpb_req *pre_req = (struct ufshpb_req *)req- > > >end_io_data; > > + struct ufshpb_lu *hpb = pre_req->hpb; > > + unsigned long flags; > > + struct scsi_sense_hdr sshdr; > > + > > + if (error) { > > + dev_err(&hpb->sdev_ufs_lu->sdev_dev, "block status > > %d", error); > > + scsi_normalize_sense(pre_req->sense, > > SCSI_SENSE_BUFFERSIZE, > > + &sshdr); > > + dev_err(&hpb->sdev_ufs_lu->sdev_dev, > > + "code %x sense_key %x asc %x ascq %x", > > + sshdr.response_code, > > + sshdr.sense_key, sshdr.asc, sshdr.ascq); > > + dev_err(&hpb->sdev_ufs_lu->sdev_dev, > > + "byte4 %x byte5 %x byte6 %x additional_len > > %x", > > + sshdr.byte4, sshdr.byte5, > > + sshdr.byte6, sshdr.additional_length); > > + } > > > How can you print out sense_key and sense code here? sense code will > not be copied to pre_req->sense. you should directly use > scsi_request->sense or let pre_req->sense point to scsi_request->sense. OK, I will fix it. > You update the new version patch so quickly. In another word, I am > wondering if you tested your patch before submitting? I will check more carefully for the next patch. Thanks, Daejun