Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

scsi: ufs: core: Make blk_mq_tagset_busy_iter() skip reserved requests

A later patch will convert hba->reserved_slot into a reserved tag. Make
blk_mq_tagset_busy_iter() skip reserved requests such that device
management commands are skipped.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20251031204029.2883185-27-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Bart Van Assche and committed by
Martin K. Petersen
4b6c0d9c 9a2c9500

+8 -4
+8 -4
drivers/ufs/core/ufshcd.c
··· 644 644 struct Scsi_Host *shost = sdev->host; 645 645 struct ufs_hba *hba = shost_priv(shost); 646 646 647 - ufshcd_print_tr(hba, blk_mq_rq_to_pdu(req), *(bool *)priv); 647 + if (!blk_mq_is_reserved_rq(req)) 648 + ufshcd_print_tr(hba, blk_mq_rq_to_pdu(req), *(bool *)priv); 648 649 649 650 return true; 650 651 } ··· 5754 5753 struct ufs_hba *hba = shost_priv(shost); 5755 5754 struct ufs_hw_queue *hwq = ufshcd_mcq_req_to_hwq(hba, rq); 5756 5755 5757 - if (!hwq) 5756 + if (blk_mq_is_reserved_rq(rq) || !hwq) 5758 5757 return true; 5759 5758 5760 5759 ufshcd_mcq_compl_all_cqes_lock(hba, hwq); ··· 5781 5780 struct ufs_hba *hba = shost_priv(shost); 5782 5781 struct ufs_hw_queue *hwq = ufshcd_mcq_req_to_hwq(hba, rq); 5783 5782 5784 - if (hwq) 5783 + if (!blk_mq_is_reserved_rq(rq) && hwq) 5785 5784 ufshcd_mcq_poll_cqe_lock(hba, hwq); 5786 5785 5787 5786 return true; ··· 6648 6647 struct scsi_device *sdev = cmd->device; 6649 6648 struct Scsi_Host *shost = sdev->host; 6650 6649 struct ufs_hba *hba = shost_priv(shost); 6650 + 6651 + if (blk_mq_is_reserved_rq(rq)) 6652 + return true; 6651 6653 6652 6654 *ret = ufshcd_try_to_abort_task(hba, tag); 6653 6655 dev_err(hba->dev, "Aborting tag %d / CDB %#02x %s\n", tag, ··· 7601 7597 const u64 lun = *(u64 *)priv; 7602 7598 const u32 tag = req->tag; 7603 7599 7604 - if (sdev->lun != lun) 7600 + if (blk_mq_is_reserved_rq(req) || sdev->lun != lun) 7605 7601 return true; 7606 7602 7607 7603 if (ufshcd_clear_cmd(hba, tag) < 0) {