[PATCH 0/2] Fix UFS task management command timeout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On UTP_TASK_REQ_COMPL interrupt, ufshcd_tmc_handler() iterates through
busy requests in tags->rqs and complete request if corresponding
doorbell flag is reset.
However, ufshcd_issue_tm_cmd() allocates requests from tags->static_rqs 
and trigger doorbell directly without dispatching request through block 
layer, thus requests can never be found in tags->rqs and completed 
properly. Any TM command issued by ufshcd_issue_tm_cmd() inevitably 
timeout and further leads to recovery flow failure when LU Reset or 
Abort Task is issued.

In this patch, blk_mq_tagset_busy_iter() call in ufshcd_tmc_handler() 
is replaced with new interface, blk_mq_drv_tagset_busy_iter(), to 
allow completion of request allocted by driver. The new interface is 
introduced for driver to iterate through requests in static_rqs. 

Po-Wen Kao (2):
  blk-mq: new busy request iterator for driver
  scsi: ufs: fix TM request timeout

 block/blk-mq-tag.c        | 36 ++++++++++++++++++++++++++++++------
 drivers/scsi/ufs/ufshcd.c |  2 +-
 include/linux/blk-mq.h    |  4 ++++
 3 files changed, 35 insertions(+), 7 deletions(-)

-- 
2.18.0




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux