summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorSimon Rettberg2015-10-13 13:37:26 +0200
committerSimon Rettberg2015-10-13 13:37:26 +0200
commitc3c050851dc866f2311d33a262ed81af8c57ce22 (patch)
tree06f0bd73c9c0c8b3223f0fd4bc5bfb1b1e304bb0 /src/kernel
parent[SERVER] Fix integer overflow of global bytesReceived getter (diff)
downloaddnbd3-c3c050851dc866f2311d33a262ed81af8c57ce22.tar.gz
dnbd3-c3c050851dc866f2311d33a262ed81af8c57ce22.tar.xz
dnbd3-c3c050851dc866f2311d33a262ed81af8c57ce22.zip
[KERNEL] Add support for kernel 4.2.x
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/blk.h4
-rw-r--r--src/kernel/net.c10
2 files changed, 12 insertions, 2 deletions
diff --git a/src/kernel/blk.h b/src/kernel/blk.h
index 28f6f8c..5091d19 100644
--- a/src/kernel/blk.h
+++ b/src/kernel/blk.h
@@ -23,6 +23,10 @@
#include "dnbd3.h"
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+#define REQ_TYPE_SPECIAL REQ_TYPE_DRV_PRIV
+#endif
+
extern struct block_device_operations dnbd3_blk_ops;
int dnbd3_blk_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg);
diff --git a/src/kernel/net.c b/src/kernel/net.c
index ab7a211..3392feb 100644
--- a/src/kernel/net.c
+++ b/src/kernel/net.c
@@ -30,6 +30,12 @@
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+#define dnbd3_sock_create(af,type,proto,sock) sock_create_kern(&init_net, af, type, proto, sock)
+#else
+#define dnbd3_sock_create(af,type,proto,sock) sock_create_kern(af, type, proto, sock)
+#endif
+
/**
* Some macros for easier debug output. Location in source-code
* as well as server IP:port info will be printed.
@@ -169,7 +175,7 @@ int dnbd3_net_connect(dnbd3_device_t *dev)
int mlen;
init_msghdr(msg);
- if (sock_create_kern(dev->cur_server.host.type, SOCK_STREAM, IPPROTO_TCP, &dev->sock) < 0)
+ if (dnbd3_sock_create(dev->cur_server.host.type, SOCK_STREAM, IPPROTO_TCP, &dev->sock) < 0)
error_dev("ERROR: Couldn't create socket (v6).");
kernel_setsockopt(dev->sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout));
@@ -543,7 +549,7 @@ int dnbd3_net_discover(void *data)
continue;
// Initialize socket and connect
- if (sock_create_kern(dev->alt_servers[i].host.type, SOCK_STREAM, IPPROTO_TCP, &sock) < 0)
+ if (dnbd3_sock_create(dev->alt_servers[i].host.type, SOCK_STREAM, IPPROTO_TCP, &sock) < 0)
{
debug_alt("ERROR: Couldn't create socket (discover).");
sock = NULL;