Package: enhanceio-dkms
Version: 0+git20130620-4
Severity: important
Tags: patch

Dear Maintainer,

The enhanceio kernel module from this package fails to build on kernels
starting from version 3.18. The reason is the removal of the deprecated
function smp_mb__after_clear_bit. The proper fix is to replace it with
smp_mb__after_atomic. I include a patch for the enhanceio package which
implements these changes. I also published them on my GitHub fork of
enhanceio [1]. There is still an outstanding pull request to merge these
changes and those fixing 3.17 into the upstream repository [2].

Thanks for maintaining this package,
Philipp

[1] https://github.com/tukss/EnhanceIO
[2] https://github.com/stec-inc/EnhanceIO/pull/84


-- System Information:
Debian Release: 8.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.17.0-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages enhanceio-dkms depends on:
ii  dkms  2.2.0.3-2

Versions of packages enhanceio-dkms recommends:
ii  enhanceio       0+git20130620-4
ii  libgcc-4.8-dev  4.8.3-18

enhanceio-dkms suggests no packages.

-- no debconf information
diff -Nru enhanceio-0+git20130620/debian/changelog 
enhanceio-0+git20130620/debian/changelog
--- enhanceio-0+git20130620/debian/changelog    2014-11-20 05:03:15.000000000 
+0100
+++ enhanceio-0+git20130620/debian/changelog    2014-12-15 12:38:50.000000000 
+0100
@@ -1,3 +1,10 @@
+enhanceio (0+git20130620-4.1~edelmann1) experimental; urgency=medium
+
+  * Non-maintainer upload.
+  * New patch for compatibility with Linux 3.18.
+
+ -- Philipp Edelmann <edelm...@fs.tum.de>  Mon, 15 Dec 2014 12:37:56 +0100
+
 enhanceio (0+git20130620-4) experimental; urgency=medium
 
   [ Philipp Edelmann <edelm...@fs.tum.de> ]
diff -Nru enhanceio-0+git20130620/debian/patches/kernel-3.18.patch 
enhanceio-0+git20130620/debian/patches/kernel-3.18.patch
--- enhanceio-0+git20130620/debian/patches/kernel-3.18.patch    1970-01-01 
01:00:00.000000000 +0100
+++ enhanceio-0+git20130620/debian/patches/kernel-3.18.patch    2014-12-15 
12:36:54.000000000 +0100
@@ -0,0 +1,96 @@
+--- a/Driver/enhanceio/eio_conf.c
++++ b/Driver/enhanceio/eio_conf.c
+@@ -101,6 +101,10 @@
+       return 0;
+ }
+ 
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0))
++#define smp_mb__after_atomic smp_mb__after_clear_bit
++#endif
++
+ /*
+  * Check if the System RAM threshold > requested memory, don't care
+  * if threshold is set to 0. Return value is 0 for fail and 1 for success.
+@@ -1853,7 +1857,7 @@
+       dmc->next_cache = cache_list_head;
+       cache_list_head = dmc;
+       clear_bit(EIO_UPDATE_LIST, (void *)&eio_control->synch_flags);
+-      smp_mb__after_clear_bit();
++      smp_mb__after_atomic();
+       wake_up_bit((void *)&eio_control->synch_flags, EIO_UPDATE_LIST);
+ 
+       prev_set = -1;
+@@ -1918,7 +1922,7 @@
+               nodepp = &((*nodepp)->next_cache);
+       }
+       clear_bit(EIO_UPDATE_LIST, (void *)&eio_control->synch_flags);
+-      smp_mb__after_clear_bit();
++      smp_mb__after_atomic();
+       wake_up_bit((void *)&eio_control->synch_flags, EIO_UPDATE_LIST);
+ bad5:
+       eio_kcached_client_destroy(dmc);
+@@ -2072,7 +2076,7 @@
+               nodepp = &((*nodepp)->next_cache);
+       }
+       clear_bit(EIO_UPDATE_LIST, &eio_control->synch_flags);
+-      smp_mb__after_clear_bit();
++      smp_mb__after_atomic();
+       wake_up_bit((void *)&eio_control->synch_flags, EIO_UPDATE_LIST);
+ 
+ out:
+@@ -2397,7 +2401,7 @@
+                              TASK_UNINTERRUPTIBLE);
+       if (eio_reboot_notified == EIO_REBOOT_HANDLING_DONE) {
+               clear_bit(EIO_HANDLE_REBOOT, (void *)&eio_control->synch_flags);
+-              smp_mb__after_clear_bit();
++              smp_mb__after_atomic();
+               wake_up_bit((void *)&eio_control->synch_flags,
+                           EIO_HANDLE_REBOOT);
+               return NOTIFY_DONE;
+@@ -2425,12 +2429,12 @@
+               eio_md_store(dmc);
+       }
+       clear_bit(EIO_UPDATE_LIST, (void *)&eio_control->synch_flags);
+-      smp_mb__after_clear_bit();
++      smp_mb__after_atomic();
+       wake_up_bit((void *)&eio_control->synch_flags, EIO_UPDATE_LIST);
+ 
+       eio_reboot_notified = EIO_REBOOT_HANDLING_DONE;
+       clear_bit(EIO_HANDLE_REBOOT, (void *)&eio_control->synch_flags);
+-      smp_mb__after_clear_bit();
++      smp_mb__after_atomic();
+       wake_up_bit((void *)&eio_control->synch_flags, EIO_HANDLE_REBOOT);
+       return NOTIFY_DONE;
+ }
+--- a/Driver/enhanceio/eio_ttc.c
++++ b/Driver/enhanceio/eio_ttc.c
+@@ -36,6 +36,11 @@
+ #define wait_on_bit_lock_action wait_on_bit_lock
+ #endif
+ 
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0))
++#define smp_mb__after_atomic smp_mb__after_clear_bit
++#endif
++
++
+ static struct rw_semaphore eio_ttc_lock[EIO_HASHTBL_SIZE];
+ static struct list_head eio_ttc_list[EIO_HASHTBL_SIZE];
+ 
+@@ -1507,7 +1512,7 @@
+                              TASK_UNINTERRUPTIBLE);
+       if (eio_reboot_notified == EIO_REBOOT_HANDLING_DONE) {
+               clear_bit(EIO_HANDLE_REBOOT, (void *)&eio_control->synch_flags);
+-              smp_mb__after_clear_bit();
++              smp_mb__after_atomic();
+               wake_up_bit((void *)&eio_control->synch_flags,
+                           EIO_HANDLE_REBOOT);
+               return 0;
+@@ -1609,7 +1614,7 @@
+ 
+       eio_reboot_notified = EIO_REBOOT_HANDLING_DONE;
+       clear_bit(EIO_HANDLE_REBOOT, (void *)&eio_control->synch_flags);
+-      smp_mb__after_clear_bit();
++      smp_mb__after_atomic();
+       wake_up_bit((void *)&eio_control->synch_flags, EIO_HANDLE_REBOOT);
+       return 0;
+ }
diff -Nru enhanceio-0+git20130620/debian/patches/series 
enhanceio-0+git20130620/debian/patches/series
--- enhanceio-0+git20130620/debian/patches/series       2014-11-20 
04:53:41.000000000 +0100
+++ enhanceio-0+git20130620/debian/patches/series       2014-12-15 
12:35:54.000000000 +0100
@@ -3,3 +3,4 @@
 kernel-3.17.patch
 make.patch
 path2eio_cli.patch
+kernel-3.18.patch

Attachment: signature.asc
Description: Digital signature

Reply via email to