Enable online resizing of extended partitions (!23)
A forum user had a case where they wanted to grow their in use root, ext4 file system. GParted supports this, but the partition was a logical partition inside an extended partition and GParted doesn't support resizing an extended partition while any contained logical partitions are busy. Example layout: Partition File System Mount Point /dev/sdb1 ntfs /dev/sdb2 [busy] /dev/sdb5 [busy] ext4 / unallocated unallocated So just allow extended partitions to be resized online when online partition resizing is available via libparted. NOTE: The block device that the Linux kernel provides for an extended partition just maps to the first 1 KiB of the extended partition where the Extended Boot Record is stored, and does not include any of the contained logical partitions. Therefore no application can care that the extended partition is resized while a logical partition is in use because it can't use the extended partition block device to access any data. The on disk layout looks like this: # fdisk -l /dev/sdb Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0007650e Device Boot Start End Blocks Id System /dev/sdb1 2048 1050623 524288 7 HPFS/NTFS/exFAT /dev/sdb2 1050624 2101247 525312 5 Extended /dev/sdb5 1052672 2101247 524288 83 Linux # parted /dev/sdb unit s print free Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 16777216s Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 63s 2047s 1985s Free Space 1 2048s 1050623s 1048576s primary ntfs 2 1050624s 2101247s 1050624s extended 5 1052672s 2101247s 1048576s logical ext4 2101248s 16777215s 14675968s Free Space The kernel's partition sizes from /sys/block/sdb/sdb${N}/{start,size} shows extended partition 2 has a size of only 2 sectors: # for N in 1 2 5 > do > echo -e "/dev/sdb${N}\tstart=`cat /sys/block/sdb/sdb${N}/start`\tsize=`cat /sys/block/sdb/sdb${N}/size`" > done /dev/sdb1 start=2048 size=1048576 /dev/sdb2 start=1050624 size=2 /dev/sdb5 start=1052672 size=1048576 The EBR read from the whole of extended partition 2 block device: # hexdump -C /dev/sdb2 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 86 |................| 000001c0 06 41 83 cb 09 82 00 08 00 00 00 00 10 00 00 00 |.A..............| 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 Closes !23 - Enable online resizing of extended partitions
This commit is contained in:
parent
1ed30495f1
commit
24d9599f66
|
@ -1279,6 +1279,9 @@ void Win_GParted::set_valid_operations()
|
|||
( ( enc_cap.online_grow && fs_cap.online_grow ) ||
|
||||
( enc_cap.online_shrink && fs_cap.online_shrink ) ) )
|
||||
allow_resize( true );
|
||||
// Always allow an extended partition to be resized online.
|
||||
if (selected_partition_ptr->type == TYPE_EXTENDED)
|
||||
allow_resize(true);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue