diff -Nur vmblock-only.orig/include/compat_namei.h vmblock-only/include/compat_namei.h
--- vmblock-only.orig/include/compat_namei.h	2008-01-17 06:17:00.000000000 +0100
+++ vmblock-only/include/compat_namei.h	2008-04-27 12:00:19.000000000 +0200
@@ -23,6 +23,31 @@
 #include <linux/namei.h>
 #endif
 
+/*
+ * In 2.6.25-rc2, dentry and mount objects were removed from the nameidata
+ * struct. They were both replaced with a struct path.
+ *
+ * Backported from open-vm-tools
+ * by Alexander Griesser <work@tuxx-home.at>, 2008-04-27
+ */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
+#define compat_vmw_nd_to_dentry(nd) (nd).path.dentry
+#else
+#define compat_vmw_nd_to_dentry(nd) (nd).dentry
+#endif
+
+/* In 2.6.25-rc2, path_release(&nd) was replaced with path_put(&nd.path).
+ *
+ * Backported from open-vm-tools
+ * by Alexander Griesser <work@tuxx-home.at>, 2008-04-27
+ * */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
+#define compat_path_release(nd) path_put(&(nd)->path)
+#else
+#define compat_path_release(nd) path_release(nd)
+#endif
+
+
 /* path_lookup was exported in 2.4.25 */
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25)
 #define compat_path_lookup(path, flags, nd)     path_lookup(path, flags, nd)
diff -Nur vmblock-only.orig/include/compat_slab.h vmblock-only/include/compat_slab.h
--- vmblock-only.orig/include/compat_slab.h	2008-01-17 06:17:00.000000000 +0100
+++ vmblock-only/include/compat_slab.h	2008-04-27 12:17:01.000000000 +0200
@@ -50,4 +50,22 @@
 		kmem_cache_create(name, size, align, flags, ctor)
 #endif
 
+/*
+ * Up to 2.6.23 kmem_cache constructor has three arguments - pointer to block to
+ * prepare (aka "this"), from which cache it came, and some unused flags.  After
+ * 2.6.23 flags were removed, and order of "this" and cache parameters was swapped...
+ *
+ * Backported from open-vm-tools
+ * by Alexander Griesser <work@tuxx-home.at>, 2008-04-27
+ */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 23) && !defined(VMW_KMEMCR_CTOR_HAS_3_ARGS)
+#  define VMW_KMEMCR_CTOR_HAS_3_ARGS
+#endif
+#ifdef VMW_KMEMCR_CTOR_HAS_3_ARGS
+typedef void compat_kmem_cache_ctor(void *, compat_kmem_cache *, unsigned long);
+#else
+typedef void compat_kmem_cache_ctor(compat_kmem_cache *, void *);
+#endif
+
+
 #endif /* __COMPAT_SLAB_H__ */
diff -Nur vmblock-only.orig/include/compat_wait.h vmblock-only/include/compat_wait.h
--- vmblock-only.orig/include/compat_wait.h	2008-01-17 06:17:00.000000000 +0100
+++ vmblock-only/include/compat_wait.h	2008-04-27 12:09:07.000000000 +0200
@@ -52,13 +52,13 @@
  * 2.4.20-wolk4.0s.
  */
 
-#if VMW_HAVE_EPOLL // {
+#ifdef VMW_HAVE_EPOLL // {
 #define compat_poll_wqueues struct poll_wqueues
 #else // } {
 #define compat_poll_wqueues poll_table
 #endif // }
 
-#if VMW_HAVE_EPOLL // {
+#ifdef VMW_HAVE_EPOLL // {
 
 /* If prototype does not match, build will abort here */
 extern void poll_initwait(compat_poll_wqueues *);
diff -Nur vmblock-only.orig/include/driver-config.h vmblock-only/include/driver-config.h
--- vmblock-only.orig/include/driver-config.h	2008-01-17 06:17:00.000000000 +0100
+++ vmblock-only/include/driver-config.h	2008-04-27 12:11:27.000000000 +0200
@@ -35,6 +35,23 @@
 #include <linux/autoconf.h>
 #include "compat_version.h"
 
+/*
+ * I still haven't figured out why the automagic checks in Makefile.kernel
+ * don't work. They call the script vm_check_build which isn't available
+ * on any of my systems so `make` is unable to find out whether this features
+ * need to be included or not.
+ *
+ * A simple workaround is to rely on the kernel configuration as shown below.
+ * If CONFIG_EPOLL is set, we have EPOLL set, basta.
+ *
+ * by Alexander Griesser <work@tuxx-home.at>, 2008-03-14
+ */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#ifdef CONFIG_EPOLL
+#define VMW_HAVE_EPOLL 1
+#endif
+#endif
+
 /* We rely on Kernel Module support.  Check here. */
 #ifndef CONFIG_MODULES
 #error "No Module support in this kernel.  Please configure with CONFIG_MODULES"
@@ -59,6 +76,18 @@
 #endif
 #endif
 
+/*
+ * Force the uintptr_t definition to come from linux/types.h instead of
+ * vm_basic_types.h
+ *
+ * Backported from open-vm-tools
+ * by Alexander Griesser <work@tuxx-home.at>, 2008-04-27
+ */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#   include <linux/types.h>
+#   define _STDINT_H 1
+#endif
+
 #ifndef __KERNEL__
 #define __KERNEL__
 #endif
diff -Nur vmblock-only.orig/linux/dentry.c vmblock-only/linux/dentry.c
--- vmblock-only.orig/linux/dentry.c	2008-01-17 06:17:00.000000000 +0100
+++ vmblock-only/linux/dentry.c	2008-04-27 12:02:30.000000000 +0200
@@ -112,8 +112,8 @@
       LOG(4, "DentryOpRevalidate: [%s] no longer exists\n", iinfo->name);
       return 0;
    }
-   ret = actualNd.dentry && actualNd.dentry->d_inode;
-   path_release(&actualNd);
+   ret = compat_vmw_nd_to_dentry(actualNd) && compat_vmw_nd_to_dentry(actualNd)->d_inode;
+   compat_path_release(&actualNd);
 
    LOG(8, "DentryOpRevalidate: [%s] %s revalidated\n",
        iinfo->name, ret ? "" : "not");
diff -Nur vmblock-only.orig/linux/filesystem.c vmblock-only/linux/filesystem.c
--- vmblock-only.orig/linux/filesystem.c	2008-01-17 06:17:00.000000000 +0100
+++ vmblock-only/linux/filesystem.c	2008-04-27 12:22:18.000000000 +0200
@@ -67,8 +67,7 @@
 
 
 /* Utility */
-static void InodeCacheCtor(void *slabelem,
-                           compat_kmem_cache *cache, unsigned long flags);
+static compat_kmem_cache_ctor InodeCacheCtor;
 
 
 /* Variables */
@@ -334,13 +333,20 @@
  * Side effects:
  *    None.
  *
+ * CTOR_HAS_3_ARGS check on top backported from open-vm-tools
+ * by Alexander Griesser <work@tuxx-home.at>, 2008-04-27
  *----------------------------------------------------------------------------
  */
-
+#ifdef VMW_KMEMCR_CTOR_HAS_3_ARGS
 static void
 InodeCacheCtor(void *slabElem,           // IN: allocated slab item to initialize
                compat_kmem_cache *cache, // IN: cache slab is from
                unsigned long flags)      // IN: flags associated with allocation
+#else
+static void
+InodeCacheCtor(compat_kmem_cache *cache, // IN: cache slab is from
+               void *slabElem)           // IN: allocated slab item to initialize
+#endif
 {
 #ifdef VMW_EMBED_INODE
    VMBlockInodeInfo *iinfo = (VMBlockInodeInfo *)slabElem;

