Message ID | 1469761938-1728-1-git-send-email-kever.yang@rock-chips.com |
---|---|
State | Accepted |
Commit | c2fdd34569145ad281aeea5ef16fff83d7075830 |
Delegated to: | Tom Rini |
Headers | show |
Hi Michael, Do you think this patch is necessary? Thanks, -Kever On 07/29/2016 11:12 AM, Kever Yang 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> > --- > > Changes in v2: > - fix gpt verify error, do not check the extend partition size > > cmd/gpt.c | 4 ++-- > disk/part_efi.c | 4 ++++ > 2 files changed, 6 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); > diff --git a/disk/part_efi.c b/disk/part_efi.c > index 0af1e92..4566cab 100644 > --- a/disk/part_efi.c > +++ b/disk/part_efi.c > @@ -655,6 +655,10 @@ int gpt_verify_partitions(struct blk_desc *dev_desc, > (unsigned long long)partitions[i].size); > > if (le64_to_cpu(gpt_part_size) != partitions[i].size) { > + /* We do not check the extend partition size */ > + if ((i == parts - 1) && (partitions[i].size == 0)) > + continue; > + > error("Partition %s size: %llu does not match %llu!\n", > efi_str, (unsigned long long)gpt_part_size, > (unsigned long long)partitions[i].size);
Hi On Aug 4, 2016 05:38, "Kever Yang" <kever.yang@rock-chips.com> wrote: > > Hi Michael, > > Do you think this patch is necessary? > Yes, I have checked it and fix the regression. Today I will confirm on hot correctness but I think too Michael > Thanks, > -Kever > > On 07/29/2016 11:12 AM, Kever Yang 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> >> --- >> >> Changes in v2: >> - fix gpt verify error, do not check the extend partition size >> >> cmd/gpt.c | 4 ++-- >> disk/part_efi.c | 4 ++++ >> 2 files changed, 6 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); >> diff --git a/disk/part_efi.c b/disk/part_efi.c >> index 0af1e92..4566cab 100644 >> --- a/disk/part_efi.c >> +++ b/disk/part_efi.c >> @@ -655,6 +655,10 @@ int gpt_verify_partitions(struct blk_desc *dev_desc, >> (unsigned long long)partitions[i].size); >> if (le64_to_cpu(gpt_part_size) != partitions[i].size) { >> + /* We do not check the extend partition size */ >> + if ((i == parts - 1) && (partitions[i].size == 0)) >> + continue; >> + >> error("Partition %s size: %llu does not match %llu!\n", >> efi_str, (unsigned long long)gpt_part_size, >> (unsigned long long)partitions[i].size); > > >
On Fri, Jul 29, 2016 at 11:12:18AM +0800, Kever Yang 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> Applied to u-boot/master, thanks!
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); diff --git a/disk/part_efi.c b/disk/part_efi.c index 0af1e92..4566cab 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -655,6 +655,10 @@ int gpt_verify_partitions(struct blk_desc *dev_desc, (unsigned long long)partitions[i].size); if (le64_to_cpu(gpt_part_size) != partitions[i].size) { + /* We do not check the extend partition size */ + if ((i == parts - 1) && (partitions[i].size == 0)) + continue; + error("Partition %s size: %llu does not match %llu!\n", efi_str, (unsigned long long)gpt_part_size, (unsigned long long)partitions[i].size);
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> --- Changes in v2: - fix gpt verify error, do not check the extend partition size cmd/gpt.c | 4 ++-- disk/part_efi.c | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-)