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