All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Garry <john.g.garry@oracle.com>
To: Jason Yan <yanaijie@huawei.com>,
	martin.petersen@oracle.com, jejb@linux.ibm.com
Cc: linux-scsi@vger.kernel.org, hare@suse.com, hch@lst.de,
	bvanassche@acm.org, jinpu.wang@cloud.ionos.com,
	damien.lemoal@opensource.wdc.com
Subject: Re: [PATCH 6/6] scsi: libsas: factor out sas_ex_add_dev()
Date: Mon, 5 Dec 2022 09:31:17 +0000	[thread overview]
Message-ID: <22aca8ae-56df-4589-dc4e-82fbb00d0b1d@oracle.com> (raw)
In-Reply-To: <20221204081643.3835966-7-yanaijie@huawei.com>

On 04/12/2022 08:16, Jason Yan wrote:
> Factor out sas_ex_add_dev() to be consistent with sas_ata_add_dev() and
> unify the error handling.
> 
> Cc: John Garry <john.g.garry@oracle.com>
> Signed-off-by: Jason Yan <yanaijie@huawei.com>
> ---
>   drivers/scsi/libsas/sas_expander.c | 68 +++++++++++++++++-------------
>   1 file changed, 39 insertions(+), 29 deletions(-)
> 
> diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
> index 747f4fc795f4..3c72b167d43a 100644
> --- a/drivers/scsi/libsas/sas_expander.c
> +++ b/drivers/scsi/libsas/sas_expander.c
> @@ -751,13 +751,46 @@ static void sas_ex_get_linkrate(struct domain_device *parent,
>   	child->pathways = min(child->pathways, parent->pathways);
>   }
>   
> +static int sas_ex_add_dev(struct domain_device *parent, struct ex_phy *phy,
> +			  struct domain_device *child, int phy_id)
> +{
> +	struct sas_rphy *rphy;
> +	int res;
> +
> +	child->dev_type = SAS_END_DEVICE;
> +	rphy = sas_end_device_alloc(phy->port);
> +	if (unlikely(!rphy))

nit: this is not fastpath so unlikely can be avoided

> +		return -ENOMEM;
> +
> +	child->tproto = phy->attached_tproto;
> +	sas_init_dev(child);
> +
> +	child->rphy = rphy;
> +	get_device(&rphy->dev);
> +	rphy->identify.phy_identifier = phy_id;
> +	sas_fill_in_rphy(child, rphy);
> +
> +	list_add_tail(&child->disco_list_node, &parent->port->disco_list);
> +
> +	res = sas_notify_lldd_dev_found(child);
> +	if (res) {
> +		pr_notice("notify lldd for device %016llx at %016llx:%02d returned 0x%x\n",
> +				SAS_ADDR(child->sas_addr),
> +				SAS_ADDR(parent->sas_addr), phy_id, res);

nit: these lines could be aligned with (, as it was before

> +		sas_rphy_free(child->rphy);
> +		list_del(&child->disco_list_node);
> +		return res;
> +	}
> +
> +	return 0;
> +}
> +
>   static struct domain_device *sas_ex_discover_end_dev(
>   	struct domain_device *parent, int phy_id)
>   {
>   	struct expander_device *parent_ex = &parent->ex_dev;
>   	struct ex_phy *phy = &parent_ex->ex_phy[phy_id];
>   	struct domain_device *child = NULL;
> -	struct sas_rphy *rphy;
>   	int res;
>   
>   	if (phy->attached_sata_host || phy->attached_sata_ps)
> @@ -787,44 +820,21 @@ static struct domain_device *sas_ex_discover_end_dev(
>   
>   	if ((phy->attached_tproto & SAS_PROTOCOL_STP) || phy->attached_sata_dev) {
>   		res = sas_ata_add_dev(parent, phy, child, phy_id);
> -		if (res)
> -			goto out_free;
>   	} else if (phy->attached_tproto & SAS_PROTOCOL_SSP) {
> -		child->dev_type = SAS_END_DEVICE;
> -		rphy = sas_end_device_alloc(phy->port);
> -		/* FIXME: error handling */

so has the error handling been fixed now?

> -		if (unlikely(!rphy))
> -			goto out_free;
> -		child->tproto = phy->attached_tproto;
> -		sas_init_dev(child);
> -
> -		child->rphy = rphy;
> -		get_device(&rphy->dev);
> -		rphy->identify.phy_identifier = phy_id;
> -		sas_fill_in_rphy(child, rphy);
> -
> -		list_add_tail(&child->disco_list_node, &parent->port->disco_list);
> -
> -		res = sas_notify_lldd_dev_found(child);
> -		if (res) {
> -			pr_notice("notify lldd for device %016llx at %016llx:%02d returned 0x%x\n",
> -				  SAS_ADDR(child->sas_addr),
> -				  SAS_ADDR(parent->sas_addr), phy_id, res);
> -			goto out_list_del;
> -		}
> +		res = sas_ex_add_dev(parent, phy, child, phy_id);
>   	} else {
>   		pr_notice("target proto 0x%x at %016llx:0x%x not handled\n",
>   			  phy->attached_tproto, SAS_ADDR(parent->sas_addr),
>   			  phy_id);
> -		goto out_free;
> +		res = -ENODEV;
>   	}
>   
> +	if (res)
> +		goto out_free;
> +
>   	list_add_tail(&child->siblings, &parent_ex->children);
>   	return child;
>   
> - out_list_del:
> -	sas_rphy_free(child->rphy);
> -	list_del(&child->disco_list_node);
>    out_free:
>   	sas_port_delete(phy->port);
>    out_err:


  reply	other threads:[~2022-12-05  9:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-04  8:16 [PATCH 0/6] scsi: libsas: Some coding style fixes and cleanups Jason Yan
2022-12-04  8:16 ` [PATCH 1/6] scsi: libsas: move sas_get_ata_command_set() up to save the declaration Jason Yan
2022-12-05  8:45   ` John Garry
2022-12-08  6:36     ` Jason Yan
2022-12-04  8:16 ` [PATCH 2/6] scsi: libsas: delete wrapper function sas_discover_end_dev() Jason Yan
2022-12-05  8:57   ` John Garry
2022-12-08  6:56     ` Jason Yan
2022-12-04  8:16 ` [PATCH 3/6] scsi: libsas: rename sas_discover_sata() and related refactors Jason Yan
2022-12-04  8:16 ` [PATCH 4/6] scsi: libsas: remove useless dev_list delete in sas_ex_discover_end_dev() Jason Yan
2022-12-05  9:14   ` John Garry
2022-12-08  7:21     ` Jason Yan
2022-12-08 10:40       ` John Garry
2022-12-08 11:11         ` Jason Yan
2022-12-04  8:16 ` [PATCH 5/6] scsi: libsas: factor out sas_ata_add_dev() Jason Yan
2022-12-05  9:24   ` John Garry
2022-12-08  7:26     ` Jason Yan
2022-12-04  8:16 ` [PATCH 6/6] scsi: libsas: factor out sas_ex_add_dev() Jason Yan
2022-12-05  9:31   ` John Garry [this message]
2022-12-08  8:07     ` Jason Yan

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=22aca8ae-56df-4589-dc4e-82fbb00d0b1d@oracle.com \
    --to=john.g.garry@oracle.com \
    --cc=bvanassche@acm.org \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=hare@suse.com \
    --cc=hch@lst.de \
    --cc=jejb@linux.ibm.com \
    --cc=jinpu.wang@cloud.ionos.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=yanaijie@huawei.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 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.