mbox series

[0/3] efct fixes & improvements

Message ID 20210914105539.6942-1-d.bogdanov@yadro.com
Headers show
Series efct fixes & improvements | expand

Message

Dmitry Bogdanov Sept. 14, 2021, 10:55 a.m. UTC
This patchset contains fixes of some isues that were found during
evaluation of Emulex HBA as a target.

This patchset is intended for scsi-queue.

Dmitry Bogdanov (3):
  scsi: efct: add state in nport sm trace printout
  scsi: efct: fix nport free
  scsi: efct: decrease area under spinlock

 drivers/scsi/elx/efct/efct_scsi.c  | 3 +--
 drivers/scsi/elx/libefc/efc.h      | 2 +-
 drivers/scsi/elx/libefc/efc_cmds.c | 7 ++++++-
 drivers/scsi/elx/libefc/efclib.h   | 1 +
 4 files changed, 9 insertions(+), 4 deletions(-)

Comments

Ram Kishore Vegesna Sept. 15, 2021, 12:45 p.m. UTC | #1
Looks good. Thanks.

Reviewed-by: Ram Vegesna <ram.vegesna@broadcom.com>


On Tue, Sep 14, 2021 at 4:25 PM Dmitry Bogdanov <d.bogdanov@yadro.com> wrote:
>

> Similar to other state machine traces and to make debug easier add the

> state name to nport sm trace printout.

>

> Signed-off-by: Dmitry Bogdanov <d.bogdanov@yadro.com>

> ---

>  drivers/scsi/elx/libefc/efc.h | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

>

> diff --git a/drivers/scsi/elx/libefc/efc.h b/drivers/scsi/elx/libefc/efc.h

> index 927016283f41..468ff3cc9c00 100644

> --- a/drivers/scsi/elx/libefc/efc.h

> +++ b/drivers/scsi/elx/libefc/efc.h

> @@ -47,6 +47,6 @@ enum efc_scsi_del_target_reason {

>

>  #define nport_sm_trace(nport) \

>         efc_log_debug(nport->efc, \

> -               "[%s] %-20s\n", nport->display_name, efc_sm_event_name(evt)) \

> +               "[%s]  %-20s %-20s\n", nport->display_name, __func__, efc_sm_event_name(evt)) \

>

>  #endif /* __EFC_H__ */

> --

> 2.25.1

>


-- 
This electronic communication and the information and any files transmitted 
with it, or attached to it, are confidential and are intended solely for 
the use of the individual or entity to whom it is addressed and may contain 
information that is confidential, legally privileged, protected by privacy 
laws, or otherwise restricted from disclosure to anyone else. If you are 
not the intended recipient or the person responsible for delivering the 
e-mail to the intended recipient, you are hereby notified that any use, 
copying, distributing, dissemination, forwarding, printing, or copying of 
this e-mail is strictly prohibited. If you received this e-mail in error, 
please return the e-mail to the sender, delete it from your computer, and 
destroy any printed copy of it.
Ram Kishore Vegesna Sept. 15, 2021, 12:51 p.m. UTC | #2
On Tue, Sep 14, 2021 at 4:25 PM Dmitry Bogdanov <d.bogdanov@yadro.com> wrote:
>

> nport_free for an empty nport hangs the state machine waiting for mbox

> completion if nport is not yet attached thinking that it is attaching

> right now.

> Add a check for nport attaching state and complete nport free.

>

> Signed-off-by: Dmitry Bogdanov <d.bogdanov@yadro.com>

> ---

>  drivers/scsi/elx/libefc/efc_cmds.c | 7 ++++++-

>  drivers/scsi/elx/libefc/efclib.h   | 1 +

>  2 files changed, 7 insertions(+), 1 deletion(-)

>

> diff --git a/drivers/scsi/elx/libefc/efc_cmds.c b/drivers/scsi/elx/libefc/efc_cmds.c

> index 37e6697d86b8..f8665d48904a 100644

> --- a/drivers/scsi/elx/libefc/efc_cmds.c

> +++ b/drivers/scsi/elx/libefc/efc_cmds.c

> @@ -249,6 +249,7 @@ efc_nport_attach_reg_vpi_cb(struct efc *efc, int status, u8 *mqe,

>  {

>         struct efc_nport *nport = arg;

>

> +       nport->attaching = false;

>         if (efc_nport_get_mbox_status(nport, mqe, status)) {

>                 efc_nport_free_resources(nport, EFC_EVT_NPORT_ATTACH_FAIL, mqe);

>                 return -EIO;

> @@ -286,6 +287,8 @@ efc_cmd_nport_attach(struct efc *efc, struct efc_nport *nport, u32 fc_id)

>         if (rc) {

>                 efc_log_err(efc, "REG_VPI command failure\n");

>                 efc_nport_free_resources(nport, EFC_EVT_NPORT_ATTACH_FAIL, buf);

> +       } else {

> +               nport->attaching = true;

>         }

>

>         return rc;

> @@ -302,8 +305,10 @@ efc_cmd_nport_free(struct efc *efc, struct efc_nport *nport)

>         /* Issue the UNREG_VPI command to free the assigned VPI context */

>         if (nport->attached)

>                 efc_nport_free_unreg_vpi(nport);

> -       else

> +       else if (nport->attaching)

>                 nport->free_req_pending = true;

> +       else

> +               efc_sm_post_event(&nport->sm, EFC_EVT_NPORT_FREE_OK, NULL);

>

>         return 0;

>  }

> diff --git a/drivers/scsi/elx/libefc/efclib.h b/drivers/scsi/elx/libefc/efclib.h

> index ee291cabf7e0..dde20891c2dd 100644

> --- a/drivers/scsi/elx/libefc/efclib.h

> +++ b/drivers/scsi/elx/libefc/efclib.h

> @@ -142,6 +142,7 @@ struct efc_nport {

>         bool                    is_vport;

>         bool                    free_req_pending;

>         bool                    attached;

> +       bool                    attaching;

>         bool                    p2p_winner;

>         struct efc_domain       *domain;

>         u64                     wwpn;

> --

> 2.25.1

>

Looks good. Thanks.

Reviewed-by: Ram Vegesna <ram.vegesna@broadcom.com>


-- 
This electronic communication and the information and any files transmitted 
with it, or attached to it, are confidential and are intended solely for 
the use of the individual or entity to whom it is addressed and may contain 
information that is confidential, legally privileged, protected by privacy 
laws, or otherwise restricted from disclosure to anyone else. If you are 
not the intended recipient or the person responsible for delivering the 
e-mail to the intended recipient, you are hereby notified that any use, 
copying, distributing, dissemination, forwarding, printing, or copying of 
this e-mail is strictly prohibited. If you received this e-mail in error, 
please return the e-mail to the sender, delete it from your computer, and 
destroy any printed copy of it.
Martin K. Petersen Sept. 22, 2021, 4:05 a.m. UTC | #3
Dmitry,

> This patchset contains fixes of some isues that were found during

> evaluation of Emulex HBA as a target.


Applied to 5.16/scsi-staging, thanks!

-- 
Martin K. Petersen	Oracle Linux Engineering
Martin K. Petersen Sept. 29, 2021, 4:20 a.m. UTC | #4
On Tue, 14 Sep 2021 13:55:36 +0300, Dmitry Bogdanov wrote:

> This patchset contains fixes of some isues that were found during

> evaluation of Emulex HBA as a target.

> 

> This patchset is intended for scsi-queue.

> 

> Dmitry Bogdanov (3):

>   scsi: efct: add state in nport sm trace printout

>   scsi: efct: fix nport free

>   scsi: efct: decrease area under spinlock

> 

> [...]


Applied to 5.16/scsi-queue, thanks!

[1/3] scsi: efct: add state in nport sm trace printout
      https://git.kernel.org/mkp/scsi/c/8d4efd0040e5
[2/3] scsi: efct: fix nport free
      https://git.kernel.org/mkp/scsi/c/ee3dce9f3842
[3/3] scsi: efct: decrease area under spinlock
      https://git.kernel.org/mkp/scsi/c/e76b7c5e25a1

-- 
Martin K. Petersen	Oracle Linux Engineering