[U-Boot] [PATCH v8 8/10] GPT: read partition table from device into a data structure

Lothar Waßmann LW at KARO-electronics.de
Mon Jul 3 06:52:00 UTC 2017


Hi,

On Sat,  1 Jul 2017 15:42:57 -0700 alison at peloton-tech.com wrote:
> From: Alison Chaiken <alison at peloton-tech.com>
> 
> Make the partition table available for modification by reading it from
> the user-specified device into a linked list.   Provide an accessor
> function for command-line testing.
> 
> Signed-off-by: Alison Chaiken <alison at peloton-tech.com>
> ---
> 
> Changes since v7:
>    The failure-handling logic of get_gpt_info() now is triggered
>    properly when valid_part=1.
> 
>  cmd/gpt.c      | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  include/part.h |   7 ++++
>  2 files changed, 126 insertions(+)
> 
> diff --git a/cmd/gpt.c b/cmd/gpt.c
> index 65fb80b..dd5f78b 100644
> --- a/cmd/gpt.c
> +++ b/cmd/gpt.c
[...]
> +static int get_gpt_info(struct blk_desc *dev_desc)
> +{
> +	/* start partition numbering at 1, as U-Boot does */
> +	int valid_parts = 1, p, ret;
> +	disk_partition_t info;
> +	struct disk_part *new_disk_part;
> +
> +	if (disk_partitions.next == NULL)
> +		INIT_LIST_HEAD(&disk_partitions);
> +
> +	for (p = 1; p <= MAX_SEARCH_PARTITIONS; p++) {
> +		ret = part_get_info(dev_desc, p, &info);
> +		if (ret)
> +			continue;
> +
> +		new_disk_part = allocate_disk_part(&info, valid_parts);
> +		if (IS_ERR(new_disk_part))
> +			goto out;
> +
> +		list_add_tail(&new_disk_part->list, &disk_partitions);
> +		valid_parts++;
> +	}
> +	if (valid_parts == 1) {
> +		printf("** No valid partitions found **\n");
> +		goto out;
> +	}
> +	return --valid_parts;
>
I personally find it somewhat strange to initialize a counter to 1 and
then return its value reduced by one, rather than initializing it to 0
and returning the exact counter value.



Lothar Waßmann


More information about the U-Boot mailing list