[Parted-maintainers] Bug#579948: [parted-devel] Some debugging info

Colin Watson cjwatson at debian.org
Tue Jun 15 18:53:21 UTC 2010


On Mon, Jun 14, 2010 at 08:40:12PM +0200, Karel Zak wrote:
> On Mon, Jun 14, 2010 at 01:06:09PM +0100, Colin Watson wrote:
> > parted-devel, can anyone comment on this?  It seems to me that either
> > (a) _get_lax_constraint should be using ped_alignment_any for its start
> > alignment, rather than aligning to sectors * heads boundaries, or (b)
> > Sun labels really and truly require cylinder alignment, in which case
> > requests to use optimal alignment shouldn't be honoured.
> 
> The begin of the partition has to be defined in cylinders:
> 
>         struct __attribute__ ((packed)) _SunRawPartition {
>                 u_int32_t       start_cylinder; /* where the part starts... */
>                 u_int32_t       num_sectors;    /* ...and it's length */
>         };
> 
> IMHO it does not make sense to use non-cylinder alignment here.

In that case, I think that the sun part of
723ea23c5df68cbe67d1f518ef484f4c77f516fa should be reverted.  CCing Hans
since that was his change.


From: Colin Watson <cjwatson at ubuntu.com>
Date: Tue, 15 Jun 2010 19:49:40 +0100
Subject: [PATCH] sun: revert "implement disk flag operations"

This reverts the libparted/labels/sun.c part of
723ea23c5df68cbe67d1f518ef484f4c77f516fa.  Sun disk labels do not appear
to be able to handle non-cylinder alignment
(http://bugs.debian.org/579948).
---
 libparted/labels/sun.c |   47 +----------------------------------------------
 1 files changed, 1 insertions(+), 46 deletions(-)

diff --git a/libparted/labels/sun.c b/libparted/labels/sun.c
index 177a47c..e14a81d 100644
--- a/libparted/labels/sun.c
+++ b/libparted/labels/sun.c
@@ -109,7 +109,6 @@ struct _SunPartitionData {
 struct _SunDiskData {
 	PedSector		length; /* This is based on cyl - alt-cyl */
 	SunRawLabel		raw_label;
-	int                     cylinder_alignment;
 };
 
 static PedDiskType sun_disk_type;
@@ -191,7 +190,6 @@ sun_alloc (const PedDevice* dev)
 	PED_ASSERT (bios_geom->cylinders == (PedSector) (dev->length / cyl_size),
                     return NULL);
 	sun_specific->length = ped_round_down_to (dev->length, cyl_size);
-        sun_specific->cylinder_alignment = 1;
 
 	label = &sun_specific->raw_label;
 	memset(label, 0, sizeof(SunRawLabel));
@@ -258,42 +256,6 @@ sun_free (PedDisk *disk)
 }
 
 static int
-sun_disk_set_flag (PedDisk *disk, PedDiskFlag flag, int state)
-{
-        SunDiskData *disk_specific = disk->disk_specific;
-        switch (flag) {
-        case PED_DISK_CYLINDER_ALIGNMENT:
-                disk_specific->cylinder_alignment = !!state;
-                return 1;
-        default:
-                return 0;
-        }
-}
-
-static int
-sun_disk_get_flag (const PedDisk *disk, PedDiskFlag flag)
-{
-        SunDiskData *disk_specific = disk->disk_specific;
-        switch (flag) {
-        case PED_DISK_CYLINDER_ALIGNMENT:
-                return disk_specific->cylinder_alignment;
-        default:
-                return 0;
-        }
-}
-
-static int
-sun_disk_is_flag_available (const PedDisk *disk, PedDiskFlag flag)
-{
-        switch (flag) {
-        case PED_DISK_CYLINDER_ALIGNMENT:
-               return 1;
-        default:
-               return 0;
-        }
-}
-
-static int
 _check_geometry_sanity (PedDisk* disk, SunRawLabel* label)
 {
 	PedDevice*	dev = disk->dev;
@@ -804,10 +766,7 @@ sun_partition_align (PedPartition* part, const PedConstraint* constraint)
 {
         PED_ASSERT (part != NULL, return 0);
 
-        SunDiskData *disk_specific = part->disk->disk_specific;
-
-        if (disk_specific->cylinder_alignment &&
-            _ped_partition_attempt_align (part, constraint,
+        if (_ped_partition_attempt_align (part, constraint,
                                           _get_strict_constraint (part->disk)))
                 return 1;
         if (_ped_partition_attempt_align (part, constraint,
@@ -921,10 +880,6 @@ static PedDiskOps sun_disk_ops = {
 	clobber:		NULL,
 	write:			NULL_IF_DISCOVER_ONLY (sun_write),
 
-	disk_set_flag:          sun_disk_set_flag,
-	disk_get_flag:          sun_disk_get_flag,
-	disk_is_flag_available: sun_disk_is_flag_available,
-
 	get_partition_alignment: sun_get_partition_alignment,
 
 	partition_set_name:		NULL,
-- 
1.7.0.4


-- 
Colin Watson                                       [cjwatson at debian.org]





More information about the Parted-maintainers mailing list