# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: package/.../lazyfs/linux-2.6.18.patch
# Copyright (C) 2006 The OpenSDE Project
#
# More information can be found in the files COPYING and README.
#
# This patch file is dual-licensed. It is available under the license the
# patched project is licensed under, as long as it is an OpenSource license
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
# of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
# --- SDE-COPYRIGHT-NOTE-END ---

--- ./configure.orig	2006-10-08 09:32:26.000000000 -0400
+++ ./configure	2006-10-08 09:33:27.000000000 -0400
@@ -835,6 +835,9 @@
 #include "confdefs.h"
 
 #include <linux/version.h>
+#ifndef UTS_RELEASE
+#include <linux/utsrelease.h>
+#endif
 #include <stdio.h>
 int main(void) {
 fputs(UTS_RELEASE, fopen("conftestversion", "w"));
--- lazyfs.c.orig	2004-08-15 12:16:41.000000000 -0400
+++ lazyfs.c	2006-10-08 12:18:13.000000000 -0400
@@ -268,7 +268,7 @@
 
 	next = dentry->d_subdirs.next;
 	while (next != &dentry->d_subdirs) {
-		struct dentry *c = list_entry(next, struct dentry, d_child);
+		struct dentry *c = list_entry(next, struct dentry, d_u.d_child);
 		show_refs(c, indent + 2);
 		next = next->next;
 	}
@@ -997,7 +997,7 @@
 	next = head->next;
 
 	while (next != head) {
-		struct dentry *child = list_entry(next, struct dentry, d_child);
+		struct dentry *child = list_entry(next, struct dentry, d_u.d_child);
 		struct lazy_de_info *info = child->d_fsdata;
 		next = next->next;
 
@@ -1036,7 +1036,7 @@
 #endif
 
 	/* Turn it into its own subtree */
-	list_del_init(&dentry->d_child);
+	list_del_init(&dentry->d_u.d_child);
 	if (atomic_read(&dentry->d_count) > 1) {
 		//printk("Dentry '%s' will be freed later\n",
 		//		dentry->d_name.name);
@@ -1044,7 +1044,7 @@
 		atomic_dec(&dentry->d_count);
 	} else {
 		/* (reusing d_child; noone else has a ref anyway) */
-		list_add(&dentry->d_child, to_be_removed);
+		list_add(&dentry->d_u.d_child, to_be_removed);
 	}
 
 	/* Break link to parent */
@@ -1076,7 +1076,7 @@
 resume:
 	while (next != &this_parent->d_subdirs) {
 		struct list_head *tmp = next;
-		struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
+		struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
 		next = tmp->next;
 		if (d_unhashed(dentry) || !dentry->d_inode)
 			continue;
@@ -1089,7 +1089,7 @@
 
 	/* Moving up to parent */
 
-	next = this_parent->d_child.next; 
+	next = this_parent->d_u.d_child.next; 
 	parent = this_parent->d_parent;
 	genocide_one(this_parent, &to_be_removed);
 		
@@ -1100,9 +1100,9 @@
 	spin_unlock(&dcache_lock);
 
 	list_for_each_safe(next, tmp, &to_be_removed) {
-		struct dentry *kid = list_entry(next, struct dentry, d_child);
+		struct dentry *kid = list_entry(next, struct dentry, d_u.d_child);
 		//printk("Removing '%s' now\n", kid->d_name.name);
-		list_del_init(&kid->d_child);
+		list_del_init(&kid->d_u.d_child);
 		dput(kid);
 	}
 }