[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: [PATCH 3/3] xen-blkfront: Fix minor offset calculation for emulated IDE disks



On Thu, 14 Jul 2011, Stefan Bader wrote:
> Before this a block device defined as hda1 in the configuration files
> would be mapped to hda, as well as hda2.
> 

Don't you mean xvda and xvda2?

Besides hda1 doesn't mean anything for an HVM guest, it is not an
allowed disk configuration.
It is also a bug in the toolstack that propagates such nonsense to
xenstore so I would rather fix xend and/or libxenlight.


> Signed-off-by: Stefan Bader <stefan.bader@xxxxxxxxxxxxx>
> ---
>  drivers/block/xen-blkfront.c |   12 +++++++-----
>  1 files changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
> index 6e46edb..77489f1 100644
> --- a/drivers/block/xen-blkfront.c
> +++ b/drivers/block/xen-blkfront.c
> @@ -449,15 +449,17 @@ static int xen_translate_vdev(int vdevice, int *minor, 
> unsigned int *offset)
>       major = BLKIF_MAJOR(vdevice);
>       *minor = BLKIF_MINOR(vdevice);
>       switch (major) {
> +             /* For IDE the assumption seems to be 64 partitions (including
> +              * the whole device) per disk. */
>               case XEN_IDE0_MAJOR:
>                       *offset = (*minor / 64) + EMULATED_HD_DISK_NAME_OFFSET;
> -                     *minor = ((*minor / 64) * PARTS_PER_DISK) +
> -                             EMULATED_HD_DISK_MINOR_OFFSET;
> +                     *minor = *minor + EMULATED_HD_DISK_MINOR_OFFSET;
>                       break;
>               case XEN_IDE1_MAJOR:
> -                     *offset = (*minor / 64) + 2 + 
> EMULATED_HD_DISK_NAME_OFFSET;
> -                     *minor = (((*minor / 64) + 2) * PARTS_PER_DISK) +
> -                             EMULATED_HD_DISK_MINOR_OFFSET;
> +                     *offset = (*minor / 64) + 2 +
> +                               EMULATED_HD_DISK_NAME_OFFSET;
> +                     *minor = *minor + (2 * 64) +
> +                              EMULATED_HD_DISK_MINOR_OFFSET;
>                       break;
>               case XEN_SCSI_DISK0_MAJOR:
>                       *offset = (*minor / PARTS_PER_DISK) + 
> EMULATED_SD_DISK_NAME_OFFSET;
> -- 
> 1.7.4.1
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.