[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
(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