Fix l4linux block driver for large partitions

Fixes #678
This commit is contained in:
Ivan Loskutov 2013-03-01 18:24:24 +04:00 committed by Norman Feske
parent 38b2a3dbb4
commit 5725c4c122
3 changed files with 4 additions and 4 deletions

View File

@ -40,7 +40,7 @@ L4_CV void* genode_block_request(unsigned idx, unsigned long sz,
void *req, unsigned long *offset);
L4_CV void genode_block_submit(unsigned idx, unsigned long queue_offset,
unsigned long size, unsigned long disc_offset,
unsigned long size, unsigned long long disc_offset,
int write);
L4_CV void genode_block_collect_responses(unsigned idx);

View File

@ -62,7 +62,7 @@ static void genode_blk_request(struct request_queue *q)
struct request *req;
unsigned long queue_offset;
void *buf;
unsigned long offset;
unsigned long long offset;
unsigned long nbytes;
short write;
struct genode_blk_device* dev;
@ -155,7 +155,7 @@ static int genode_blk_getgeo(struct block_device *bdev, struct hd_geometry *geo)
struct genode_blk_device *dev = bdev->bd_disk->private_data;
unsigned long size = dev->blk_cnt * dev->blk_sz *
(dev->blk_sz / KERNEL_SECTOR_SIZE);
geo->cylinders = size << 5;
geo->cylinders = size >> 7;
geo->heads = 4;
geo->sectors = 32;
return 0;

View File

@ -295,7 +295,7 @@ extern "C" {
void genode_block_submit(unsigned idx, unsigned long queue_offset,
unsigned long size, unsigned long disc_offset, int write)
unsigned long size, unsigned long long disc_offset, int write)
{
if (idx >= genode_block_count()) {
PWRN("Invalid index!");