GNU bug report logs -
#20909
incorrect partition size calculation
Previous Next
Reported by: Gena Makhomed <gmm <at> csdoc.com>
Date: Sat, 27 Jun 2015 06:00:12 UTC
Severity: normal
Done: Phil Susi <psusi <at> ubuntu.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
On 29.06.2015 20:43, Brian C. Lane wrote:
>> incorrect partition size calculation
>>
>> # parted -v
>> parted (GNU parted) 2.3
>>
>> Model: ATA HGST HUS724040AL (scsi)
>> Disk /dev/sda: 7814037168s
>>
>> how to reproduce:
>>
>> parted -s /dev/sda mklabel gpt
>> parted -s /dev/sda -a none mkpart primary 34s 2047s
>> parted -s /dev/sda set 1 bios_grub on
>> parted -s /dev/sda mkpart primary 2048s 2099199s
>> parted -s /dev/sda set 2 raid on
>> parted -s /dev/sda mkpart primary 2099200s 102764543s
>> parted -s /dev/sda set 3 raid on
>> parted -s /dev/sda mkpart primary zfs 102764544s 7814037134s
>>
>> parted
>> (parted) unit s
>> (parted) print free
>> Model: ATA HGST HUS724040AL (scsi)
>> Disk /dev/sda: 7814037168s
>> Sector size (logical/physical): 512B/512B
>> Partition Table: gpt
>>
>> Number Start End Size File system Name Flags
>> 1 34s 2047s 2014s primary bios_grub
>> 2 2048s 2099199s 2097152s primary raid
>> 3 2099200s 102764543s 100665344s primary raid
>> 4 102764544s 7814037134s 7711272591s primary
>>
>> (parted)
>>
>> =======================================
>>
>> parted reports what /dev/sda4 partition has size of 7711272591s
>> but this is not true, partition size is 7711272590s:
>>
>> 7814037168 - 2014 - 2097152 - 100665344 - 34 - 34 == 7711272590
>
> You are off by 1. start and end are inclusive so the size of sda4 is:
>
> 1 + (7814037134 - 102764544) = 7711272591
>
yes, you are right, sorry.
7814037168 - 2014 - 2097152 - 100665344 - 33 - 33 -1 == 7711272591
2014s, 2097152s, 100665344s and 7711272591s is size of partitions,
1s size of MBR and 33s + 33s is size of two copies of GPT.
BTW, "start and end are inclusive" - IMHO is very bad decision,
because now it is not possible to partition disk using MiB units
and always need use sectors and make all calculations manually.
for example, parted -s /dev/sda mkpart primary 34s 1MiB
now use one sector from second MiB and next partition
will be created as unaligned.
if use common scheme as in java - start index inclusive
and end index exclusive, - disk partitioning
will be very easy and obvious:
parted -s /dev/sda mkpart primary 34s 1MiB
parted -s /dev/sda mkpart primary 1MiB 1025MiB
parted -s /dev/sda mkpart primary 1025MiB 50178MiB
parted -s /dev/sda mkpart primary 50178MiB -- -34s
1-MiB alignment boundary recommended
for all GPT partitions except bios_grub one,
which contains core.img for read-only access:
https://en.wikipedia.org/wiki/BIOS_boot_partition
--
Best regards,
Gena
This bug report was last modified 10 years and 19 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.