public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Quentin Schulz <quentin.schulz@cherry.de>
To: Rasmus Villemoes <rasmus.villemoes@prevas.dk>, u-boot@lists.denx.de
Cc: Tom Rini <trini@konsulko.com>,
	Patrick Delaunay <patrick.delaunay@foss.st.com>,
	Marek Vasut <marex@denx.de>,
	Emil Kronborg <emil.kronborg@protonmail.com>
Subject: Re: [PATCH 1/3] env: mmc: refactor mmc_offset_try_partition()
Date: Wed, 18 Sep 2024 18:59:39 +0200	[thread overview]
Message-ID: <376f36e2-1fa4-4fea-9af9-2c2e491cedbd@cherry.de> (raw)
In-Reply-To: <20240912134141.4143855-2-rasmus.villemoes@prevas.dk>

Hi Rasmus,

On 9/12/24 3:41 PM, Rasmus Villemoes wrote:
> In preparation for fixing the handling of a the case of redundant
> environment defined in two separate partitions with the U-Boot env
> GUID, refactor the
> 
>    for ()
>      if (str)
>        ...
>    #ifdef CONFIG_FOO
>      if (!str)
>        ..
>    #endif
> 
> to
> 
>    if (str)
>      for ()
>    else if (CONFIG_FOO && !str)
>      for ()
> 
> and put those for loops in separate functions.
> 
> No functional change intended, but I did change the direct access of
> info.type_guid into using the disk_partition_type_guid() helper, so
> that I could avoid the #ifdef and use IS_ENABLED() in the if() statement.
> 
> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
> ---
>   env/mmc.c | 59 ++++++++++++++++++++++++++++++++++++++-----------------
>   1 file changed, 41 insertions(+), 18 deletions(-)
> 
> diff --git a/env/mmc.c b/env/mmc.c
> index 0338aa6c56a..db2d35e9bd4 100644
> --- a/env/mmc.c
> +++ b/env/mmc.c
> @@ -53,11 +53,45 @@ DECLARE_GLOBAL_DATA_PTR;
>   #endif
>   
>   #if CONFIG_IS_ENABLED(OF_CONTROL)
> +
> +static int mmc_env_partition_by_name(struct blk_desc *desc, const char *str,
> +				     struct disk_partition *info)
> +{
> +	int i, ret;
> +
> +	for (i = 1;; i++) {
> +		ret = part_get_info(desc, i, info);
> +		if (ret < 0)
> +			return ret;
> +
> +		if (!strncmp((const char *)info->name, str, sizeof(info->name)))
> +			return 0;
> +	}
> +}
> +
> +static int mmc_env_partition_by_guid(struct blk_desc *desc, struct disk_partition *info)
> +{
> +	const efi_guid_t env_guid = PARTITION_U_BOOT_ENVIRONMENT;
> +	efi_guid_t type_guid;
> +	int i, ret;
> +
> +	for (i = 1;; i++) {
> +		ret = part_get_info(desc, i, info);
> +		if (ret < 0)
> +			return ret;
> +
> +		uuid_str_to_bin(disk_partition_type_guid(info), type_guid.b, UUID_STR_FORMAT_GUID);
> +		if (!memcmp(&env_guid, &type_guid, sizeof(efi_guid_t)))
> +			return 0;
> +	}
> +}
> +
> +
>   static inline int mmc_offset_try_partition(const char *str, int copy, s64 *val)
>   {
>   	struct disk_partition info;
>   	struct blk_desc *desc;
> -	int len, i, ret;
> +	int len, ret;
>   	char dev_str[4];
>   
>   	snprintf(dev_str, sizeof(dev_str), "%d", mmc_get_env_dev());
> @@ -65,24 +99,13 @@ static inline int mmc_offset_try_partition(const char *str, int copy, s64 *val)
>   	if (ret < 0)
>   		return (ret);
>   
> -	for (i = 1;;i++) {
> -		ret = part_get_info(desc, i, &info);
> -		if (ret < 0)
> -			return ret;
> -
> -		if (str && !strncmp((const char *)info.name, str, sizeof(info.name)))
> -			break;
> -#ifdef CONFIG_PARTITION_TYPE_GUID
> -		if (!str) {
> -			const efi_guid_t env_guid = PARTITION_U_BOOT_ENVIRONMENT;
> -			efi_guid_t type_guid;
> -
> -			uuid_str_to_bin(info.type_guid, type_guid.b, UUID_STR_FORMAT_GUID);
> -			if (!memcmp(&env_guid, &type_guid, sizeof(efi_guid_t)))
> -				break;
> -		}
> -#endif
> +	if (str) {
> +		ret = mmc_env_partition_by_name(desc, str, &info);
> +	} else if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID) && !str) {

nitpick: it's guaranteed that !str if reaching the else if based on the 
condition of the above if condition.

Cheers,
Quentin

  reply	other threads:[~2024-09-18 16:59 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-12 13:41 [PATCH 0/3] env: mmc: fix use of two separate partitions with proper type GUID Rasmus Villemoes
2024-09-12 13:41 ` [PATCH 1/3] env: mmc: refactor mmc_offset_try_partition() Rasmus Villemoes
2024-09-18 16:59   ` Quentin Schulz [this message]
2024-09-19  6:53     ` Rasmus Villemoes
2024-09-23 11:04       ` Quentin Schulz
2024-09-12 13:41 ` [PATCH 2/3] env: mmc: do not return an offset before the start of the partition Rasmus Villemoes
2024-09-12 13:41 ` [PATCH 3/3] env: mmc: rework mmc_env_partition_by_guid() to work with two separate partitions Rasmus Villemoes
2024-09-18 16:59   ` Quentin Schulz
2024-09-19  7:01     ` Rasmus Villemoes
2024-09-23 11:10       ` Quentin Schulz
2024-10-01 13:43 ` [PATCH 0/3] env: mmc: fix use of two separate partitions with proper type GUID Rasmus Villemoes
2024-10-01 14:43   ` Tom Rini
2024-10-01 17:37 ` Tom Rini

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=376f36e2-1fa4-4fea-9af9-2c2e491cedbd@cherry.de \
    --to=quentin.schulz@cherry.de \
    --cc=emil.kronborg@protonmail.com \
    --cc=marex@denx.de \
    --cc=patrick.delaunay@foss.st.com \
    --cc=rasmus.villemoes@prevas.dk \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox