* [U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition
@ 2016-07-26 7:56 Kever Yang
2016-07-26 8:37 ` Michael Trimarchi
0 siblings, 1 reply; 6+ messages in thread
From: Kever Yang @ 2016-07-26 7:56 UTC (permalink / raw)
To: u-boot
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@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;
} else {
size_ll = ustrtoull(p, &p, 0);
parts[i].size = lldiv(size_ll, dev_desc->blksz);
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition
2016-07-26 7:56 [U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition Kever Yang
@ 2016-07-26 8:37 ` Michael Trimarchi
2016-07-26 8:59 ` Kever Yang
0 siblings, 1 reply; 6+ messages in thread
From: Michael Trimarchi @ 2016-07-26 8:37 UTC (permalink / raw)
To: u-boot
Hi
On Tue, Jul 26, 2016 at 9:56 AM, Kever Yang <kever.yang@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@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?
Michael
> } else {
> size_ll = ustrtoull(p, &p, 0);
> parts[i].size = lldiv(size_ll, dev_desc->blksz);
> --
> 1.9.1
>
>
--
| Michael Nazzareno Trimarchi Amarula Solutions BV |
| COO - Founder Cruquiuskade 47 |
| +31(0)851119172 Amsterdam 1018 AM NL |
| [`as] http://www.amarulasolutions.com |
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition
2016-07-26 8:37 ` Michael Trimarchi
@ 2016-07-26 8:59 ` Kever Yang
2016-07-26 9:08 ` Michael Trimarchi
0 siblings, 1 reply; 6+ messages in thread
From: Kever Yang @ 2016-07-26 8:59 UTC (permalink / raw)
To: u-boot
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@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@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!
Thanks,
- Kever
>
> Michael
>
>> } else {
>> size_ll = ustrtoull(p, &p, 0);
>> parts[i].size = lldiv(size_ll, dev_desc->blksz);
>> --
>> 1.9.1
>>
>>
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition
2016-07-26 8:59 ` Kever Yang
@ 2016-07-26 9:08 ` Michael Trimarchi
2016-07-26 9:41 ` Kever Yang
0 siblings, 1 reply; 6+ messages in thread
From: Michael Trimarchi @ 2016-07-26 9:08 UTC (permalink / raw)
To: u-boot
Hi
On Tue, Jul 26, 2016 at 10:59 AM, Kever Yang <kever.yang@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@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@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?
Michael
> Thanks,
> - Kever
>
>
>>
>> Michael
>>
>>> } else {
>>> size_ll = ustrtoull(p, &p, 0);
>>> parts[i].size = lldiv(size_ll, dev_desc->blksz);
>>> --
>>> 1.9.1
>>>
>>>
>>
>>
>
>
--
| Michael Nazzareno Trimarchi Amarula Solutions BV |
| COO - Founder Cruquiuskade 47 |
| +31(0)851119172 Amsterdam 1018 AM NL |
| [`as] http://www.amarulasolutions.com |
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition
2016-07-26 9:08 ` Michael Trimarchi
@ 2016-07-26 9:41 ` Kever Yang
2016-07-27 13:10 ` Julian Scheel
0 siblings, 1 reply; 6+ messages in thread
From: Kever Yang @ 2016-07-26 9:41 UTC (permalink / raw)
To: u-boot
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@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@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@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
>>>>
>>>>
>>>
>>
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition
2016-07-26 9:41 ` Kever Yang
@ 2016-07-27 13:10 ` Julian Scheel
0 siblings, 0 replies; 6+ messages in thread
From: Julian Scheel @ 2016-07-27 13:10 UTC (permalink / raw)
To: u-boot
Hi Michael, all,
On 26.07.2016 11:41, Kever Yang wrote:
> 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@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@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@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?
The size check obviously fails when no size was given. I would propose
to simply disable the size check for partitions with no given size.
There is no point in computing the desired size just to allow a check
which does the same computation backwards to pass.
-Julian
> 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
>>>>>
>>>>>
>>>>
>>>
>>
>>
>
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-07-27 13:10 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-26 7:56 [U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition Kever Yang
2016-07-26 8:37 ` Michael Trimarchi
2016-07-26 8:59 ` Kever Yang
2016-07-26 9:08 ` Michael Trimarchi
2016-07-26 9:41 ` Kever Yang
2016-07-27 13:10 ` Julian Scheel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox