From b6f411ac2893b8ba8f5af078f035708370de32c3 Mon Sep 17 00:00:00 2001
From: mb <mb@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Mon, 28 Feb 2011 15:10:55 +0000
Subject: [PATCH] mini_fo: More 2.6.38 fixes

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25788 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 .../218-mini_fo_fix_2_6_38.patch              | 63 ++++++++++++++++---
 1 file changed, 53 insertions(+), 10 deletions(-)

diff --git a/target/linux/generic/patches-2.6.38/218-mini_fo_fix_2_6_38.patch b/target/linux/generic/patches-2.6.38/218-mini_fo_fix_2_6_38.patch
index 6807c599a..44d5622a0 100644
--- a/target/linux/generic/patches-2.6.38/218-mini_fo_fix_2_6_38.patch
+++ b/target/linux/generic/patches-2.6.38/218-mini_fo_fix_2_6_38.patch
@@ -1,6 +1,17 @@
---- a/fs/mini_fo/dentry.c
-+++ b/fs/mini_fo/dentry.c
-@@ -96,7 +96,7 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t 
+Index: linux-2.6.38-rc6/fs/mini_fo/dentry.c
+===================================================================
+--- linux-2.6.38-rc6.orig/fs/mini_fo/dentry.c	2011-02-28 15:34:06.542221268 +0100
++++ linux-2.6.38-rc6/fs/mini_fo/dentry.c	2011-02-28 16:05:42.307346739 +0100
+@@ -78,7 +78,7 @@ mini_fo_d_revalidate(dentry_t *dentry, i
+ 
+ 
+ STATIC int
+-mini_fo_d_hash(dentry_t *dentry, qstr_t *name)
++mini_fo_d_hash(const struct dentry *dentry, const struct inode *inode, qstr_t *name)
+ {
+ 	int err = 0;
+ 	dentry_t *hidden_dentry;
+@@ -96,7 +96,7 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t
  		if(hidden_sto_dentry &&
  		   hidden_sto_dentry->d_op &&
  		   hidden_sto_dentry->d_op->d_hash) {
@@ -9,7 +20,7 @@
  		}
  		goto out;
  	}
-@@ -106,7 +106,7 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t 
+@@ -106,7 +106,7 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t
  		if(hidden_dentry &&
  		   hidden_dentry->d_op &&
  		   hidden_dentry->d_op->d_hash) {
@@ -18,7 +29,7 @@
  		}
  		goto out;
  	}
-@@ -116,14 +116,14 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t 
+@@ -116,14 +116,14 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t
  		if(hidden_sto_dentry &&
  		   hidden_sto_dentry->d_op &&
  		   hidden_sto_dentry->d_op->d_hash) {
@@ -35,13 +46,45 @@
  			goto out;
  		}
  	}
-@@ -148,7 +148,8 @@ mini_fo_d_compare(dentry_t *dentry, qstr
- 		hidden_dentry = dtohd(dentry);
+@@ -136,21 +136,25 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t
+ 
+ 
+ STATIC int
+-mini_fo_d_compare(dentry_t *dentry, qstr_t *a, qstr_t *b)
++mini_fo_d_compare(const struct dentry *dentry_a, const struct inode *inode_a,
++		  const struct dentry *dentry_b, const struct inode *inode_b,
++		  unsigned int alen, const char *a, const struct qstr *b)
+ {
+ 	int err;
+ 	dentry_t *hidden_dentry=NULL;
+ 
+ 	/* hidden_dentry = mini_fo_hidden_dentry(dentry); */
+-	if(dtohd2(dentry))
+-		hidden_dentry = dtohd2(dentry);
+-	else if(dtohd(dentry))
+-		hidden_dentry = dtohd(dentry);
++	if(dtohd2(dentry_a))
++		hidden_dentry = dtohd2(dentry_a);
++	else if(dtohd(dentry_a))
++		hidden_dentry = dtohd(dentry_a);
  
  	if (hidden_dentry && hidden_dentry->d_op && hidden_dentry->d_op->d_compare) {
 -		err = hidden_dentry->d_op->d_compare(hidden_dentry, a, b);
-+		err = hidden_dentry->d_op->d_compare(NULL, NULL, NULL, NULL,
-+							hidden_dentry->d_name.len, a, b);
++		err = hidden_dentry->d_op->d_compare(hidden_dentry, hidden_dentry->d_inode,
++						     dentry_b, inode_b,
++						     alen, a, b);
  	} else {
- 		err = ((a->len != b->len) || memcmp(a->name, b->name, b->len));
+-		err = ((a->len != b->len) || memcmp(a->name, b->name, b->len));
++		err = ((alen != b->len) || memcmp(a, b->name, b->len));
  	}
+ 
+ 	return err;
+@@ -158,7 +162,7 @@ mini_fo_d_compare(dentry_t *dentry, qstr
+ 
+ 
+ int
+-mini_fo_d_delete(dentry_t *dentry)
++mini_fo_d_delete(const struct dentry *dentry)
+ {
+ 	dentry_t *hidden_dentry;
+ 	dentry_t *hidden_sto_dentry;
-- 
2.20.1