summaryrefslogtreecommitdiffstats
path: root/kernel/servers.c
diff options
context:
space:
mode:
authorSebastian Schmelzer2008-04-08 20:04:39 +0200
committerSebastian Schmelzer2008-04-08 20:04:39 +0200
commit8c9150ca2220706abb9f7642fdc26f779800b3b7 (patch)
tree5e92763e576d47ecd9d88e76eda9b58f8d27b7fb /kernel/servers.c
parentImport dnbd* from the former openslx-contrib repo as of revision 92. (diff)
downloaddnbd2-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.c34
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);
}