summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2018-07-06 15:30:30 +0200
committerSimon Rettberg2018-07-06 15:30:30 +0200
commitc1ebcb5b7b142c774fe78821d866fc7c3d14abf2 (patch)
treebbb21a3c8d88fbef8fef9272ee80254a55fb56d2
parentCMake: Hide kernel option on BSD, make kernel dir configurable (diff)
downloaddnbd3-c1ebcb5b7b142c774fe78821d866fc7c3d14abf2.tar.gz
dnbd3-c1ebcb5b7b142c774fe78821d866fc7c3d14abf2.tar.xz
dnbd3-c1ebcb5b7b142c774fe78821d866fc7c3d14abf2.zip
[KERNEL] Add support for kernel 4.17.x
-rw-r--r--src/kernel/blk.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/kernel/blk.c b/src/kernel/blk.c
index 511d349..405e2ef 100644
--- a/src/kernel/blk.c
+++ b/src/kernel/blk.c
@@ -94,8 +94,19 @@ int dnbd3_blk_add_device(dnbd3_device_t *dev, int minor)
disk->queue = blk_queue;
disk->private_data = dev;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)
+ blk_queue_flag_set(QUEUE_FLAG_NONROT, disk->queue);
+ blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, disk->queue);
+#else
queue_flag_set_unlocked(QUEUE_FLAG_NONROT, disk->queue);
+#endif
+#define ONE_MEG (1048576)
+ blk_queue_max_segment_size(disk->queue, ONE_MEG);
+ blk_queue_max_segments(disk->queue, 0xffff);
+ blk_queue_max_hw_sectors(disk->queue, ONE_MEG / DNBD3_BLOCK_SIZE);
+ disk->queue->limits.max_sectors = 512;
dev->disk = disk;
+#undef ONE_MEG
add_disk(disk);
dnbd3_sysfs_init(dev);