Hi, Bart > - wait_event(hba->tm_tag_wq, ufshcd_get_tm_free_slot(hba, > &free_slot)); > + req = blk_get_request(q, REQ_OP_DRV_OUT, BLK_MQ_REQ_RESERVED); > + req->end_io_data = &wait; > + free_slot = req->tag; > + WARN_ON_ONCE(free_slot < 0 || free_slot >= hba->nutmrs); > ufshcd_hold(hba, false); > Understand now , you delete ufshcd_get_tm_free_slot(). Run a big circle to get a free_slot from reserved tags by calling blk_get_request(). But UFS data transfer queue depth is 32, not 32 + hba->nutmrs. How to make sure we see the tag is consistent across block/scsi/ufs? Thanks, //Bean