summaryrefslogtreecommitdiffstats
path: root/src/kernel/blk.c
diff options
context:
space:
mode:
authorJohann Latocha2012-02-23 19:28:19 +0100
committerJohann Latocha2012-02-23 19:28:19 +0100
commitf84b05519a15c650f667d7fef5967244ffbdaca6 (patch)
tree608f72b1ea903093dfb48e2f975605aba007b132 /src/kernel/blk.c
parent[KERNEL] One more KP fixed (diff)
downloaddnbd3-f84b05519a15c650f667d7fef5967244ffbdaca6.tar.gz
dnbd3-f84b05519a15c650f667d7fef5967244ffbdaca6.tar.xz
dnbd3-f84b05519a15c650f667d7fef5967244ffbdaca6.zip
[KERNEL] Read ahead increased
Diffstat (limited to 'src/kernel/blk.c')
-rw-r--r--src/kernel/blk.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/kernel/blk.c b/src/kernel/blk.c
index 1023743..2b12b74 100644
--- a/src/kernel/blk.c
+++ b/src/kernel/blk.c
@@ -22,6 +22,8 @@
#include "net.h"
#include "sysfs.h"
+#include <linux/pagemap.h>
+
int dnbd3_blk_add_device(dnbd3_device_t *dev, int minor)
{
struct gendisk *disk;
@@ -69,6 +71,8 @@ int dnbd3_blk_add_device(dnbd3_device_t *dev, int minor)
}
blk_queue_logical_block_size(blk_queue, DNBD3_BLOCK_SIZE);
+ blk_queue_physical_block_size(blk_queue, DNBD3_BLOCK_SIZE);
+
disk->queue = blk_queue;
disk->private_data = dev;
queue_flag_set_unlocked(QUEUE_FLAG_NONROT, disk->queue);
@@ -95,6 +99,7 @@ struct block_device_operations dnbd3_blk_ops =
int dnbd3_blk_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg)
{
dnbd3_device_t *dev = bdev->bd_disk->private_data;
+ struct request_queue *blk_queue = dev->disk->queue;
dnbd3_ioctl_t *msg = kmalloc(sizeof(dnbd3_ioctl_t), GFP_KERNEL);
copy_from_user((char *)msg, (char *)arg, sizeof(*msg));
@@ -105,6 +110,7 @@ int dnbd3_blk_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, u
strcpy(dev->cur_server.port, msg->port);
dev->vid = msg->vid;
dev->rid = msg->rid;
+ blk_queue->backing_dev_info.ra_pages = (msg->read_ahead_kb * 1024)/ PAGE_CACHE_SIZE;
dnbd3_net_connect(dev);
break;