[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#20909: incorrect partition size calculation

From: Gena Makhomed
Subject: bug#20909: incorrect partition size calculation
Date: Mon, 29 Jun 2015 21:37:34 +0300
User-agent: Mozilla/5.0 (Windows NT 5.2; rv:31.0) Gecko/20100101 Thunderbird/31.7.0

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) 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 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:

Best regards,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]