File dazuko_redirfs_2.6.27.patch of Package dazuko

diff -Nru dazuko-2.3.6-pre2-a/dazuko_linux26.h dazuko-2.3.6-pre2-b/dazuko_linux26.h
--- dazuko-2.3.6-pre2-a/dazuko_linux26.h	2008-02-20 22:05:34.000000000 +0100
+++ dazuko-2.3.6-pre2-b/dazuko_linux26.h	2008-08-27 13:54:51.000000000 +0200
@@ -24,7 +24,13 @@
 #define DAZUKO_LINUX26_H
 
 #include <linux/module.h>
+#include <linux/version.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
 #include <asm/semaphore.h>
+#else
+#include <linux/semaphore.h>
+#endif
 
 #define	DEVICE_NAME		"dazuko"
 
diff -Nru dazuko-2.3.6-pre2-a/dazuko_redirfs.c dazuko-2.3.6-pre2-b/dazuko_redirfs.c
--- dazuko-2.3.6-pre2-a/dazuko_redirfs.c	2008-07-17 20:00:02.000000000 +0200
+++ dazuko-2.3.6-pre2-b/dazuko_redirfs.c	2008-08-27 15:18:23.000000000 +0200
@@ -66,19 +66,19 @@
 static int dev_major = -1;
 static int module_disabled = 0;
 
-enum redirfs_rv dazukoflt_permission(redirfs_context context, struct redirfs_args *args);
+enum redirfs_rv dazukoflt_open(redirfs_context context, struct redirfs_args *args);
 
 static redirfs_filter dazukoflt;
 
 static struct redirfs_filter_info dazukoflt_info = {
 	.owner = THIS_MODULE,
 	.name = "dazukoflt",
-	.priority = 1,
+	.priority = 860000000,
 	.active = 1,
 };
 
 static struct redirfs_op_info dazukoflt_op_info[] = {
-	{ REDIRFS_REG_IOP_PERMISSION, dazukoflt_permission, NULL },
+	{ REDIRFS_REG_FOP_OPEN, dazukoflt_open, NULL },
 	{ REDIRFS_OP_END, NULL, NULL }
 };
 
@@ -629,7 +629,7 @@
 
 /* system hooks */
 
-int dazuko_sys_generic(struct inode *inode, int mask, struct nameidata *nd)
+int dazuko_sys_generic(struct inode *inode, struct nameidata *nd)
 {
 	struct dazuko_file_struct *dfs = NULL;
 	int error = 0;
@@ -645,34 +645,6 @@
 
 	dazuko_bzero(&event_p, sizeof(event_p));
 
-	if ((mask & MAY_EXEC) != 0)
-	{
-		event = DAZUKO_ON_EXEC;
-		daemon_is_allowed = 0;
-	}
-	else
-	{
-		/* mask == 0 is passed in when a file is created */
-		if (mask == 0 || (mask & (MAY_WRITE|MAY_APPEND)) != 0)
-		{
-			if ((mask & MAY_READ) != 0)
-			{
-				event_p.flags = O_RDWR;
-			}
-			else
-			{
-				event_p.flags = O_WRONLY;
-			}
-
-			event_p.set_flags = 1;
-		}
-		else if ((mask & MAY_READ) != 0)
-		{
-			event_p.flags = O_RDONLY;
-			event_p.set_flags = 1;
-		}
-	}
-
 	xp_id.pid = current->pid;
 	xp_id.tgid = current->tgid;
 	xp_id.file = NULL;
@@ -721,18 +693,14 @@
 	return 0;
 }
 
-enum redirfs_rv dazukoflt_permission(redirfs_context context, struct redirfs_args *args)
+enum redirfs_rv dazukoflt_open(redirfs_context context, struct redirfs_args *args)
 {
-	if (!args->args.i_permission.nd)
-		return REDIRFS_CONTINUE;
-
-	if (!args->args.i_permission.mask)
-		return REDIRFS_CONTINUE;
+	struct nameidata nd;
 
-	if (!args->args.i_permission.nd)
-		return REDIRFS_CONTINUE;
+	nd.path.dentry = args->args.f_open.file->f_dentry;
+	nd.path.mnt = args->args.f_open.file->f_vfsmnt;
 
-	if (dazuko_sys_generic(args->args.i_permission.inode, args->args.i_permission.mask, args->args.i_permission.nd) != 0)
+	if (dazuko_sys_generic(args->args.f_open.file->f_dentry->d_inode, &nd) != 0)
 	{
 		args->rv.rv_int = -EACCES;
 		return REDIRFS_STOP;
@@ -804,20 +772,11 @@
 		return dev_major;
 	}
 
-#ifndef WITHOUT_UDEV
-#ifdef USE_CLASS
 	dazuko_class = class_create(THIS_MODULE, DEVICE_NAME);
-#if defined (CLASS_class_device_create_2_6_15)
-	class_device_create(dazuko_class, NULL, MKDEV(dev_major, 0), NULL, DEVICE_NAME);
-#elif defined (CLASS_device_create_2_6_26)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
 	device_create(dazuko_class, NULL, MKDEV(dev_major, 0), DEVICE_NAME);
 #else
-	class_device_create(dazuko_class, MKDEV(dev_major, 0), NULL, DEVICE_NAME);
-#endif
-#else
-	dazuko_class = class_simple_create(THIS_MODULE, DEVICE_NAME);
-	class_simple_device_add(dazuko_class, MKDEV(dev_major, 0), NULL, DEVICE_NAME);
-#endif
+	device_create(dazuko_class, NULL, MKDEV(dev_major, 0), NULL, DEVICE_NAME);
 #endif
 
 	return 0;
@@ -826,21 +785,9 @@
 inline int xp_sys_unhook()
 {
 	if (!module_disabled) {
-		unregister_chrdev(dev_major, DEVICE_NAME);
-
-#ifndef WITHOUT_UDEV
-#ifdef USE_CLASS
-#if defined (CLASS_device_create_2_6_26)
 		device_destroy(dazuko_class, MKDEV(dev_major, 0));
-#else
-		class_device_destroy(dazuko_class, MKDEV(dev_major, 0));
-#endif
 		class_destroy(dazuko_class);
-#else
-		class_simple_device_remove(MKDEV(dev_major, 0));
-		class_simple_destroy(dazuko_class);
-#endif
-#endif
+		unregister_chrdev(dev_major, DEVICE_NAME);
 	}
 
 	redirfs_delete_filter(dazukoflt);