bug#20909: incorrect partition size calculation
Gena Makhomed <[email protected]>
| Newsgroups | gmane.comp.gnu.parted.bugs |
|---|---|
| Message-ID | <[email protected]> |
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