summaryrefslogtreecommitdiffstats
path: root/kernel/devices.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/devices.c')
-rw-r--r--kernel/devices.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/kernel/devices.c b/kernel/devices.c
index cf89851..acf87e1 100644
--- a/kernel/devices.c
+++ b/kernel/devices.c
@@ -45,14 +45,14 @@ int start_device(dnbd2_device_t *dev)
/* Start sending thread. */
dev->tx_signal = 0;
- dev->tx_id = kernel_thread(dnbd2_tx_loop, dev, CLONE_KERNEL);
- if (dev->tx_id < 0) {
+ dev->dnbd_device_thread_task = kthread_run(dnbd2_tx_loop, dev, "DNBD2DEV");
+ if (IS_ERR(dev->dnbd_device_thread_task)){
del_timer(&dev->hb_timer);
del_timer(&dev->to_timer);
del_timer(&dev->requeue_timer);
return -1;
}
- wait_for_completion(&dev->tx_start);
+// wait_for_completion(&dev->tx_start);
return 0;
}
@@ -77,7 +77,8 @@ void stop_device(dnbd2_device_t *dev)
del_timer(&dev->requeue_timer);
dev->tx_signal = 1;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
- kill_proc_info(SIGKILL, 1, dev->tx_id);
+ //kill_proc_info(SIGKILL, 1, dev->tx_id);
+ kthread_stop(dev->dnbd_device_thread_task);
#else
kill_proc(dev->tx_id, SIGKILL, 1);
#endif
@@ -194,7 +195,7 @@ int add_device(dnbd2_device_t *dev, int minor)
*/
blk_queue_max_sectors(queue, DNBD2_BLOCK_SIZE/SECTOR_SIZE);
blk_queue_max_segment_size(queue, DNBD2_BLOCK_SIZE);
- blk_queue_hardsect_size(queue, DNBD2_BLOCK_SIZE);
+ blk_queue_logical_block_size(queue, DNBD2_BLOCK_SIZE);
blk_queue_max_phys_segments(queue, 1);
blk_queue_max_hw_segments(queue, 1);
disk->queue = queue;