|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 3/3] xen-blkfront: Fix minor offset calculation for emulated IDE disks
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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |