Hi Phil,
The trove layer caches the position -> name mapping for positions it
returns back to the client on a readdir. The problem is probably
related to caching those entries, where the readdir for the rm is
iterating over the directory, and so inserting position -> name entries
into the cache, and then ls is coming along and replacing those entries
with its own, where the position is the same but the name is further
down in the directory (because rm has removed some of them). That's
just a guess though. You could see if disabling that position cache
helps fix the problem, disabling it will cause the berkeley db iterate
to walk through all the entries up to the position though, so its going
to be much slower. The position cache is in dbpf-keyval-pcache.c.
Probably the right long term solution is to return the name as the
position, instead of an int.
I just replicated this using just 1000 files (each about 200 bytes) in a
single directory, again with one client doing an rm -rf and another
client doing an ls in the same directory.
Unfortunately, it doesn't look like disabling the pcache made any
difference. I first tried disabling it by adding a "return 0" at the
top of the PINT_dbpf_keyval_pcache_insert() function. I also tried
modifying the dbpf_keyval_iterate_skip_to_position() function to not
call PINT_dbpf_keyval_pcache_lookup().
Is there anything else I could do to make sure the pcache isn't being
used, or does this indicate that the problem is elsewhere?
-Phil
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers