lkml.org 
[lkml]   [2008]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] xen: Implement getgeo for Xen virtual block device.
    The below implements the getgeo hook for Xen block devices. Extracted
    from the xen-unstable tree where it has been used for ages.

    It is useful to have because it allows things like grub2 (used by the
    Debian installer images) to work in a guest domain without having to
    sprinkle Xen specific hacks around the place.

    Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
    From: Ian Campbell <ijc@hellion.org.uk>
    Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>

    ---
    drivers/block/xen-blkfront.c | 18 ++++++++++++++++++
    1 file changed, 18 insertions(+)

    ===================================================================
    --- a/drivers/block/xen-blkfront.c
    +++ b/drivers/block/xen-blkfront.c
    @@ -37,6 +37,7 @@

    #include <linux/interrupt.h>
    #include <linux/blkdev.h>
    +#include <linux/hdreg.h>
    #include <linux/module.h>

    #include <xen/xenbus.h>
    @@ -134,6 +135,22 @@ static void blkif_restart_queue_callback
    {
    struct blkfront_info *info = (struct blkfront_info *)arg;
    schedule_work(&info->work);
    +}
    +
    +int blkif_getgeo(struct block_device *bd, struct hd_geometry *hg)
    +{
    + /* We don't have real geometry info, but let's at least return
    + values consistent with the size of the device */
    + sector_t nsect = get_capacity(bd->bd_disk);
    + sector_t cylinders = nsect;
    +
    + hg->heads = 0xff;
    + hg->sectors = 0x3f;
    + sector_div(cylinders, hg->heads * hg->sectors);
    + hg->cylinders = cylinders;
    + if ((sector_t)(hg->cylinders + 1) * hg->heads * hg->sectors < nsect)
    + hg->cylinders = 0xffff;
    + return 0;
    }

    /*
    @@ -946,6 +963,7 @@ static struct block_device_operations xl
    .owner = THIS_MODULE,
    .open = blkif_open,
    .release = blkif_release,
    + .getgeo = blkif_getgeo,
    };




    \
     
     \ /
      Last update: 2008-02-21 22:09    [W:0.020 / U:61.960 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site