summaryrefslogtreecommitdiffstats
path: root/src/kernel/blk.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/blk.c')
-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);