44d5622a03b46763c3d406b18b40b0fc4f1a1341
[openwrt.git] / target / linux / generic / patches-2.6.38 / 218-mini_fo_fix_2_6_38.patch
1 Index: linux-2.6.38-rc6/fs/mini_fo/dentry.c
2 ===================================================================
3 --- linux-2.6.38-rc6.orig/fs/mini_fo/dentry.c   2011-02-28 15:34:06.542221268 +0100
4 +++ linux-2.6.38-rc6/fs/mini_fo/dentry.c        2011-02-28 16:05:42.307346739 +0100
5 @@ -78,7 +78,7 @@ mini_fo_d_revalidate(dentry_t *dentry, i
6  
7  
8  STATIC int
9 -mini_fo_d_hash(dentry_t *dentry, qstr_t *name)
10 +mini_fo_d_hash(const struct dentry *dentry, const struct inode *inode, qstr_t *name)
11  {
12         int err = 0;
13         dentry_t *hidden_dentry;
14 @@ -96,7 +96,7 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t
15                 if(hidden_sto_dentry &&
16                    hidden_sto_dentry->d_op &&
17                    hidden_sto_dentry->d_op->d_hash) {
18 -                       err = hidden_sto_dentry->d_op->d_hash(hidden_sto_dentry, name);
19 +                       err = hidden_sto_dentry->d_op->d_hash(hidden_sto_dentry, hidden_sto_dentry->d_inode, name);
20                 }
21                 goto out;
22         }
23 @@ -106,7 +106,7 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t
24                 if(hidden_dentry &&
25                    hidden_dentry->d_op &&
26                    hidden_dentry->d_op->d_hash) {
27 -                       err = hidden_dentry->d_op->d_hash(hidden_dentry, name);
28 +                       err = hidden_dentry->d_op->d_hash(hidden_dentry, hidden_dentry->d_inode, name);
29                 }
30                 goto out;
31         }
32 @@ -116,14 +116,14 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t
33                 if(hidden_sto_dentry &&
34                    hidden_sto_dentry->d_op &&
35                    hidden_sto_dentry->d_op->d_hash) {
36 -                       err = hidden_sto_dentry->d_op->d_hash(hidden_sto_dentry, name);
37 +                       err = hidden_sto_dentry->d_op->d_hash(hidden_sto_dentry, hidden_sto_dentry->d_inode, name);
38                         goto out;
39                 }
40                 hidden_dentry = dtohd(dentry);
41                 if(hidden_dentry &&
42                    hidden_dentry->d_op &&
43                    hidden_dentry->d_op->d_hash) {
44 -                       err = hidden_dentry->d_op->d_hash(hidden_dentry, name);
45 +                       err = hidden_dentry->d_op->d_hash(hidden_dentry, hidden_dentry->d_inode, name);
46                         goto out;
47                 }
48         }
49 @@ -136,21 +136,25 @@ mini_fo_d_hash(dentry_t *dentry, qstr_t
50  
51  
52  STATIC int
53 -mini_fo_d_compare(dentry_t *dentry, qstr_t *a, qstr_t *b)
54 +mini_fo_d_compare(const struct dentry *dentry_a, const struct inode *inode_a,
55 +                 const struct dentry *dentry_b, const struct inode *inode_b,
56 +                 unsigned int alen, const char *a, const struct qstr *b)
57  {
58         int err;
59         dentry_t *hidden_dentry=NULL;
60  
61         /* hidden_dentry = mini_fo_hidden_dentry(dentry); */
62 -       if(dtohd2(dentry))
63 -               hidden_dentry = dtohd2(dentry);
64 -       else if(dtohd(dentry))
65 -               hidden_dentry = dtohd(dentry);
66 +       if(dtohd2(dentry_a))
67 +               hidden_dentry = dtohd2(dentry_a);
68 +       else if(dtohd(dentry_a))
69 +               hidden_dentry = dtohd(dentry_a);
70  
71         if (hidden_dentry && hidden_dentry->d_op && hidden_dentry->d_op->d_compare) {
72 -               err = hidden_dentry->d_op->d_compare(hidden_dentry, a, b);
73 +               err = hidden_dentry->d_op->d_compare(hidden_dentry, hidden_dentry->d_inode,
74 +                                                    dentry_b, inode_b,
75 +                                                    alen, a, b);
76         } else {
77 -               err = ((a->len != b->len) || memcmp(a->name, b->name, b->len));
78 +               err = ((alen != b->len) || memcmp(a, b->name, b->len));
79         }
80  
81         return err;
82 @@ -158,7 +162,7 @@ mini_fo_d_compare(dentry_t *dentry, qstr
83  
84  
85  int
86 -mini_fo_d_delete(dentry_t *dentry)
87 +mini_fo_d_delete(const struct dentry *dentry)
88  {
89         dentry_t *hidden_dentry;
90         dentry_t *hidden_sto_dentry;