[parted-devel] [PATCH] libparted/dasd: correct the offset where the first partition begins

Brian C. Lane bcl at redhat.com
Tue Jun 14 16:59:29 UTC 2016


On Tue, Jun 14, 2016 at 12:19:40PM +0200, Hendrik Brueckner wrote:
> From: Wang Dong <dongdwdw at linux.vnet.ibm.com>
> 
> The start point of first partition must start at least from the third
> track of DASD, due to the existence of metadata in the first two track.
> The previous constraint just sets all the device to be partitioned.
> So when the start point of the first partition start before the third
> track, (For example if it starts from.0) parted will exit abruptly.
> And this kind of job must be done with constraint explicitly.
> 
> Then the constraint is modified to exclude the first two tracks and
> to make the first partition start from the third track by default.
> 
> Signed-off-by: Wang Dong <dongdwdw at linux.vnet.ibm.com>
> Reviewed-by: Viktor Mihajlovski <mihajlov at linux.vnet.ibm.com>
> Signed-off-by: Hendrik Brueckner <brueckner at linux.vnet.ibm.com>
> ---
>  libparted/labels/dasd.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c
> index f79a867..4e68512 100644
> --- a/libparted/labels/dasd.c
> +++ b/libparted/labels/dasd.c
> @@ -829,6 +829,7 @@ _primary_constraint (PedDisk* disk)
>  	PedSector sector_size;
>  	LinuxSpecific* arch_specific;
>  	DasdDiskSpecific* disk_specific;
> +	PedSector start;
>  
>  	PDEBUG;
>  
> @@ -842,7 +843,12 @@ _primary_constraint (PedDisk* disk)
>  	if (!ped_alignment_init (&end_align, -1,
>  						     disk->dev->hw_geom.sectors * sector_size))
>  		return NULL;
> -	if (!ped_geometry_init (&max_geom, disk->dev, 0, disk->dev->length))
> +
> +	start = (FIRST_USABLE_TRK * (long long) disk->dev->hw_geom.sectors
> +			    * (long long) arch_specific->real_sector_size
> +			    / (long long) disk->dev->sector_size);
> +
> +	if (!ped_geometry_init (&max_geom, disk->dev, start, disk->dev->length))
>  		return NULL;
>  
>  	return ped_constraint_new(&start_align, &end_align, &max_geom,
> -- 
> 1.8.3.1
> 
> 

Looks good to me, thanks.


-- 
Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)



More information about the parted-devel mailing list