From: kernel test robot <lkp@intel.com>
To: WenTao Liang <vulab@iscas.ac.cn>,
James Bottomley <jejb@linux.ibm.com>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
linux-scsi@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev, stable@vger.kernel.org,
linux-kernel@vger.kernel.org, WenTao Liang <vulab@iscas.ac.cn>
Subject: Re: [PATCH] fix: scsi: srp_reconnect_rport: unbalanced scsi_block_targets/scsi_target_unblock
Date: Thu, 6 Aug 2026 06:22:29 +0800 [thread overview]
Message-ID: <202608060507.BrNCKCeH-lkp@intel.com> (raw)
In-Reply-To: <20260626161402.55116-1-vulab@iscas.ac.cn>
Hi WenTao,
kernel test robot noticed the following build warnings:
[auto build test WARNING on jejb-scsi/for-next]
[also build test WARNING on mkp-scsi/for-next linus/master v7.2-rc6 next-20260805]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/WenTao-Liang/fix-scsi-srp_reconnect_rport-unbalanced-scsi_block_targets-scsi_target_unblock/20260805-214818
base: https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
patch link: https://lore.kernel.org/r/20260626161402.55116-1-vulab%40iscas.ac.cn
patch subject: [PATCH] fix: scsi: srp_reconnect_rport: unbalanced scsi_block_targets/scsi_target_unblock
config: alpha-allmodconfig (https://download.01.org/0day-ci/archive/20260806/202608060507.BrNCKCeH-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 16.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260806/202608060507.BrNCKCeH-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608060507.BrNCKCeH-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/scsi/scsi_transport_srp.c: In function 'srp_reconnect_rport':
>> drivers/scsi/scsi_transport_srp.c:545:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
545 | if (rport->state != SRP_RPORT_FAIL_FAST && rport->state != SRP_RPORT_LOST)
| ^~
drivers/scsi/scsi_transport_srp.c:553:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
553 | blocked = true;
| ^~~~~~~
vim +/if +545 drivers/scsi/scsi_transport_srp.c
29c17324803c8a Bart Van Assche 2013-10-26 509
29c17324803c8a Bart Van Assche 2013-10-26 510 /**
29c17324803c8a Bart Van Assche 2013-10-26 511 * srp_reconnect_rport() - reconnect to an SRP target port
0c7f82189d2249 Bart Van Assche 2014-01-13 512 * @rport: SRP target port.
29c17324803c8a Bart Van Assche 2013-10-26 513 *
29c17324803c8a Bart Van Assche 2013-10-26 514 * Blocks SCSI command queueing before invoking reconnect() such that
29c17324803c8a Bart Van Assche 2013-10-26 515 * queuecommand() won't be invoked concurrently with reconnect() from outside
29c17324803c8a Bart Van Assche 2013-10-26 516 * the SCSI EH. This is important since a reconnect() implementation may
29c17324803c8a Bart Van Assche 2013-10-26 517 * reallocate resources needed by queuecommand().
29c17324803c8a Bart Van Assche 2013-10-26 518 *
29c17324803c8a Bart Van Assche 2013-10-26 519 * Notes:
29c17324803c8a Bart Van Assche 2013-10-26 520 * - This function neither waits until outstanding requests have finished nor
29c17324803c8a Bart Van Assche 2013-10-26 521 * tries to abort these. It is the responsibility of the reconnect()
29c17324803c8a Bart Van Assche 2013-10-26 522 * function to finish outstanding commands before reconnecting to the target
29c17324803c8a Bart Van Assche 2013-10-26 523 * port.
29c17324803c8a Bart Van Assche 2013-10-26 524 * - It is the responsibility of the caller to ensure that the resources
29c17324803c8a Bart Van Assche 2013-10-26 525 * reallocated by the reconnect() function won't be used while this function
29c17324803c8a Bart Van Assche 2013-10-26 526 * is in progress. One possible strategy is to invoke this function from
29c17324803c8a Bart Van Assche 2013-10-26 527 * the context of the SCSI EH thread only. Another possible strategy is to
29c17324803c8a Bart Van Assche 2013-10-26 528 * lock the rport mutex inside each SCSI LLD callback that can be invoked by
29c17324803c8a Bart Van Assche 2013-10-26 529 * the SCSI EH (the scsi_host_template.eh_*() functions and also the
29c17324803c8a Bart Van Assche 2013-10-26 530 * scsi_host_template.queuecommand() function).
29c17324803c8a Bart Van Assche 2013-10-26 531 */
29c17324803c8a Bart Van Assche 2013-10-26 532 int srp_reconnect_rport(struct srp_rport *rport)
29c17324803c8a Bart Van Assche 2013-10-26 533 {
29c17324803c8a Bart Van Assche 2013-10-26 534 struct Scsi_Host *shost = rport_to_shost(rport);
29c17324803c8a Bart Van Assche 2013-10-26 535 struct srp_internal *i = to_srp_internal(shost->transportt);
29c17324803c8a Bart Van Assche 2013-10-26 536 struct scsi_device *sdev;
29c17324803c8a Bart Van Assche 2013-10-26 537 int res;
cc89c54580eff2 WenTao Liang 2026-06-27 538 bool blocked = false;
29c17324803c8a Bart Van Assche 2013-10-26 539
29c17324803c8a Bart Van Assche 2013-10-26 540 pr_debug("SCSI host %s\n", dev_name(&shost->shost_gendev));
29c17324803c8a Bart Van Assche 2013-10-26 541
29c17324803c8a Bart Van Assche 2013-10-26 542 res = mutex_lock_interruptible(&rport->mutex);
29c17324803c8a Bart Van Assche 2013-10-26 543 if (res)
29c17324803c8a Bart Van Assche 2013-10-26 544 goto out;
5cd0f6f57639c5 Martin Wilck 2021-04-01 @545 if (rport->state != SRP_RPORT_FAIL_FAST && rport->state != SRP_RPORT_LOST)
72eeb7c7151302 Martin Wilck 2021-01-11 546 /*
72eeb7c7151302 Martin Wilck 2021-01-11 547 * sdev state must be SDEV_TRANSPORT_OFFLINE, transition
72eeb7c7151302 Martin Wilck 2021-01-11 548 * to SDEV_BLOCK is illegal. Calling scsi_target_unblock()
72eeb7c7151302 Martin Wilck 2021-01-11 549 * later is ok though, scsi_internal_device_unblock_nowait()
72eeb7c7151302 Martin Wilck 2021-01-11 550 * treats SDEV_TRANSPORT_OFFLINE like SDEV_BLOCK.
72eeb7c7151302 Martin Wilck 2021-01-11 551 */
31950192d939a9 Martin Wilck 2023-06-14 552 scsi_block_targets(shost, &shost->shost_gendev);
cc89c54580eff2 WenTao Liang 2026-06-27 553 blocked = true;
93079162bf0ed2 Bart Van Assche 2013-12-11 554 res = rport->state != SRP_RPORT_LOST ? i->f->reconnect(rport) : -ENODEV;
29c17324803c8a Bart Van Assche 2013-10-26 555 pr_debug("%s (state %d): transport.reconnect() returned %d\n",
29c17324803c8a Bart Van Assche 2013-10-26 556 dev_name(&shost->shost_gendev), rport->state, res);
29c17324803c8a Bart Van Assche 2013-10-26 557 if (res == 0) {
29c17324803c8a Bart Van Assche 2013-10-26 558 cancel_delayed_work(&rport->fast_io_fail_work);
29c17324803c8a Bart Van Assche 2013-10-26 559 cancel_delayed_work(&rport->dev_loss_work);
29c17324803c8a Bart Van Assche 2013-10-26 560
8c64e4531c3c3b Bart Van Assche 2013-10-26 561 rport->failed_reconnects = 0;
29c17324803c8a Bart Van Assche 2013-10-26 562 srp_rport_set_state(rport, SRP_RPORT_RUNNING);
cc89c54580eff2 WenTao Liang 2026-06-27 563 if (blocked)
29c17324803c8a Bart Van Assche 2013-10-26 564 scsi_target_unblock(&shost->shost_gendev, SDEV_RUNNING);
29c17324803c8a Bart Van Assche 2013-10-26 565 /*
29c17324803c8a Bart Van Assche 2013-10-26 566 * If the SCSI error handler has offlined one or more devices,
29c17324803c8a Bart Van Assche 2013-10-26 567 * invoking scsi_target_unblock() won't change the state of
29c17324803c8a Bart Van Assche 2013-10-26 568 * these devices into running so do that explicitly.
29c17324803c8a Bart Van Assche 2013-10-26 569 */
0db6ca8a5e1ea5 Bart Van Assche 2017-06-02 570 shost_for_each_device(sdev, shost) {
0db6ca8a5e1ea5 Bart Van Assche 2017-06-02 571 mutex_lock(&sdev->state_mutex);
a817e73fe693f0 Linus Torvalds 2017-11-07 572 if (sdev->sdev_state == SDEV_OFFLINE)
29c17324803c8a Bart Van Assche 2013-10-26 573 sdev->sdev_state = SDEV_RUNNING;
0db6ca8a5e1ea5 Bart Van Assche 2017-06-02 574 mutex_unlock(&sdev->state_mutex);
0db6ca8a5e1ea5 Bart Van Assche 2017-06-02 575 }
29c17324803c8a Bart Van Assche 2013-10-26 576 } else if (rport->state == SRP_RPORT_RUNNING) {
29c17324803c8a Bart Van Assche 2013-10-26 577 /*
18cc4e02508e3f Bart Van Assche 2013-12-11 578 * srp_reconnect_rport() has been invoked with fast_io_fail
18cc4e02508e3f Bart Van Assche 2013-12-11 579 * and dev_loss off. Mark the port as failed and start the TL
18cc4e02508e3f Bart Van Assche 2013-12-11 580 * failure timers if these had not yet been started.
29c17324803c8a Bart Van Assche 2013-10-26 581 */
29c17324803c8a Bart Van Assche 2013-10-26 582 __rport_fail_io_fast(rport);
29c17324803c8a Bart Van Assche 2013-10-26 583 __srp_start_tl_fail_timers(rport);
29c17324803c8a Bart Van Assche 2013-10-26 584 } else if (rport->state != SRP_RPORT_BLOCKED) {
cc89c54580eff2 WenTao Liang 2026-06-27 585 if (blocked)
29c17324803c8a Bart Van Assche 2013-10-26 586 scsi_target_unblock(&shost->shost_gendev,
29c17324803c8a Bart Van Assche 2013-10-26 587 SDEV_TRANSPORT_OFFLINE);
29c17324803c8a Bart Van Assche 2013-10-26 588 }
29c17324803c8a Bart Van Assche 2013-10-26 589 mutex_unlock(&rport->mutex);
29c17324803c8a Bart Van Assche 2013-10-26 590
29c17324803c8a Bart Van Assche 2013-10-26 591 out:
29c17324803c8a Bart Van Assche 2013-10-26 592 return res;
29c17324803c8a Bart Van Assche 2013-10-26 593 }
29c17324803c8a Bart Van Assche 2013-10-26 594 EXPORT_SYMBOL(srp_reconnect_rport);
29c17324803c8a Bart Van Assche 2013-10-26 595
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2026-08-05 22:22 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-26 16:14 [PATCH] fix: scsi: srp_reconnect_rport: unbalanced scsi_block_targets/scsi_target_unblock WenTao Liang
2026-06-26 16:18 ` sashiko-bot
2026-06-26 16:50 ` James Bottomley
2026-08-05 22:22 ` kernel test robot [this message]
2026-08-06 0:35 ` kernel test robot
2026-08-06 7:51 ` kernel test robot
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=202608060507.BrNCKCeH-lkp@intel.com \
--to=lkp@intel.com \
--cc=jejb@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=stable@vger.kernel.org \
--cc=vulab@iscas.ac.cn \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.