From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH v2 4/5] nvme-fc: Make initial connect attempt synchronous
Date: Sat, 24 Jun 2023 01:14:38 +0800 [thread overview]
Message-ID: <202306240125.U2jdrjAY-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20230620133711.22840-5-dwagner@suse.de>
References: <20230620133711.22840-5-dwagner@suse.de>
TO: Daniel Wagner <dwagner@suse.de>
TO: linux-nvme@lists.infradead.org
CC: linux-kernel@vger.kernel.org
CC: linux-block@vger.kernel.org
CC: Chaitanya Kulkarni <kch@nvidia.com>
CC: "Shin'ichiro Kawasaki" <shinichiro@fastmail.com>
CC: Sagi Grimberg <sagi@grimberg.me>
CC: Hannes Reinecke <hare@suse.de>
CC: James Smart <jsmart2021@gmail.com>
CC: Daniel Wagner <dwagner@suse.de>
Hi Daniel,
kernel test robot noticed the following build warnings:
[auto build test WARNING on linus/master]
[also build test WARNING on v6.4-rc7 next-20230623]
[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/Daniel-Wagner/nvme-fc-Do-not-wait-in-vain-when-unloading-module/20230620-213849
base: linus/master
patch link: https://lore.kernel.org/r/20230620133711.22840-5-dwagner%40suse.de
patch subject: [PATCH v2 4/5] nvme-fc: Make initial connect attempt synchronous
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: openrisc-randconfig-m041-20230622 (https://download.01.org/0day-ci/archive/20230624/202306240125.U2jdrjAY-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230624/202306240125.U2jdrjAY-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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202306240125.U2jdrjAY-lkp@intel.com/
smatch warnings:
drivers/nvme/host/fc.c:3590 nvme_fc_init_ctrl() warn: passing zero to 'ERR_PTR'
vim +/ERR_PTR +3590 drivers/nvme/host/fc.c
56d5f4f108efd4 James Smart 2017-10-20 3440
e399441de9115c James Smart 2016-12-02 3441 static struct nvme_ctrl *
61bff8ef008845 James Smart 2017-04-23 3442 nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
e399441de9115c James Smart 2016-12-02 3443 struct nvme_fc_lport *lport, struct nvme_fc_rport *rport)
e399441de9115c James Smart 2016-12-02 3444 {
e399441de9115c James Smart 2016-12-02 3445 struct nvme_fc_ctrl *ctrl;
e399441de9115c James Smart 2016-12-02 3446 unsigned long flags;
f673714a124766 James Smart 2020-10-16 3447 int ret, idx, ctrl_loss_tmo;
e399441de9115c James Smart 2016-12-02 3448
85e6a6adf8de7f James Smart 2017-05-05 3449 if (!(rport->remoteport.port_role &
85e6a6adf8de7f James Smart 2017-05-05 3450 (FC_PORT_ROLE_NVME_DISCOVERY | FC_PORT_ROLE_NVME_TARGET))) {
85e6a6adf8de7f James Smart 2017-05-05 3451 ret = -EBADR;
85e6a6adf8de7f James Smart 2017-05-05 3452 goto out_fail;
85e6a6adf8de7f James Smart 2017-05-05 3453 }
85e6a6adf8de7f James Smart 2017-05-05 3454
56d5f4f108efd4 James Smart 2017-10-20 3455 if (!opts->duplicate_connect &&
56d5f4f108efd4 James Smart 2017-10-20 3456 nvme_fc_existing_controller(rport, opts)) {
56d5f4f108efd4 James Smart 2017-10-20 3457 ret = -EALREADY;
56d5f4f108efd4 James Smart 2017-10-20 3458 goto out_fail;
56d5f4f108efd4 James Smart 2017-10-20 3459 }
56d5f4f108efd4 James Smart 2017-10-20 3460
e399441de9115c James Smart 2016-12-02 3461 ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
e399441de9115c James Smart 2016-12-02 3462 if (!ctrl) {
e399441de9115c James Smart 2016-12-02 3463 ret = -ENOMEM;
e399441de9115c James Smart 2016-12-02 3464 goto out_fail;
e399441de9115c James Smart 2016-12-02 3465 }
e399441de9115c James Smart 2016-12-02 3466
3dd83f4013f0e8 Sagi Grimberg 2022-02-14 3467 idx = ida_alloc(&nvme_fc_ctrl_cnt, GFP_KERNEL);
e399441de9115c James Smart 2016-12-02 3468 if (idx < 0) {
e399441de9115c James Smart 2016-12-02 3469 ret = -ENOSPC;
8c5c660529209a James Smart 2020-04-03 3470 goto out_free_ctrl;
e399441de9115c James Smart 2016-12-02 3471 }
e399441de9115c James Smart 2016-12-02 3472
f673714a124766 James Smart 2020-10-16 3473 /*
f673714a124766 James Smart 2020-10-16 3474 * if ctrl_loss_tmo is being enforced and the default reconnect delay
f673714a124766 James Smart 2020-10-16 3475 * is being used, change to a shorter reconnect delay for FC.
f673714a124766 James Smart 2020-10-16 3476 */
f673714a124766 James Smart 2020-10-16 3477 if (opts->max_reconnects != -1 &&
f673714a124766 James Smart 2020-10-16 3478 opts->reconnect_delay == NVMF_DEF_RECONNECT_DELAY &&
f673714a124766 James Smart 2020-10-16 3479 opts->reconnect_delay > NVME_FC_DEFAULT_RECONNECT_TMO) {
f673714a124766 James Smart 2020-10-16 3480 ctrl_loss_tmo = opts->max_reconnects * opts->reconnect_delay;
f673714a124766 James Smart 2020-10-16 3481 opts->reconnect_delay = NVME_FC_DEFAULT_RECONNECT_TMO;
f673714a124766 James Smart 2020-10-16 3482 opts->max_reconnects = DIV_ROUND_UP(ctrl_loss_tmo,
f673714a124766 James Smart 2020-10-16 3483 opts->reconnect_delay);
f673714a124766 James Smart 2020-10-16 3484 }
f673714a124766 James Smart 2020-10-16 3485
e399441de9115c James Smart 2016-12-02 3486 ctrl->ctrl.opts = opts;
4c984154efa131 James Smart 2018-06-13 3487 ctrl->ctrl.nr_reconnects = 0;
06f3d71ea071b7 James Smart 2019-03-13 3488 if (lport->dev)
103e515efa89be Hannes Reinecke 2018-11-16 3489 ctrl->ctrl.numa_node = dev_to_node(lport->dev);
06f3d71ea071b7 James Smart 2019-03-13 3490 else
06f3d71ea071b7 James Smart 2019-03-13 3491 ctrl->ctrl.numa_node = NUMA_NO_NODE;
e399441de9115c James Smart 2016-12-02 3492 INIT_LIST_HEAD(&ctrl->ctrl_list);
e399441de9115c James Smart 2016-12-02 3493 ctrl->lport = lport;
e399441de9115c James Smart 2016-12-02 3494 ctrl->rport = rport;
e399441de9115c James Smart 2016-12-02 3495 ctrl->dev = lport->dev;
e399441de9115c James Smart 2016-12-02 3496 ctrl->cnum = idx;
4c984154efa131 James Smart 2018-06-13 3497 ctrl->ioq_live = false;
8a82dbf19129dd James Smart 2017-10-09 3498 init_waitqueue_head(&ctrl->ioabort_wait);
e399441de9115c James Smart 2016-12-02 3499
e399441de9115c James Smart 2016-12-02 3500 get_device(ctrl->dev);
e399441de9115c James Smart 2016-12-02 3501 kref_init(&ctrl->ref);
e399441de9115c James Smart 2016-12-02 3502
d86c4d8ef31b3d Christoph Hellwig 2017-06-15 3503 INIT_WORK(&ctrl->ctrl.reset_work, nvme_fc_reset_ctrl_work);
61bff8ef008845 James Smart 2017-04-23 3504 INIT_DELAYED_WORK(&ctrl->connect_work, nvme_fc_connect_ctrl_work);
19fce0470f0503 James Smart 2020-12-01 3505 INIT_WORK(&ctrl->ioerr_work, nvme_fc_ctrl_ioerr_work);
e399441de9115c James Smart 2016-12-02 3506 spin_lock_init(&ctrl->lock);
e399441de9115c James Smart 2016-12-02 3507
e399441de9115c James Smart 2016-12-02 3508 /* io queue count */
d858e5f04e58a4 Sagi Grimberg 2017-04-24 3509 ctrl->ctrl.queue_count = min_t(unsigned int,
e399441de9115c James Smart 2016-12-02 3510 opts->nr_io_queues,
e399441de9115c James Smart 2016-12-02 3511 lport->ops->max_hw_queues);
d858e5f04e58a4 Sagi Grimberg 2017-04-24 3512 ctrl->ctrl.queue_count++; /* +1 for admin queue */
e399441de9115c James Smart 2016-12-02 3513
e399441de9115c James Smart 2016-12-02 3514 ctrl->ctrl.sqsize = opts->queue_size - 1;
e399441de9115c James Smart 2016-12-02 3515 ctrl->ctrl.kato = opts->kato;
4c984154efa131 James Smart 2018-06-13 3516 ctrl->ctrl.cntlid = 0xffff;
e399441de9115c James Smart 2016-12-02 3517
e399441de9115c James Smart 2016-12-02 3518 ret = -ENOMEM;
d858e5f04e58a4 Sagi Grimberg 2017-04-24 3519 ctrl->queues = kcalloc(ctrl->ctrl.queue_count,
d858e5f04e58a4 Sagi Grimberg 2017-04-24 3520 sizeof(struct nvme_fc_queue), GFP_KERNEL);
e399441de9115c James Smart 2016-12-02 3521 if (!ctrl->queues)
61bff8ef008845 James Smart 2017-04-23 3522 goto out_free_ida;
e399441de9115c James Smart 2016-12-02 3523
3e493c00cedb45 James Smart 2018-06-13 3524 nvme_fc_init_queue(ctrl, 0);
3e493c00cedb45 James Smart 2018-06-13 3525
61bff8ef008845 James Smart 2017-04-23 3526 /*
61bff8ef008845 James Smart 2017-04-23 3527 * Would have been nice to init io queues tag set as well.
61bff8ef008845 James Smart 2017-04-23 3528 * However, we require interaction from the controller
61bff8ef008845 James Smart 2017-04-23 3529 * for max io queue count before we can do so.
61bff8ef008845 James Smart 2017-04-23 3530 * Defer this to the connect path.
61bff8ef008845 James Smart 2017-04-23 3531 */
e399441de9115c James Smart 2016-12-02 3532
61bff8ef008845 James Smart 2017-04-23 3533 ret = nvme_init_ctrl(&ctrl->ctrl, dev, &nvme_fc_ctrl_ops, 0);
61bff8ef008845 James Smart 2017-04-23 3534 if (ret)
98e3528012cd57 Ross Lagerwall 2023-01-20 3535 goto out_free_queues;
e399441de9115c James Smart 2016-12-02 3536
61bff8ef008845 James Smart 2017-04-23 3537 /* at this point, teardown path changes to ref counting on nvme ctrl */
e399441de9115c James Smart 2016-12-02 3538
98e3528012cd57 Ross Lagerwall 2023-01-20 3539 ret = nvme_alloc_admin_tag_set(&ctrl->ctrl, &ctrl->admin_tag_set,
98e3528012cd57 Ross Lagerwall 2023-01-20 3540 &nvme_fc_admin_mq_ops,
98e3528012cd57 Ross Lagerwall 2023-01-20 3541 struct_size((struct nvme_fcp_op_w_sgl *)NULL, priv,
98e3528012cd57 Ross Lagerwall 2023-01-20 3542 ctrl->lport->ops->fcprqst_priv_sz));
98e3528012cd57 Ross Lagerwall 2023-01-20 3543 if (ret)
98e3528012cd57 Ross Lagerwall 2023-01-20 3544 goto fail_ctrl;
98e3528012cd57 Ross Lagerwall 2023-01-20 3545
e399441de9115c James Smart 2016-12-02 3546 spin_lock_irqsave(&rport->lock, flags);
e399441de9115c James Smart 2016-12-02 3547 list_add_tail(&ctrl->ctrl_list, &rport->ctrl_list);
e399441de9115c James Smart 2016-12-02 3548 spin_unlock_irqrestore(&rport->lock, flags);
e399441de9115c James Smart 2016-12-02 3549
ac881fd1288ca6 Daniel Wagner 2023-06-20 3550 if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING)) {
4c984154efa131 James Smart 2018-06-13 3551 dev_err(ctrl->ctrl.device,
4c984154efa131 James Smart 2018-06-13 3552 "NVME-FC{%d}: failed to init ctrl state\n", ctrl->cnum);
4c984154efa131 James Smart 2018-06-13 3553 goto fail_ctrl;
17c4dc6eb7e1b2 James Smart 2017-10-09 3554 }
17c4dc6eb7e1b2 James Smart 2017-10-09 3555
ac881fd1288ca6 Daniel Wagner 2023-06-20 3556 ret = nvme_fc_create_association(ctrl);
ac881fd1288ca6 Daniel Wagner 2023-06-20 3557 if (ret)
4c984154efa131 James Smart 2018-06-13 3558 goto fail_ctrl;
4c984154efa131 James Smart 2018-06-13 3559
4c984154efa131 James Smart 2018-06-13 3560 dev_info(ctrl->ctrl.device,
4c984154efa131 James Smart 2018-06-13 3561 "NVME-FC{%d}: new ctrl: NQN \"%s\"\n",
e5ea42faa773c6 Hannes Reinecke 2021-09-22 3562 ctrl->cnum, nvmf_ctrl_subsysnqn(&ctrl->ctrl));
4c984154efa131 James Smart 2018-06-13 3563
4c984154efa131 James Smart 2018-06-13 3564 return &ctrl->ctrl;
4c984154efa131 James Smart 2018-06-13 3565
4c984154efa131 James Smart 2018-06-13 3566 fail_ctrl:
19fce0470f0503 James Smart 2020-12-01 3567 cancel_work_sync(&ctrl->ioerr_work);
cf25809bec2c7d James Smart 2018-03-13 3568 cancel_work_sync(&ctrl->ctrl.reset_work);
cf25809bec2c7d James Smart 2018-03-13 3569 cancel_delayed_work_sync(&ctrl->connect_work);
cf25809bec2c7d James Smart 2018-03-13 3570
de41447aac034c Ewan D. Milne 2017-04-24 3571 ctrl->ctrl.opts = NULL;
17c4dc6eb7e1b2 James Smart 2017-10-09 3572
61bff8ef008845 James Smart 2017-04-23 3573 /* initiate nvme ctrl ref counting teardown */
e399441de9115c James Smart 2016-12-02 3574 nvme_uninit_ctrl(&ctrl->ctrl);
61bff8ef008845 James Smart 2017-04-23 3575
0b5a7669a457dd James Smart 2017-06-15 3576 /* Remove core ctrl ref. */
0b5a7669a457dd James Smart 2017-06-15 3577 nvme_put_ctrl(&ctrl->ctrl);
0b5a7669a457dd James Smart 2017-06-15 3578
61bff8ef008845 James Smart 2017-04-23 3579 /* as we're past the point where we transition to the ref
61bff8ef008845 James Smart 2017-04-23 3580 * counting teardown path, if we return a bad pointer here,
61bff8ef008845 James Smart 2017-04-23 3581 * the calling routine, thinking it's prior to the
61bff8ef008845 James Smart 2017-04-23 3582 * transition, will do an rport put. Since the teardown
61bff8ef008845 James Smart 2017-04-23 3583 * path also does a rport put, we do an extra get here to
61bff8ef008845 James Smart 2017-04-23 3584 * so proper order/teardown happens.
61bff8ef008845 James Smart 2017-04-23 3585 */
61bff8ef008845 James Smart 2017-04-23 3586 nvme_fc_rport_get(rport);
61bff8ef008845 James Smart 2017-04-23 3587
ac881fd1288ca6 Daniel Wagner 2023-06-20 3588 if (ret > 0)
ac881fd1288ca6 Daniel Wagner 2023-06-20 3589 ret = -EIO;
ac881fd1288ca6 Daniel Wagner 2023-06-20 @3590 return ERR_PTR(ret);
e399441de9115c James Smart 2016-12-02 3591
61bff8ef008845 James Smart 2017-04-23 3592 out_free_queues:
61bff8ef008845 James Smart 2017-04-23 3593 kfree(ctrl->queues);
e399441de9115c James Smart 2016-12-02 3594 out_free_ida:
61bff8ef008845 James Smart 2017-04-23 3595 put_device(ctrl->dev);
3dd83f4013f0e8 Sagi Grimberg 2022-02-14 3596 ida_free(&nvme_fc_ctrl_cnt, ctrl->cnum);
e399441de9115c James Smart 2016-12-02 3597 out_free_ctrl:
e399441de9115c James Smart 2016-12-02 3598 kfree(ctrl);
e399441de9115c James Smart 2016-12-02 3599 out_fail:
e399441de9115c James Smart 2016-12-02 3600 /* exit via here doesn't follow ctlr ref points */
e399441de9115c James Smart 2016-12-02 3601 return ERR_PTR(ret);
e399441de9115c James Smart 2016-12-02 3602 }
e399441de9115c James Smart 2016-12-02 3603
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2023-06-23 17:15 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-23 17:14 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2023-06-20 13:37 [PATCH v2 0/5] nvme-fc: Fix blktests hangers Daniel Wagner
2023-06-20 13:37 ` [PATCH v2 4/5] nvme-fc: Make initial connect attempt synchronous Daniel Wagner
2023-06-26 10:59 ` Dan Carpenter
2023-06-26 11:33 ` Dan Carpenter
2023-06-27 6:18 ` Daniel Wagner
2023-06-27 6:39 ` Hannes Reinecke
2023-06-27 6:51 ` Hannes Reinecke
2023-07-01 12:11 ` James Smart
2023-07-06 12:07 ` Daniel Wagner
2023-07-11 22:47 ` James Smart
2023-07-12 6:50 ` Hannes Reinecke
2023-07-13 20:35 ` Ewan Milne
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=202306240125.U2jdrjAY-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/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.