diff options
author | Sebastian Schmelzer | 2008-04-08 20:04:39 +0200 |
---|---|---|
committer | Sebastian Schmelzer | 2008-04-08 20:04:39 +0200 |
commit | 8c9150ca2220706abb9f7642fdc26f779800b3b7 (patch) | |
tree | 5e92763e576d47ecd9d88e76eda9b58f8d27b7fb /kernel/servers.c | |
parent | Import dnbd* from the former openslx-contrib repo as of revision 92. (diff) | |
download | dnbd2-8c9150ca2220706abb9f7642fdc26f779800b3b7.tar.gz dnbd2-8c9150ca2220706abb9f7642fdc26f779800b3b7.tar.xz dnbd2-8c9150ca2220706abb9f7642fdc26f779800b3b7.zip |
* added kernel version check to module source
* removed branch for old kernels
git-svn-id: http://svn.openslx.org/svn/openslx/contrib/dnbd2/trunk@1731 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'kernel/servers.c')
-rw-r--r-- | kernel/servers.c | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/kernel/servers.c b/kernel/servers.c index 7d5c229..52d565b 100644 --- a/kernel/servers.c +++ b/kernel/servers.c @@ -60,9 +60,17 @@ struct srv_info *fastest_server(uint16_t *srtt, dnbd2_device_t *dev) * This function can be enqueued in a workqueue. It removes srv_info * from the list of servers. */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) +void del_server_work(void *data) +#else void del_server_work(struct work_struct *work) +#endif { - struct srv_info *srv_info = container_of(work, struct srv_info, work); + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) + struct srv_info *srv_info = data; + #else + struct srv_info *srv_info = container_of(work, struct srv_info, work); + #endif dnbd2_device_t *dev = srv_info->dev; down(&dev->servers_mutex); @@ -80,9 +88,17 @@ void del_server_work(struct work_struct *work) * This function can be enqueued in a workqueue. Read comment on * schedule_activate_fastest in servers.h */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) +void activate_fastest_work(void *data) +#else void activate_fastest_work(struct work_struct *work) +#endif { - dnbd2_device_t *dev = container_of(work, dnbd2_device_t, work); + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) + dnbd2_device_t *dev = data; + #else + dnbd2_device_t *dev = container_of(work, dnbd2_device_t, work); + #endif struct srv_info *alt_srv, *next_srv; uint16_t min, srtt; int newsrv = 0; @@ -341,15 +357,21 @@ void enqueue_hb(struct srv_info *srv_info) void schedule_del_server(struct srv_info *srv_info) { - PREPARE_WORK(&srv_info->work, del_server_work); //, srv_info); - /* Change in /<linuxheaders>/include/linux/workqueue.h */ + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) + PREPARE_WORK(&srv_info->work, del_server_work, srv_info); + #else + PREPARE_WORK(&srv_info->work, del_server_work); + #endif schedule_work(&srv_info->work); } void schedule_activate_fastest(dnbd2_device_t *dev) { - PREPARE_WORK(&dev->work, activate_fastest_work); //, dev); - /* Change in /<linuxheaders>/include/linux/workqueue.h */ + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) + PREPARE_WORK(&dev->work, activate_fastest_work, dev); + #else + PREPARE_WORK(&dev->work, activate_fastest_work); + #endif schedule_work(&dev->work); } |