All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: Neeraj Kumar <s.neeraj@samsung.com>
Cc: <dan.j.williams@intel.com>, <dave@stgolabs.net>,
	<dave.jiang@intel.com>, <alison.schofield@intel.com>,
	<vishal.l.verma@intel.com>, <ira.weiny@intel.com>,
	<a.manzanares@samsung.com>, <nifan.cxl@gmail.com>,
	<anisa.su@samsung.com>, <vishak.g@samsung.com>,
	<krish.reddy@samsung.com>, <arun.george@samsung.com>,
	<alok.rathore@samsung.com>, <neeraj.kernel@gmail.com>,
	<linux-kernel@vger.kernel.org>, <linux-cxl@vger.kernel.org>,
	<nvdimm@lists.linux.dev>, <gost.dev@samsung.com>,
	<cpgs@samsung.com>
Subject: Re: [RFC PATCH 02/20] nvdimm/label: Prep patch to accommodate cxl lsa 2.1 support
Date: Mon, 23 Jun 2025 11:53:51 +0100	[thread overview]
Message-ID: <20250623115351.00005312@huawei.com> (raw)
In-Reply-To: <700072760.81750165203833.JavaMail.epsvc@epcpadp1new>

On Tue, 17 Jun 2025 18:09:26 +0530
Neeraj Kumar <s.neeraj@samsung.com> wrote:

> In order to accommodate cxl lsa 2.1 format region label, renamed
> nd_namespace_label to nd_lsa_label.

I would add some more information on why.  I've no idea from this
description whether the issue is a naming clash or a need for a broader
name or something entirely different.

Most readers aren't going to be particular familiar with the lsa spec
version changes, so help them out with a little more detail.

The comment you have with the union is probably the right info
to duplicate here.

> 
> No functional change introduced.
> 
> Signed-off-by: Neeraj Kumar <s.neeraj@samsung.com>

This is quite a lot of churn which, just looking at this patch, could
be avoided by just setting local variables to point at a particular
member of the union rather than the containing struct.
You already do this in a few places like nd_label_reserve_dpa().

Perhaps it will be come clearer why that doesn't make sense as
I ready later patches.

> diff --git a/drivers/nvdimm/label.h b/drivers/nvdimm/label.h
> index 0650fb4b9821..4883b3a1320f 100644
> --- a/drivers/nvdimm/label.h
> +++ b/drivers/nvdimm/label.h
> @@ -183,6 +183,16 @@ struct nd_namespace_label {
>  	};
>  };
>  
> +/*
> + * LSA 2.1 format introduces region label, which can also reside
> + * into LSA along with only namespace label as per v1.1 and v1.2
> + */
> +struct nd_lsa_label {
> +	union {
> +		struct nd_namespace_label ns_label;
> +	};
> +};

> diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
> index 55cfbf1e0a95..f180f0068c15 100644
> --- a/drivers/nvdimm/namespace_devs.c
> +++ b/drivers/nvdimm/namespace_devs.c

> @@ -1595,7 +1596,8 @@ static bool has_uuid_at_pos(struct nd_region *nd_region, const uuid_t *uuid,
>  				return false;
>  			}
>  			found_uuid = true;
> -			if (!nsl_validate_nlabel(nd_region, ndd, nd_label))
> +			if (!nsl_validate_nlabel(nd_region,
> +						 ndd, &nd_label->ns_label))

Strange wrap.  I'd move ndd up a line.


>  				continue;
>  			if (position != pos)
>  				continue;
> @@ -1615,7 +1617,7 @@ static int select_pmem_id(struct nd_region *nd_region, const uuid_t *pmem_id)
>  	for (i = 0; i < nd_region->ndr_mappings; i++) {
>  		struct nd_mapping *nd_mapping = &nd_region->mapping[i];
>  		struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
> -		struct nd_namespace_label *nd_label = NULL;
> +		struct nd_lsa_label *nd_label = NULL;
>  		u64 hw_start, hw_end, pmem_start, pmem_end;
>  		struct nd_label_ent *label_ent;
>  


> @@ -1739,14 +1741,14 @@ static struct device *create_namespace_pmem(struct nd_region *nd_region,
>  	 * that position at labels[0], and NULL at labels[1].  In the process,
>  	 * check that the namespace aligns with interleave-set.
>  	 */
> -	nsl_get_uuid(ndd, nd_label, &uuid);
> +	nsl_get_uuid(ndd, &nd_label->ns_label, &uuid);
>  	rc = select_pmem_id(nd_region, &uuid);
>  	if (rc)
>  		goto err;
>  
>  	/* Calculate total size and populate namespace properties from label0 */
>  	for (i = 0; i < nd_region->ndr_mappings; i++) {
> -		struct nd_namespace_label *label0;
> +		struct nd_lsa_label *label0;

If you are only ever going to use one part of the union in a given
bit of code, why not use a struct of that type so you only need to change
the point where it is assigned rather that lots of places.

So keep this as struct nd_namespace_label *label0;

If that makes sense, check for other places where doing that will reduce the churn
and complexity of the code.



>  		struct nvdimm_drvdata *ndd;
>  
>  		nd_mapping = &nd_region->mapping[i];
> @@ -1760,17 +1762,17 @@ static struct device *create_namespace_pmem(struct nd_region *nd_region,
>  		}
>  
>  		ndd = to_ndd(nd_mapping);
> -		size += nsl_get_rawsize(ndd, label0);
> -		if (nsl_get_position(ndd, label0) != 0)
> +		size += nsl_get_rawsize(ndd, &label0->ns_label);
> +		if (nsl_get_position(ndd, &label0->ns_label) != 0)
>  			continue;
>  		WARN_ON(nspm->alt_name || nspm->uuid);
> -		nspm->alt_name = kmemdup(nsl_ref_name(ndd, label0),
> +		nspm->alt_name = kmemdup(nsl_ref_name(ndd, &label0->ns_label),
>  					 NSLABEL_NAME_LEN, GFP_KERNEL);
> -		nsl_get_uuid(ndd, label0, &uuid);
> +		nsl_get_uuid(ndd, &label0->ns_label, &uuid);
>  		nspm->uuid = kmemdup(&uuid, sizeof(uuid_t), GFP_KERNEL);
> -		nspm->lbasize = nsl_get_lbasize(ndd, label0);
> +		nspm->lbasize = nsl_get_lbasize(ndd, &label0->ns_label);
>  		nspm->nsio.common.claim_class =
> -			nsl_get_claim_class(ndd, label0);
> +			nsl_get_claim_class(ndd, &label0->ns_label);
>  	}


  reply	other threads:[~2025-06-23 10:53 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20250617124008epcas5p2e702f786645d44ceb1cdd980a914ce8e@epcas5p2.samsung.com>
     [not found] ` <20250617123944.78345-1-s.neeraj@samsung.com>
2025-06-17 12:39   ` [RFC PATCH 01/20] nvdimm/label: Introduce NDD_CXL_LABEL flag to set cxl label format Neeraj Kumar
2025-06-20 16:40     ` Jonathan Cameron
2025-06-26  9:48       ` Neeraj Kumar
2025-07-02 18:02     ` Ira Weiny
2025-07-03  9:58       ` Neeraj Kumar
2025-07-09 22:57     ` Dave Jiang
2025-07-18 12:13       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 02/20] nvdimm/label: Prep patch to accommodate cxl lsa 2.1 support Neeraj Kumar
2025-06-23 10:53     ` Jonathan Cameron [this message]
2025-06-26  9:51       ` Neeraj Kumar
2025-07-02 17:55     ` Ira Weiny
2025-07-03 10:04       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 03/20] nvdimm/namespace_label: Add namespace label changes as per CXL LSA v2.1 Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 04/20] nvdimm/label: CXL labels skip the need for 'interleave-set cookie' Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 05/20] nvdimm/region_label: Add region label updation routine Neeraj Kumar
2025-06-23  9:05     ` Jonathan Cameron
2025-06-26  9:54       ` Neeraj Kumar
2025-07-17 22:53     ` Fabio M. De Francesco
2025-07-18 13:00       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 06/20] nvdimm/region_label: Add region label deletion routine Neeraj Kumar
2025-06-23  9:09     ` Jonathan Cameron
2025-06-26  9:55       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 07/20] nvdimm/namespace_label: Update namespace init_labels and its region_uuid Neeraj Kumar
2025-06-23  9:11     ` Jonathan Cameron
2025-06-26  9:58       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 08/20] nvdimm/label: Include region label in slot validation Neeraj Kumar
2025-06-23  9:13     ` Jonathan Cameron
2025-06-26 10:00       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 09/20] nvdimm/namespace_label: Skip region label during ns label DPA reservation Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 10/20] nvdimm/region_label: Preserve cxl region information from region label Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 11/20] nvdimm/region_label: Export routine to fetch region information Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 12/20] nvdimm/namespace_label: Skip region label during namespace creation Neeraj Kumar
2025-06-23  9:17     ` Jonathan Cameron
2025-06-26 10:02       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 13/20] cxl/mem: Refactor cxl pmem region auto-assembling Neeraj Kumar
2025-06-23  9:20     ` Jonathan Cameron
2025-06-26 10:03       ` Neeraj Kumar
2025-07-10  0:38     ` Dave Jiang
2025-07-18 12:30       ` Neeraj Kumar
2025-07-21 18:11         ` Dave Jiang
2025-06-17 12:39   ` [RFC PATCH 14/20] cxl/region: Add cxl pmem region creation routine for region persistency Neeraj Kumar
2025-06-23  9:43     ` Jonathan Cameron
2025-06-26 10:23       ` Neeraj Kumar
2025-07-10 15:59     ` Dave Jiang
2025-07-18 12:45       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 15/20] cxl: Add a routine to find cxl root decoder on cxl bus Neeraj Kumar
2025-06-23  9:44     ` Jonathan Cameron
2025-06-26 10:38       ` Neeraj Kumar
2025-06-26 19:19     ` Alison Schofield
2025-06-27  9:03       ` Neeraj Kumar
2025-07-10 16:23     ` Dave Jiang
2025-07-18 12:48       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 16/20] cxl/mem: Preserve cxl root decoder during mem probe Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 17/20] cxl/pmem: Preserve region information into nd_set Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 18/20] cxl/pmem: Add support of cxl lsa 2.1 support in cxl pmem Neeraj Kumar
2025-06-23  9:48     ` Jonathan Cameron
2025-06-26 10:41       ` Neeraj Kumar
2025-07-10 17:18     ` Dave Jiang
2025-07-18 12:51       ` Neeraj Kumar
2025-07-21 17:44         ` Dave Jiang
2025-06-17 12:39   ` [RFC PATCH 19/20] cxl/pmem_region: Prep patch to accommodate pmem_region attributes Neeraj Kumar
2025-06-23  9:53     ` Jonathan Cameron
2025-06-26 10:45       ` Neeraj Kumar
2025-06-17 12:39   ` [RFC PATCH 20/20] cxl/pmem_region: Add cxl region label updation and deletion device attributes Neeraj Kumar
2025-06-23  9:56     ` Jonathan Cameron
2025-06-26 10:48       ` Neeraj Kumar

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=20250623115351.00005312@huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=a.manzanares@samsung.com \
    --cc=alison.schofield@intel.com \
    --cc=alok.rathore@samsung.com \
    --cc=anisa.su@samsung.com \
    --cc=arun.george@samsung.com \
    --cc=cpgs@samsung.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.jiang@intel.com \
    --cc=dave@stgolabs.net \
    --cc=gost.dev@samsung.com \
    --cc=ira.weiny@intel.com \
    --cc=krish.reddy@samsung.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=neeraj.kernel@gmail.com \
    --cc=nifan.cxl@gmail.com \
    --cc=nvdimm@lists.linux.dev \
    --cc=s.neeraj@samsung.com \
    --cc=vishak.g@samsung.com \
    --cc=vishal.l.verma@intel.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.