On Fri, 2008-07-25 at 09:04 -0400, Jamie McCracken wrote: > > > > With this patch you can update qdbm in src/qdbm for all branches and > > TRUNK. > > > > We are not planning to do this just yet, but I had done it for some > > tests anyway, and perhaps in near future it might be useful? > that patch removes all my optimizations that I applied to qdbm! > > IE use of fdatasync instead of fsync and readahead optimisations
Are these optimizations secured against two processes each having their own depot instance, but a shared mmap()? I can imagine the fsync() stuff being involved with getting this right. Because I noticed that, in tracker's depot.c, depot->bucket[x] = y is only ever done during dpput(), which is a function that is never called by a consumer of the depot file that only ever reads. With two threads that's fine because the same memory for depot and depot->bucket is used. The content of depot->bucket[x] is read by dpget() to see if there's something in the bucket. In my tests the content of each and every bucket is always 0 for a reading process, but filled up for a writing process (if they are different processes). With two processes there are two allocations for each. Thus I don't see how this can work with two processes then :-\ Anyway, we plan to on-flush let the indexer tell trackerd to unload the depot file at the next read. > also adds all the crap that we dont use (my version just included the > minimal source we needed) -- Philip Van Hoof, freelance software developer home: me at pvanhoof dot be gnome: pvanhoof at gnome dot org http://pvanhoof.be/blog http://codeminded.be _______________________________________________ tracker-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/tracker-list
