diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2010-12-17 16:13:35 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-12-17 16:14:08 +0000 |
commit | 81f3d46fa5f16bfb8a0ee2e5569370337abe948c (patch) | |
tree | ec91758a8fea58a9d254be7b1f47681dc4d613b0 /meta | |
parent | 3abc81b79850f42e8e041feab3acd52b574026f9 (diff) | |
download | poky-81f3d46fa5f16bfb8a0ee2e5569370337abe948c.tar.gz |
pseudo: Fixup for cache problem
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-devtools/pseudo/pseudo/895fa7e359e8026a608fba052c2994e42901e45f.patch | 235 | ||||
-rw-r--r-- | meta/recipes-devtools/pseudo/pseudo_git.bb | 5 |
2 files changed, 238 insertions, 2 deletions
diff --git a/meta/recipes-devtools/pseudo/pseudo/895fa7e359e8026a608fba052c2994e42901e45f.patch b/meta/recipes-devtools/pseudo/pseudo/895fa7e359e8026a608fba052c2994e42901e45f.patch new file mode 100644 index 0000000000..d8c229541e --- /dev/null +++ b/meta/recipes-devtools/pseudo/pseudo/895fa7e359e8026a608fba052c2994e42901e45f.patch | |||
@@ -0,0 +1,235 @@ | |||
1 | From 895fa7e359e8026a608fba052c2994e42901e45f Mon Sep 17 00:00:00 2001 | ||
2 | From: Mark Hatle <mark.hatle@windriver.com> | ||
3 | Date: Fri, 17 Dec 2010 01:23:47 +0000 | ||
4 | Subject: Revert "Add a cache of the last object found in pseudo_op" | ||
5 | |||
6 | This reverts commit 49d4d35918d457b0e9206679ecad3b9c84f11e66. | ||
7 | |||
8 | Conflicts: | ||
9 | |||
10 | ChangeLog.txt | ||
11 | --- | ||
12 | diff --git a/ChangeLog.txt b/ChangeLog.txt | ||
13 | index 1db8c7d..200b32e 100644 | ||
14 | --- a/ChangeLog.txt | ||
15 | +++ b/ChangeLog.txt | ||
16 | @@ -9,7 +9,6 @@ | ||
17 | * (mhatle) as a result of profiling, optimize inode search | ||
18 | * (mhatle) rearrange the pseudo_op file data operations to reduce | ||
19 | the number of selects. | ||
20 | - * (mhatle) add the ability to cache the last select result | ||
21 | * (mhatle) change the indexing in pseudo_db.c | ||
22 | |||
23 | 2010-12-14: | ||
24 | diff --git a/pseudo.c b/pseudo.c | ||
25 | index 3979fd8..6b965be 100644 | ||
26 | --- a/pseudo.c | ||
27 | +++ b/pseudo.c | ||
28 | @@ -425,9 +425,6 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) { | ||
29 | int found_path = 0, found_ino = 0; | ||
30 | int prefer_ino = 0; | ||
31 | |||
32 | - static pseudo_msg_t cache_msg = { .op = 0 }; | ||
33 | - static char * cache_path = NULL; | ||
34 | - | ||
35 | if (!msg) | ||
36 | return 1; | ||
37 | |||
38 | @@ -471,59 +468,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) { | ||
39 | |||
40 | /* Lookup the full path, with inode and dev if available */ | ||
41 | if (msg->pathlen && msg->dev && msg->ino) { | ||
42 | - if (cache_msg.pathlen == msg->pathlen && | ||
43 | - cache_msg.dev == msg->dev && | ||
44 | - cache_msg.ino == msg->ino && | ||
45 | - !strcmp(cache_path, msg->path)) { | ||
46 | - /* Found it in the cache! */ | ||
47 | -#ifdef NPROFILE | ||
48 | - pseudo_diag("cache hit -- by_file_exact\n"); | ||
49 | -#endif | ||
50 | - /* Change the cache to match the msg */ | ||
51 | - cache_msg.type = msg->type; | ||
52 | - cache_msg.op = msg->op; | ||
53 | - cache_msg.result = msg->result; | ||
54 | - cache_msg.access = msg->access; | ||
55 | - cache_msg.fd = msg->fd; | ||
56 | -#ifdef NVALIDATE | ||
57 | - if (!pdb_find_file_exact(msg)) { | ||
58 | - if (cache_msg.pathlen != msg->pathlen || | ||
59 | - cache_msg.dev != msg->dev || | ||
60 | - cache_msg.ino != msg->ino || | ||
61 | - cache_msg.uid != msg->uid || | ||
62 | - cache_msg.gid != msg->gid || | ||
63 | - cache_msg.mode != msg->mode || | ||
64 | - cache_msg.rdev != msg->rdev || | ||
65 | - cache_msg.nlink != msg->nlink || | ||
66 | - cache_msg.deleting != msg->deleting) { | ||
67 | - pseudo_diag("Cache mismatch [%s]: Database differs from cache\n" | ||
68 | - " cache vs result:\n" | ||
69 | - " dev (%llu,%llu) ino (%llu,%llu)\n" | ||
70 | - " uid (%d,%d) gid (%d,%d) mode (0%o,0%o)\n" | ||
71 | - " rdev (%llu,%llu) nlink (%d,%d) deleting (%d,%d)\n", | ||
72 | - msg->pathlen ? msg->path : "no path", | ||
73 | - (unsigned long long) cache_msg.dev, (unsigned long long) msg->dev, | ||
74 | - (unsigned long long) cache_msg.ino, (unsigned long long) msg->ino, | ||
75 | - (unsigned long long) cache_msg.uid, (unsigned int) msg->uid, | ||
76 | - (unsigned long long) cache_msg.gid, (unsigned int) msg->gid, | ||
77 | - cache_msg.mode, msg->mode, | ||
78 | - (unsigned long long) cache_msg.rdev, (unsigned int) msg->rdev, | ||
79 | - cache_msg.nlink, msg->nlink, | ||
80 | - cache_msg.deleting, msg->deleting); | ||
81 | - } | ||
82 | - } else { | ||
83 | - pseudo_diag("Cache mismatch [%s]: Not found in DB\n", | ||
84 | - msg->pathlen ? msg->path : "no path"); | ||
85 | - } | ||
86 | -#endif | ||
87 | - | ||
88 | - by_path = cache_msg; | ||
89 | - by_ino = cache_msg; | ||
90 | - /* no need to restore msg */ | ||
91 | - found_path = 1; | ||
92 | - found_ino = 1; | ||
93 | - path_by_ino = msg->path; | ||
94 | - } else if (!pdb_find_file_exact(msg)) { | ||
95 | + if (!pdb_find_file_exact(msg)) { | ||
96 | /* restore header contents */ | ||
97 | by_path = *msg; | ||
98 | by_ino = *msg; | ||
99 | @@ -539,51 +484,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) { | ||
100 | if (msg->pathlen) { | ||
101 | /* for now, don't canonicalize paths anymore */ | ||
102 | /* used to do it here, but now doing it in client */ | ||
103 | - if (cache_msg.pathlen == msg->pathlen && | ||
104 | - !strcmp(cache_path, msg->path)) { | ||
105 | -#ifdef NPROFILE | ||
106 | - pseudo_diag("cache hit -- by_path\n"); | ||
107 | -#endif | ||
108 | - /* Change the cache to match the msg */ | ||
109 | - cache_msg.type = msg->type; | ||
110 | - cache_msg.op = msg->op; | ||
111 | - cache_msg.result = msg->result; | ||
112 | - cache_msg.access = msg->access; | ||
113 | - cache_msg.fd = msg->fd; | ||
114 | -#ifdef NVALIDATE | ||
115 | - if (!pdb_find_file_exact(msg)) { | ||
116 | - if (cache_msg.pathlen != msg->pathlen || | ||
117 | - cache_msg.dev != msg->dev || | ||
118 | - cache_msg.ino != msg->ino || | ||
119 | - cache_msg.uid != msg->uid || | ||
120 | - cache_msg.gid != msg->gid || | ||
121 | - cache_msg.mode != msg->mode || | ||
122 | - cache_msg.rdev != msg->rdev || | ||
123 | - cache_msg.nlink != msg->nlink || | ||
124 | - cache_msg.deleting != msg->deleting) { | ||
125 | - pseudo_diag("Cache mismatch [%s]: Database differs from cache\n" | ||
126 | - " cache vs result:\n" | ||
127 | - " dev (%llu,%llu) ino (%llu,%llu)\n" | ||
128 | - " uid (%d,%d) gid (%d,%d) mode (0%o,0%o)\n" | ||
129 | - " rdev (%llu,%llu) nlink (%d,%d) deleting (%d,%d)\n", | ||
130 | - msg->pathlen ? msg->path : "no path", | ||
131 | - (unsigned long long) cache_msg.dev, (unsigned long long) msg->dev, | ||
132 | - (unsigned long long) cache_msg.ino, (unsigned long long) msg->ino, | ||
133 | - (unsigned long long) cache_msg.uid, (unsigned int) msg->uid, | ||
134 | - (unsigned long long) cache_msg.gid, (unsigned int) msg->gid, | ||
135 | - cache_msg.mode, msg->mode, | ||
136 | - (unsigned long long) cache_msg.rdev, (unsigned int) msg->rdev, | ||
137 | - cache_msg.nlink, msg->nlink, | ||
138 | - cache_msg.deleting, msg->deleting); | ||
139 | - } | ||
140 | - } else { | ||
141 | - pseudo_diag("Cache mismatch [%s]: Not found in DB\n", | ||
142 | - msg->pathlen ? msg->path : "no path"); | ||
143 | - } | ||
144 | -#endif | ||
145 | - by_path = cache_msg; | ||
146 | - found_path = 1; | ||
147 | - } else if (!pdb_find_file_path(msg)) { | ||
148 | + if (!pdb_find_file_path(msg)) { | ||
149 | by_path = *msg; | ||
150 | found_path = 1; | ||
151 | } else { | ||
152 | @@ -594,51 +495,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) { | ||
153 | } | ||
154 | /* search on original inode -- in case of mismatch */ | ||
155 | if (msg->dev && msg->ino) { | ||
156 | - if (cache_msg.dev == msg->dev && | ||
157 | - cache_msg.ino == msg->ino) { | ||
158 | -#ifdef NPROFILE | ||
159 | - pseudo_diag("cache hit -- by_ino\n"); | ||
160 | -#endif | ||
161 | - /* Change the cache to match the msg */ | ||
162 | - cache_msg.type = msg->type; | ||
163 | - cache_msg.op = msg->op; | ||
164 | - cache_msg.result = msg->result; | ||
165 | - cache_msg.access = msg->access; | ||
166 | - cache_msg.fd = msg->fd; | ||
167 | -#ifdef NVALIDATE | ||
168 | - if (!pdb_find_file_exact(msg)) { | ||
169 | - if (cache_msg.pathlen != msg->pathlen || | ||
170 | - cache_msg.dev != msg->dev || | ||
171 | - cache_msg.ino != msg->ino || | ||
172 | - cache_msg.uid != msg->uid || | ||
173 | - cache_msg.gid != msg->gid || | ||
174 | - cache_msg.mode != msg->mode || | ||
175 | - cache_msg.rdev != msg->rdev || | ||
176 | - cache_msg.nlink != msg->nlink || | ||
177 | - cache_msg.deleting != msg->deleting) { | ||
178 | - pseudo_diag("Cache mismatch [%s]: Database differs from cache\n" | ||
179 | - " cache vs result:\n" | ||
180 | - " dev (%llu,%llu) ino (%llu,%llu)\n" | ||
181 | - " uid (%d,%d) gid (%d,%d) mode (0%o,0%o)\n" | ||
182 | - " rdev (%llu,%llu) nlink (%d,%d) deleting (%d,%d)\n", | ||
183 | - msg->pathlen ? msg->path : "no path", | ||
184 | - (unsigned long long) cache_msg.dev, (unsigned long long) msg->dev, | ||
185 | - (unsigned long long) cache_msg.ino, (unsigned long long) msg->ino, | ||
186 | - (unsigned long long) cache_msg.uid, (unsigned int) msg->uid, | ||
187 | - (unsigned long long) cache_msg.gid, (unsigned int) msg->gid, | ||
188 | - cache_msg.mode, msg->mode, | ||
189 | - (unsigned long long) cache_msg.rdev, (unsigned int) msg->rdev, | ||
190 | - cache_msg.nlink, msg->nlink, | ||
191 | - cache_msg.deleting, msg->deleting); | ||
192 | - } | ||
193 | - } else { | ||
194 | - pseudo_diag("Cache mismatch [%s]: Not found in DB\n", | ||
195 | - msg->pathlen ? msg->path : "no path"); | ||
196 | - } | ||
197 | -#endif | ||
198 | - found_ino = 1; | ||
199 | - path_by_ino = cache_path; | ||
200 | - } else if (!pdb_find_file_dev(&by_ino)) { | ||
201 | + if (!pdb_find_file_dev(&by_ino)) { | ||
202 | found_ino = 1; | ||
203 | path_by_ino = pdb_get_file_path(&by_ino); | ||
204 | } | ||
205 | @@ -1016,28 +873,6 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) { | ||
206 | break; | ||
207 | } | ||
208 | |||
209 | - /* Cache previous values... */ | ||
210 | - if (msg->op != OP_MAY_UNLINK && | ||
211 | - msg->op != OP_DID_UNLINK && | ||
212 | - msg->op != OP_CANCEL_UNLINK && | ||
213 | - msg->op != OP_UNLINK) { | ||
214 | - | ||
215 | - cache_msg = *msg; | ||
216 | - | ||
217 | - free(cache_path); | ||
218 | - | ||
219 | - if (path_by_ino) | ||
220 | - cache_path = strdup(path_by_ino); | ||
221 | - else | ||
222 | - cache_path = strdup(msg->path); | ||
223 | - } else { | ||
224 | - cache_msg.pathlen = 0; | ||
225 | - cache_msg.dev = 0; | ||
226 | - cache_msg.ino = 0; | ||
227 | - free(cache_path); | ||
228 | - cache_path = NULL; | ||
229 | - } | ||
230 | - | ||
231 | /* in the case of an exact match, we just used the pointer | ||
232 | * rather than allocating space | ||
233 | */ | ||
234 | -- | ||
235 | cgit v0.8.3.3-89-gbf82 | ||
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb index 55055fa0d3..f9b10f0d36 100644 --- a/meta/recipes-devtools/pseudo/pseudo_git.bb +++ b/meta/recipes-devtools/pseudo/pseudo_git.bb | |||
@@ -6,10 +6,11 @@ LICENSE = "LGPL2.1" | |||
6 | DEPENDS = "sqlite3" | 6 | DEPENDS = "sqlite3" |
7 | 7 | ||
8 | PV = "0.0+git${SRCPV}" | 8 | PV = "0.0+git${SRCPV}" |
9 | PR = "r15" | 9 | PR = "r16" |
10 | 10 | ||
11 | SRC_URI = "git://github.com/wrpseudo/pseudo.git;protocol=git \ | 11 | SRC_URI = "git://github.com/wrpseudo/pseudo.git;protocol=git \ |
12 | file://static_sqlite.patch" | 12 | file://static_sqlite.patch \ |
13 | file://895fa7e359e8026a608fba052c2994e42901e45f.patch" | ||
13 | 14 | ||
14 | FILES_${PN} = "${libdir}/libpseudo.so ${bindir}/* ${localstatedir}/pseudo" | 15 | FILES_${PN} = "${libdir}/libpseudo.so ${bindir}/* ${localstatedir}/pseudo" |
15 | PROVIDES += "virtual/fakeroot" | 16 | PROVIDES += "virtual/fakeroot" |