WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 3/3] xen-blkfront: Fix minor offset calculation for e

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 3/3] xen-blkfront: Fix minor offset calculation for emulated IDE disks
From: Stefan Bader <stefan.bader@xxxxxxxxxxxxx>
Date: Thu, 14 Jul 2011 15:30:47 +0200
Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Delivery-date: Thu, 14 Jul 2011 06:34:26 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4E1EEEA1.9050102@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4E1EEEA1.9050102@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Before this a block device defined as hda1 in the configuration files
would be mapped to hda, as well as hda2.

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

<Prev in Thread] Current Thread [Next in Thread>