summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorSimon Rettberg2017-10-09 15:11:13 +0200
committerSimon Rettberg2017-10-09 15:11:13 +0200
commit0b4c6ced6ee1ee3f6ba4442973ed1901bae7da1e (patch)
treee8c8f707c4baf22a9307e33db9006cdf2375b4c5 /src/kernel
parent[SERVER] Fix invalid pointer deref (diff)
downloaddnbd3-0b4c6ced6ee1ee3f6ba4442973ed1901bae7da1e.tar.gz
dnbd3-0b4c6ced6ee1ee3f6ba4442973ed1901bae7da1e.tar.xz
dnbd3-0b4c6ced6ee1ee3f6ba4442973ed1901bae7da1e.zip
[KERNEL] version check to support pointer to backing_dev_info in request_queue
This changed in 4.11, see https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dc3b17cc8bf21307c7e076e7c778d5db756f7871
Diffstat (limited to 'src/kernel')
-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 7a2b6e9..5dec195 100644
--- a/src/kernel/blk.c
+++ b/src/kernel/blk.c
@@ -174,7 +174,13 @@ int dnbd3_blk_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, u
// Forget all alt servers on explicit connect, set first al server to initial server
memset(dev->alt_servers, 0, sizeof(dev->alt_servers[0])*NUMBER_SERVERS);
memcpy(dev->alt_servers, &dev->initial_server, sizeof(dev->alt_servers[0]));
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+ if (blk_queue->backing_dev_info != NULL) {
+ blk_queue->backing_dev_info->ra_pages = (msg->read_ahead_kb * 1024) / PAGE_SIZE;
+ }
+#else
blk_queue->backing_dev_info.ra_pages = (msg->read_ahead_kb * 1024) / PAGE_SIZE;
+#endif
if (dnbd3_net_connect(dev) == 0)
{
result = 0;