commit 0098e7bdb80fb7ffe55b8bc9086a16d0a65898e5 Author: Joel Granados Moreno Date: Mon Jun 22 11:37:26 2009 +0200 Add mechanism to avoid cylinder alignments. diff --git a/include/parted/disk.h b/include/parted/disk.h index 172fbee..664c388 100644 --- a/include/parted/disk.h +++ b/include/parted/disk.h @@ -263,7 +263,8 @@ extern int ped_disk_get_last_partition_num (const PedDisk* disk); extern int ped_disk_get_max_primary_partition_count (const PedDisk* disk); extern bool ped_disk_get_max_supported_partition_count(const PedDisk* disk, int* supported); - +extern int ped_disk_align_to_cylinders_on(); +extern int ped_disk_align_to_cylinders_toggle(); /** @} */ /** diff --git a/libparted/disk.c b/libparted/disk.c index 6884c83..44a2f2f 100644 --- a/libparted/disk.c +++ b/libparted/disk.c @@ -65,6 +65,23 @@ static int _disk_raw_add (PedDisk* disk, PedPartition* part); static PedDiskType* disk_types = NULL; +int ped_disk_align_to_cylinders = 1; + +int +ped_disk_align_to_cylinders_toggle () +{ + if (ped_disk_align_to_cylinders == 1) + return ped_disk_align_to_cylinders = 0; + else + return ped_disk_align_to_cylinders = 1; +} + +int +ped_disk_align_to_cylinders_on () +{ + return ped_disk_align_to_cylinders; +} + void ped_disk_type_register (PedDiskType* disk_type) { diff --git a/libparted/labels/dos.c b/libparted/labels/dos.c index fc54339..e7d416d 100644 --- a/libparted/labels/dos.c +++ b/libparted/labels/dos.c @@ -2005,8 +2005,9 @@ msdos_partition_align (PedPartition* part, const PedConstraint* constraint) partition_probe_bios_geometry (part, &bios_geom); - if (_align (part, &bios_geom, constraint)) - return 1; + if (ped_disk_align_to_cylinders_on()) + if (_align (part, &bios_geom, constraint)) + return 1; if (_align_no_geom (part, constraint)) return 1;