On Fri, Feb 05, 2016 at 02:47:11PM +0100, Viktor Mihajlovski wrote:
> Fixes an issue with parted print being run against a logical
> volume realised by extents on a physical volume residing on
> a DASD.
> We must make sure that geometry, device blocksize and DASD
> attributes are present before we start format verifications
> If any of it is missing this is not a DASD.
> 
> Signed-off-by: Viktor Mihajlovski <[email protected]>
> ---
>  libparted/labels/fdasd.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/libparted/labels/fdasd.c b/libparted/labels/fdasd.c
> index 7e6a77a..968b332 100644
> --- a/libparted/labels/fdasd.c
> +++ b/libparted/labels/fdasd.c
> @@ -1021,13 +1021,20 @@ fdasd_get_geometry (const PedDevice *dev, 
> fdasd_anchor_t *anc, int f)
>                       goto error;
>               }
>  
> -             if (ioctl(f, HDIO_GETGEO, &anc->geo) != 0)
> +             if (ioctl(f, HDIO_GETGEO, &anc->geo) != 0 ||
> +                     anc->geo.heads == 0 ||
> +                     anc->geo.sectors == 0 ||
> +                     anc->geo.cylinders == 0 ) {
>                       fdasd_error(anc, unable_to_ioctl,
>                           _("Could not retrieve disk geometry information."));
> +                     goto error;
> +             }
>  
> -             if (ioctl(f, BLKSSZGET, &blksize) != 0)
> +             if (ioctl(f, BLKSSZGET, &blksize) != 0) {
>                       fdasd_error(anc, unable_to_ioctl,
>                           _("Could not retrieve blocksize information."));
> +                     goto error;
> +             }
>  
>               /* get disk type */
>               if (ioctl(f, BIODASDINFO, &dasd_info) != 0) {
> -- 
> 1.9.1
> 
> 

Ack, thanks!

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

Reply via email to