56 lines
1.8 KiB
Diff
56 lines
1.8 KiB
Diff
# HG changeset patch
|
|
# User Ian Campbell <ian.campbell@xensource.com>
|
|
# Date Wed Oct 25 13:58:30 2006 +0100
|
|
# Node ID 1c985a2e47eadc66e747443dfa65099e5f1dec86
|
|
# parent: a0919d3f7d50dad3db4268611213a3923a497afd
|
|
[LINUX] PV-on-HVM: Implement HDIO_GETGEO ioctl on kernels before
|
|
2.6.16.
|
|
|
|
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
|
|
Signed-off-by: K. Y. Srinivasan <ksrinivasan@novell.com>
|
|
Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>
|
|
|
|
--- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Wed Oct 25 13:58:30 2006 +0100
|
|
+++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Wed Oct 25 13:58:30 2006 +0100
|
|
@@ -468,6 +468,27 @@ int blkif_ioctl(struct inode *inode, str
|
|
command, (long)argument, inode->i_rdev);
|
|
|
|
switch (command) {
|
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
|
|
+ case HDIO_GETGEO: {
|
|
+ struct block_device *bd = inode->i_bdev;
|
|
+ struct hd_geometry geo;
|
|
+ int ret;
|
|
+
|
|
+ if (!argument)
|
|
+ return -EINVAL;
|
|
+
|
|
+ geo.start = get_start_sect(bd);
|
|
+ ret = blkif_getgeo(bd, &geo);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
+ if (copy_to_user((struct hd_geometry __user *)argument, &geo,
|
|
+ sizeof(geo)))
|
|
+ return -EFAULT;
|
|
+
|
|
+ return 0;
|
|
+ }
|
|
+#endif
|
|
case CDROMMULTISESSION:
|
|
DPRINTK("FIXME: support multisession CDs later\n");
|
|
for (i = 0; i < sizeof(struct cdrom_multisession); i++)
|
|
--- a/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c Wed Oct 25 13:58:30 2006 +0100
|
|
+++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c Wed Oct 25 13:58:30 2006 +0100
|
|
@@ -91,7 +91,9 @@ static struct block_device_operations xl
|
|
.open = blkif_open,
|
|
.release = blkif_release,
|
|
.ioctl = blkif_ioctl,
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
|
|
.getgeo = blkif_getgeo
|
|
+#endif
|
|
};
|
|
|
|
DEFINE_SPINLOCK(blkif_io_lock);
|
|
|