|
|
|
# --- 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);
|
|
|
|
}
|
|
|
|
}
|