From: kernel test robot <lkp@intel.com>
To: Mike Christie <michael.christie@oracle.com>,
lduncan@suse.com, martin.petersen@oracle.com,
mrangankar@marvell.com, svernekar@marvell.com,
linux-scsi@vger.kernel.org, jejb@linux.ibm.com
Cc: kbuild-all@lists.01.org, Mike Christie <michael.christie@oracle.com>
Subject: Re: [PATCH v3 09/17] scsi: qedi: fix race during abort timeouts
Date: Fri, 16 Apr 2021 19:39:37 +0800 [thread overview]
Message-ID: <202104161932.IKLfImK0-lkp@intel.com> (raw)
In-Reply-To: <20210416020440.259271-10-michael.christie@oracle.com>
[-- Attachment #1: Type: text/plain, Size: 12085 bytes --]
Hi Mike,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on scsi/for-next]
[also build test WARNING on next-20210415]
[cannot apply to mkp-scsi/for-next rdma/for-next v5.12-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Mike-Christie/libicsi-and-qedi-TMF-fixes/20210416-100636
base: https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
config: alpha-randconfig-r016-20210416 (attached as .config)
compiler: alpha-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/9d4a83c1316e3dad2bd5687563584509a3d6557c
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Mike-Christie/libicsi-and-qedi-TMF-fixes/20210416-100636
git checkout 9d4a83c1316e3dad2bd5687563584509a3d6557c
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=alpha
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/scsi/qedi/qedi_fw.c: In function 'qedi_process_cmd_cleanup_resp':
>> drivers/scsi/qedi/qedi_fw.c:741:6: warning: variable 'rtid' set but not used [-Wunused-but-set-variable]
741 | u32 rtid = 0;
| ^~~~
vim +/rtid +741 drivers/scsi/qedi/qedi_fw.c
ace7f46ba5fde7 Manish Rangankar 2016-12-01 729
ace7f46ba5fde7 Manish Rangankar 2016-12-01 730 static void qedi_process_cmd_cleanup_resp(struct qedi_ctx *qedi,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 731 struct iscsi_cqe_solicited *cqe,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 732 struct iscsi_task *task,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 733 struct iscsi_conn *conn)
ace7f46ba5fde7 Manish Rangankar 2016-12-01 734 {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 735 struct qedi_work_map *work, *work_tmp;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 736 u32 proto_itt = cqe->itid;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 737 u32 ptmp_itt = 0;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 738 itt_t protoitt = 0;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 739 int found = 0;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 740 struct qedi_cmd *qedi_cmd = NULL;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 @741 u32 rtid = 0;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 742 u32 iscsi_cid;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 743 struct qedi_conn *qedi_conn;
8712f467d4a560 Christos Gkekas 2017-10-14 744 struct qedi_cmd *dbg_cmd;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 745 struct iscsi_task *mtask;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 746 struct iscsi_tm *tmf_hdr = NULL;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 747
ace7f46ba5fde7 Manish Rangankar 2016-12-01 748 iscsi_cid = cqe->conn_id;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 749 qedi_conn = qedi->cid_que.conn_cid_tbl[iscsi_cid];
967823d6c3980a Manish Rangankar 2018-02-26 750 if (!qedi_conn) {
967823d6c3980a Manish Rangankar 2018-02-26 751 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
967823d6c3980a Manish Rangankar 2018-02-26 752 "icid not found 0x%x\n", cqe->conn_id);
967823d6c3980a Manish Rangankar 2018-02-26 753 return;
967823d6c3980a Manish Rangankar 2018-02-26 754 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 755
ace7f46ba5fde7 Manish Rangankar 2016-12-01 756 /* Based on this itt get the corresponding qedi_cmd */
ace7f46ba5fde7 Manish Rangankar 2016-12-01 757 spin_lock_bh(&qedi_conn->tmf_work_lock);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 758 list_for_each_entry_safe(work, work_tmp, &qedi_conn->tmf_work_list,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 759 list) {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 760 if (work->rtid == proto_itt) {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 761 /* We found the command */
ace7f46ba5fde7 Manish Rangankar 2016-12-01 762 qedi_cmd = work->qedi_cmd;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 763 if (!qedi_cmd->list_tmf_work) {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 764 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 765 "TMF work not found, cqe->tid=0x%x, cid=0x%x\n",
ace7f46ba5fde7 Manish Rangankar 2016-12-01 766 proto_itt, qedi_conn->iscsi_conn_id);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 767 WARN_ON(1);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 768 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 769 found = 1;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 770 mtask = qedi_cmd->task;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 771 tmf_hdr = (struct iscsi_tm *)mtask->hdr;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 772 rtid = work->rtid;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 773
ace7f46ba5fde7 Manish Rangankar 2016-12-01 774 list_del_init(&work->list);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 775 kfree(work);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 776 qedi_cmd->list_tmf_work = NULL;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 777 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 778 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 779 spin_unlock_bh(&qedi_conn->tmf_work_lock);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 780
ace7f46ba5fde7 Manish Rangankar 2016-12-01 781 if (found) {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 782 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 783 "TMF work, cqe->tid=0x%x, tmf flags=0x%x, cid=0x%x\n",
ace7f46ba5fde7 Manish Rangankar 2016-12-01 784 proto_itt, tmf_hdr->flags, qedi_conn->iscsi_conn_id);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 785
ace7f46ba5fde7 Manish Rangankar 2016-12-01 786 if ((tmf_hdr->flags & ISCSI_FLAG_TM_FUNC_MASK) ==
ace7f46ba5fde7 Manish Rangankar 2016-12-01 787 ISCSI_TM_FUNC_ABORT_TASK) {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 788 spin_lock_bh(&conn->session->back_lock);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 789
ace7f46ba5fde7 Manish Rangankar 2016-12-01 790 protoitt = build_itt(get_itt(tmf_hdr->rtt),
ace7f46ba5fde7 Manish Rangankar 2016-12-01 791 conn->session->age);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 792 task = iscsi_itt_to_task(conn, protoitt);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 793
ace7f46ba5fde7 Manish Rangankar 2016-12-01 794 spin_unlock_bh(&conn->session->back_lock);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 795
ace7f46ba5fde7 Manish Rangankar 2016-12-01 796 if (!task) {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 797 QEDI_NOTICE(&qedi->dbg_ctx,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 798 "IO task completed, tmf rtt=0x%x, cid=0x%x\n",
ace7f46ba5fde7 Manish Rangankar 2016-12-01 799 get_itt(tmf_hdr->rtt),
ace7f46ba5fde7 Manish Rangankar 2016-12-01 800 qedi_conn->iscsi_conn_id);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 801 return;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 802 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 803
ace7f46ba5fde7 Manish Rangankar 2016-12-01 804 dbg_cmd = task->dd_data;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 805
ace7f46ba5fde7 Manish Rangankar 2016-12-01 806 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 807 "Abort tmf rtt=0x%x, i/o itt=0x%x, i/o tid=0x%x, cid=0x%x\n",
ace7f46ba5fde7 Manish Rangankar 2016-12-01 808 get_itt(tmf_hdr->rtt), get_itt(task->itt),
ace7f46ba5fde7 Manish Rangankar 2016-12-01 809 dbg_cmd->task_id, qedi_conn->iscsi_conn_id);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 810
ace7f46ba5fde7 Manish Rangankar 2016-12-01 811 if (qedi_cmd->state == CLEANUP_WAIT_FAILED)
ace7f46ba5fde7 Manish Rangankar 2016-12-01 812 qedi_cmd->state = CLEANUP_RECV;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 813
ace7f46ba5fde7 Manish Rangankar 2016-12-01 814 spin_lock(&qedi_conn->list_lock);
28b35d17f9f857 Nilesh Javali 2020-09-08 815 if (likely(dbg_cmd->io_cmd_in_list)) {
28b35d17f9f857 Nilesh Javali 2020-09-08 816 dbg_cmd->io_cmd_in_list = false;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 817 list_del_init(&dbg_cmd->io_cmd);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 818 qedi_conn->active_cmd_count--;
28b35d17f9f857 Nilesh Javali 2020-09-08 819 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 820 spin_unlock(&qedi_conn->list_lock);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 821 qedi_cmd->state = CLEANUP_RECV;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 822 wake_up_interruptible(&qedi_conn->wait_queue);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 823 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 824 } else if (qedi_conn->cmd_cleanup_req > 0) {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 825 spin_lock_bh(&conn->session->back_lock);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 826 qedi_get_proto_itt(qedi, cqe->itid, &ptmp_itt);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 827 protoitt = build_itt(ptmp_itt, conn->session->age);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 828 task = iscsi_itt_to_task(conn, protoitt);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 829 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 830 "cleanup io itid=0x%x, protoitt=0x%x, cmd_cleanup_cmpl=%d, cid=0x%x\n",
ace7f46ba5fde7 Manish Rangankar 2016-12-01 831 cqe->itid, protoitt, qedi_conn->cmd_cleanup_cmpl,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 832 qedi_conn->iscsi_conn_id);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 833
ace7f46ba5fde7 Manish Rangankar 2016-12-01 834 spin_unlock_bh(&conn->session->back_lock);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 835 if (!task) {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 836 QEDI_NOTICE(&qedi->dbg_ctx,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 837 "task is null, itid=0x%x, cid=0x%x\n",
ace7f46ba5fde7 Manish Rangankar 2016-12-01 838 cqe->itid, qedi_conn->iscsi_conn_id);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 839 return;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 840 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 841 qedi_conn->cmd_cleanup_cmpl++;
ace7f46ba5fde7 Manish Rangankar 2016-12-01 842 wake_up(&qedi_conn->wait_queue);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 843
ace7f46ba5fde7 Manish Rangankar 2016-12-01 844 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 845 "Freeing tid=0x%x for cid=0x%x\n",
ace7f46ba5fde7 Manish Rangankar 2016-12-01 846 cqe->itid, qedi_conn->iscsi_conn_id);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 847
ace7f46ba5fde7 Manish Rangankar 2016-12-01 848 } else {
ace7f46ba5fde7 Manish Rangankar 2016-12-01 849 qedi_get_proto_itt(qedi, cqe->itid, &ptmp_itt);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 850 protoitt = build_itt(ptmp_itt, conn->session->age);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 851 task = iscsi_itt_to_task(conn, protoitt);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 852 QEDI_ERR(&qedi->dbg_ctx,
ace7f46ba5fde7 Manish Rangankar 2016-12-01 853 "Delayed or untracked cleanup response, itt=0x%x, tid=0x%x, cid=0x%x, task=%p\n",
ace7f46ba5fde7 Manish Rangankar 2016-12-01 854 protoitt, cqe->itid, qedi_conn->iscsi_conn_id, task);
ace7f46ba5fde7 Manish Rangankar 2016-12-01 855 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 856 }
ace7f46ba5fde7 Manish Rangankar 2016-12-01 857
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29656 bytes --]
next prev parent reply other threads:[~2021-04-16 11:39 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-16 2:04 [PATCH v3 00/17] libicsi and qedi TMF fixes Mike Christie
2021-04-16 2:04 ` [PATCH v3 01/17] scsi: iscsi: add task completion helper Mike Christie
2021-04-16 21:56 ` Lee Duncan
2021-04-16 2:04 ` [PATCH v3 02/17] scsi: iscsi: sync libiscsi and driver reset cleanup Mike Christie
2021-04-17 17:22 ` Lee Duncan
2021-04-17 17:26 ` Mike Christie
2021-04-16 2:04 ` [PATCH v3 03/17] scsi: iscsi: stop queueing during ep_disconnect Mike Christie
2021-04-20 14:28 ` Lee Duncan
2021-04-16 2:04 ` [PATCH v3 04/17] scsi: iscsi: drop suspend calls from ep_disconnect Mike Christie
2021-04-20 14:29 ` Lee Duncan
2021-04-16 2:04 ` [PATCH v3 05/17] scsi: iscsi: wait on cmds before freeing conn Mike Christie
2021-04-22 15:02 ` Lee Duncan
2021-04-22 20:09 ` Mike Christie
2021-04-16 2:04 ` [PATCH v3 06/17] scsi: iscsi: fix use conn use after free Mike Christie
2021-04-24 21:11 ` Lee Duncan
2021-04-16 2:04 ` [PATCH v3 07/17] scsi: iscsi: move pool freeing Mike Christie
2021-04-24 21:12 ` Lee Duncan
2021-04-16 2:04 ` [PATCH v3 08/17] scsi: qedi: fix null ref during abort handling Mike Christie
2021-04-16 2:04 ` [PATCH v3 09/17] scsi: qedi: fix race during abort timeouts Mike Christie
2021-04-16 11:39 ` kernel test robot [this message]
2021-04-16 15:23 ` michael.christie
2021-04-16 2:04 ` [PATCH v3 10/17] scsi: qedi: fix use after free during abort cleanup Mike Christie
2021-04-16 2:04 ` [PATCH v3 11/17] scsi: qedi: fix TMF tid allocation Mike Christie
2021-04-16 2:04 ` [PATCH v3 12/17] scsi: qedi: use GFP_NOIO for tmf allocation Mike Christie
2021-04-16 2:04 ` [PATCH v3 13/17] scsi: qedi: fix TMF session block/unblock use Mike Christie
2021-04-16 2:04 ` [PATCH v3 14/17] scsi: qedi: fix cleanup " Mike Christie
2021-04-16 2:04 ` [PATCH v3 15/17] scsi: qedi: pass send_iscsi_tmf task to abort Mike Christie
2021-04-16 2:04 ` [PATCH v3 16/17] scsi: qedi: complete TMF works before disconnect Mike Christie
2021-04-16 2:04 ` [PATCH v3 17/17] scsi: qedi: always wake up if cmd_cleanup_req is set Mike Christie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202104161932.IKLfImK0-lkp@intel.com \
--to=lkp@intel.com \
--cc=jejb@linux.ibm.com \
--cc=kbuild-all@lists.01.org \
--cc=lduncan@suse.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=michael.christie@oracle.com \
--cc=mrangankar@marvell.com \
--cc=svernekar@marvell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox