Message ID | 1469519782-20261-1-git-send-email-kever.yang@rock-chips.com |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
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 > >
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 >> >> > >
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 >>> >>> >> >> > >
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 >>>> >>>> >>> >> > >
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@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot
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);
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(-)