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); void *req, unsigned long *offset);
L4_CV void genode_block_submit(unsigned idx, unsigned long queue_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); int write);
L4_CV void genode_block_collect_responses(unsigned idx); 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; struct request *req;
unsigned long queue_offset; unsigned long queue_offset;
void *buf; void *buf;
unsigned long offset; unsigned long long offset;
unsigned long nbytes; unsigned long nbytes;
short write; short write;
struct genode_blk_device* dev; 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; struct genode_blk_device *dev = bdev->bd_disk->private_data;
unsigned long size = dev->blk_cnt * dev->blk_sz * unsigned long size = dev->blk_cnt * dev->blk_sz *
(dev->blk_sz / KERNEL_SECTOR_SIZE); (dev->blk_sz / KERNEL_SECTOR_SIZE);
geo->cylinders = size << 5; geo->cylinders = size >> 7;
geo->heads = 4; geo->heads = 4;
geo->sectors = 32; geo->sectors = 32;
return 0; return 0;

View File

@ -295,7 +295,7 @@ extern "C" {
void genode_block_submit(unsigned idx, unsigned long queue_offset, 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()) { if (idx >= genode_block_count()) {
PWRN("Invalid index!"); PWRN("Invalid index!");