From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kever Yang Date: Tue, 26 Jul 2016 17:41:06 +0800 Subject: [U-Boot] [PATCH] cmd: gpt: fix the wrong size parse for the last partition In-Reply-To: References: <1469519782-20261-1-git-send-email-kever.yang@rock-chips.com> <57972673.5040602@rock-chips.com> Message-ID: <57973032.4050800@rock-chips.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Michael, On 07/26/2016 05:08 PM, Michael Trimarchi wrote: > Hi > > On Tue, Jul 26, 2016 at 10:59 AM, Kever Yang 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 >>> 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 >>>> --- >>>> >>>> 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 >>>> >>>> >>> >> > >