[U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition

Kever Yang kever.yang at rock-chips.com
Tue Jul 26 11:41:06 CEST 2016


Hi Michael,

On 07/26/2016 05:08 PM, Michael Trimarchi wrote:
> Hi
>
> On Tue, Jul 26, 2016 at 10:59 AM, Kever Yang <kever.yang at rock-chips.com> wrote:
>> Hi Michael,
>>
>>
>> On 07/26/2016 04:37 PM, Michael Trimarchi wrote:
>>> Hi
>>>
>>> On Tue, Jul 26, 2016 at 9:56 AM, Kever Yang <kever.yang at rock-chips.com>
>>> wrote:
>>>> The calculation of "dev_desc->lba - 34  - 1 - offset" is not correct for
>>>> size '-', because both fist_usable_lba and last_usable_lba will remain
>>>> 34 sectors.
>>>>
>>>> We can simply use 0 for size '-' because the part_efi module will decode
>>>> the size and auto extend the size to maximum available size.
>>>>
>>>> Signed-off-by: Kever Yang <kever.yang at rock-chips.com>
>>>> ---
>>>>
>>>>    cmd/gpt.c | 4 ++--
>>>>    1 file changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/cmd/gpt.c b/cmd/gpt.c
>>>> index 3d9706b..897596a 100644
>>>> --- a/cmd/gpt.c
>>>> +++ b/cmd/gpt.c
>>>> @@ -298,8 +298,8 @@ static int set_gpt_info(struct blk_desc *dev_desc,
>>>>                   if (extract_env(val, &p))
>>>>                           p = val;
>>>>                   if ((strcmp(p, "-") == 0)) {
>>>> -                       /* remove first usable lba and last block */
>>>> -                       parts[i].size = dev_desc->lba - 34  - 1 - offset;
>>>> +                       /* Let part efi module to auto extend the size */
>>>> +                       parts[i].size = 0;
>>> gpt verify give you success?
>>
>> Yes.
>>
>> I use below gpt table and "gpt write mmc 0 $partitions" command to do the
>> test:
>> #define PARTS_DEFAULT \
>>         "uuid_disk=${uuid_gpt_disk};" \
>>         "name=boot,size=32M,uuid=${uuid_gpt_boot};" \
>>         "name=rootfs,size=-,uuid=${uuid_gpt_rootfs};"
>>
>> Without this patch, I get message:
>> => gpt write mmc 0 $partitions
>> Writing GPT: Partitions layout exceds disk size
>> error!
>>
>> After I apply this patch, I get below message:
>> Writing GPT: success!
>>
> gpt read back does give you success?

Sorry, I misunderstand your mean about verify.

Here is the result with verify command, it do failed.
=> gpt verify mmc 0 $partitions
ERROR: Partition rootfs size: 30679007 does not match 0!

at disk/part_efi.c:660/gpt_verify_partitions()
Verify GPT: error!

So I get size check failed for the last partition, can we update the 
size check for
the last partition, or update the partition size after extend to maximum?

Thanks,
- Kever

>
> Michael
>
>> Thanks,
>> - Kever
>>
>>
>>> Michael
>>>
>>>>                   } else {
>>>>                           size_ll = ustrtoull(p, &p, 0);
>>>>                           parts[i].size = lldiv(size_ll, dev_desc->blksz);
>>>> --
>>>> 1.9.1
>>>>
>>>>
>>>
>>
>
>




More information about the U-Boot mailing list